14.5. Problemi

Finora utilizzare PCMCIA su alcuni notebook o con alcune schede causava dei problemi. La maggior parte delle difficoltà si lasciano risolvere facilmente, premesso che si affronta il problema in modo sistematico. Innanzitutto si deve stabilire se il problema è da ricondurre alla scheda, o se il problema è causato dal sistema di base PCMCIA. Per tale ragione il computer va in ogni caso avviato in un primo momento senza scheda inserita. Solo se il sistema di base funziona perfettamente, va inserita la scheda. Tutti i messaggi vengono protocollati in /var/log/messages. Per questo il file va osservato con tail -f /var/log/messages durante dei testi. Così le possibili cause di errore si lasciano ridurre a due.

14.5.1. Il sistema di base PCMCIA non funziona

Se il sistema si ferma al messaggio PCMCIA: Starting services durante il processo di boot, o se succedono altre cose strane, immettendo NOPCMCIA=yes al prompt di boot si evita l'avvio di PCMCIA al prossimo boot. Per circoscrivere maggiormente l'errore, caricate a mano l'uno dopo l'altro i tre moduli di base del vostro sistema PCMCIA.

Per caricare manualmente di moduli PCMCIA invocate per il PCMCIA esterno come utente root: i comandi modprobe  pcmcia_core e modprobe yenta_socket. Nel caso di PCMCIA kernel come secondo comando eseguite e modprobe ds. In rarissimi casi si deve utilizzare al posto di yenta_scoket uno dei moduli tcic, i82365 o i82092. I moduli critici sono i primi due ad essere caricati.

Se l'errore si verifica durante il caricamento di pcmcia_core, potete trovare utili indicazioni nella pagina di manuale su pcmcia_core. Le opzioni ivi descritte possono essere testate con il comando modprobe. Come esempio verifichiamo settori I/O liberi. A volte possono verificarsi delle difficoltà se la verifica va a toccare altri componenti hardware. Per evitare delle difficoltà utilizzate l'opzione probe_io=0

    modprobe  pcmcia_core probe_io=0

Se l'opzione selezionata conduce al successo, nel file /etc/sysconfig/pcmcia la variabile PCMCIA_CORE_OPTS viene impostata sul valore probe_io=0. Se vanno indicate diverse opzioni bisogna separarle da uno spazio:

    PCMCIA_CORE_OPTS="probe_io=0 setup_delay=10"
     

Se durante il caricamento del modulo yenta_socket si verificano degli errori, ciò è spesso dovuto a problemi di natura fondamentale del tipo allocazione delle risorse tramite ACPI.

Inoltre i file /etc/pcmcia/config e /etc/pcmcia/config.opts vengono elaborati dal gestore delle schede. Le impostazioni ivi fatte sono rilevanti in parte all'avvio di cardmgr ed in parte per il caricamento dei moduli driver per schede PC.

In /etc/pcmcia/config.opts potete includere o escludere anche IRQ, porte IO e aree della memoria. A volte l'accesso ad un settore I/O errato comporta il crollo del sistema. In questi casi si consiglia di limitare parzialmente questi settori.

14.5.2. La scheda PCMCIA non funziona (bene)

Qui esistono in linea di massima tre possibilità: la scheda non viene riconosciuta, il driver non può essere caricato oppure l'interfaccia messa a disposizione dal driver è stata configurata in modo errato. Bisogna inoltre considerare se la scheda viene amministrata dal gestore di schede o dall'hotplug. Il gestore delle schede si occupa di schede PC e l'hotplug di schede CardBUS.

Nessuna reazione all'inserimento della scheda

Se dopo l'inserimento il sistema non sembra reagire ed anche un cardctl insert eseguito manualmente non porta all'esito desiderato, allora può darsi che l'allocazione degli interrup ai dispositivi PCI non è corretta. Spesso anche altri dispositivi PCI come la scheda di rete non funzionano correttamente. In questi casi, provate con il parametro di boot pci=noacpi o altri parametri PCI o ACPI

La scheda non viene rilevata

Se la scheda non viene rilevata, in /var/log/messages vi è il messaggio unsupported Card in Slot x che vuol dire semplicemente che il gestore delle schede non riesce ad attribuire alcun driver alla scheda. Per poter attribuire un driver sono richiesti i file /etc/pcmcia/config o /etc/pcmcia/*.conf. Questi file sono per così dire la banca dati di driver che si lascia espandere semplicemente prendendo come modello le registrazioni già presenti. Con il comando cardctl ident potete visualizzare l'id della scheda. Ulteriori informazioni nel PCMCIA-HOWTO (sezione 6) e nella pagina di manuale di pcmcia. Dopo aver modificato /etc/pcmcia/config o /etc/pcmcia/*.conf bisogna ricaricare l'allocazione dei driver; con un semplice rcpcmcia reload.

Il driver non viene caricato

Una possibile causa è che nella banca dati dei driver è memorizzata una allocazione errata che per esempio può essere dovuto al fatto che un fornitore abbia integrato in un modello di scheda apparentemente non modificato un altro chip. A volte vi sono dei driver alternativi che in certi modelli funzionano meglio (o addirittura iniziano a funzionare) che il driver di default. In questi casi servono delle precise informazioni sulla scheda. Anche in questi casi delle mailing list oppure il nostro Advanced Support Service possono essere d'aiuto.

Nel caso di schede cardbus va inserito HOTPLUG_DEBUG=yes nel file /etc/sysconfig/hotplug. In seguito si avranno nel file di log del sistema dei messaggio che permettono di evincere se il driver è stato caricato (correttamente).

Un'altra causa è un conflitto di risorse. Nella maggioranza delle schede PCMCIA non è rilevante con quale IRQ, porta IO oppure area di memoria vengano utilizzate, ma vi sono anche delle eccezioni. Allora dovreste testare le schede singolarmente ed eventualmente spegnere temporaneamente anche altri componenti di sistema come scheda audio, IrDA, modem o stampante. L'allocazione delle risorse del sistema può essere visualizzata con lsdev (da eseguire come utente root). É del tutto normale che diversi dispositivi PCI utilizzano lo stesso IRQ.

Un modo per risolvere il problema sarebbe quello di usare una opzione adatta per il modulo del driver della scheda che potrete stabilire con modinfodriver . Per la maggior parte dei moduli vi è anche una pagina di manuale. rpm -ql pcmcia | grep man elenca tutte le pagine di manuale contenute nel pacchetto pcmcia. Per testare le opzioni potete scaricare i driver di schede anche manualmente.

Una volta trovata la soluzione in /etc/pcmcia/config.opts può essere consentito o proibito l'utilizzo di determinate risorse. Anche le opzioni per driver di schede trovano qui posto. Se p.es. il modulo pcnet_cs deve essere utilizzato esclusivamente con l'IRQ 5, dovete immettere:

module pcnet_cs opts irq_list=5
L'interfaccia non è stata configurata correttamente

In questo caso si consiglia di controllare ancora una volta la configurazione dell'interfaccia con getcfg per escludere rari errori di configurazione. A tal fine nel /etc/sysconfig/network/config la variabile DEBUG ed in /etc/sysconfig/hotplug la variabile HOTPLUG_DEBUG va impostata su yes. Con altre schede, o se questo non risolve il problema, vi è inoltre la possibilità di integrare nello script richiamato dal gestore di schede (si veda /var/log/messages) la riga set -x. In tal modo ogni comando dello script viene protocollato nel file di log del sistema. Una volta identificato il punto critico nello script, i comandi relativi possono essere immessi e testati anche in un terminale.