14.5. Posibles problemas y sus soluciones

La mayoría de problemas relacionados con PCMCIA en algunos portátiles o con determinadas tarjetas puede solucionarse sin demasiado esfuerzo siempre que se proceda sistemáticamente. En primer lugar hay que averiguar si el problema se encuentra en una tarjeta o en el sistema base PCMCIA. Por este motivo, en primer lugar debe iniciarse el ordenador sin haber insertado ninguna tarjeta. La tarjeta se insertará una vez que sea obvio que el sistema base funciona correctamente. Todos los mensajes del sistema se registran en /var/log/messages, por lo que se recomienda observar este archivo durante las pruebas con tail -f /var/log/messages. De este modo el problema puede reducirse a uno de los dos casos siguientes:

14.5.1. El sistema base PCMCIA no funciona

Si el sistema se detiene durante el arranque con el mensaje PCMCIA: Starting services o si se producen otras incidencias extrañas, se debe introducir NOPCMCIA=yes en el prompt de arranque para desactivar el servicio PCMCIA en el próximo arranque. Para reducir aún más la causa del error, cargue los tres módulos base del sistema PCMCIA utilizado manualmente y de forma secuencial.

Ejecute como usuario root los comandos modprobe pcmcia_core, modprobe yenta_socket y modprobe ds para cargar los módulos PCMCIA manualmente. En algunos casos excepcionales se utilizará uno de los módulos tcic, i82365 o i82092 en lugar de yenta_socket. Los módulos críticos son los dos primeros.

La página man pcmcia_core(4) le será de utilidad si el error aparece al cargar pcmcia_core. Las opciones que se mencionan en dicha página se pueden probar primero con el comando modprobe. Por ejemplo, es posible comprobar las secciones E/S libres. Esta prueba puede ocasionar problemas en algunos casos si se interfiere con otros componentes de hardware. Esto se evita con la opción probe_io=0:

modprobe  pcmcia_core probe_io=0

Si la opción probada tiene éxito, se asigna el valor probe_io=0 a la variable PCMCIA_CORE_OPTS en el archivo /etc/sysconfig/pcmcia. Cuando se utilizan múltiples opciones, se separan con espacios:

PCMCIA_CORE_OPTS="probe_io=0 setup_delay=10"

La aparición de errores al cargar el módulo yenta_socket es un síntoma de problemas más generales como puede ser la distribución de recursos por parte de ACPI.

El administrador de tarjetas analiza los archivos /etc/pcmcia/config y /etc/pcmcia/config.opts. Una parte de las opciones de configuración allí recogidas es relevante para el inicio de cardmgr y la otra para la carga de módulos de controladores para las tarjetas PC. En el archivo /etc/pcmcia/config.opts también es posible incluir o excluir IRQs, puertos E/S y secciones de memoria. En algunos casos excepcionales, el acceso a una sección E/S incorrecta provoca un fallo total del sistema. Si esto ocurre, conviene realizar pruebas aislando sucesivamente estas secciones.

14.5.2. La tarjeta PCMCIA no funciona correctamente

Fundamentalmente, hay tres razones por las que una tarjeta PCMCIA puede no funcionar correctamente: no se reconoce la tarjeta, no se puede cargar el controlador o la interfaz ofrecida por el controlador está mal configurada. Debe tenerse en cuenta si la tarjeta es gestionada por el administrador de tarjetas o por el hotplug. Como ya hemos visto, el administrador de tarjetas se ocupa de las tarjetas PC y hotplug de las tarjetas CardBus.

No se produce ninguna reacción al insertar la tarjeta

Si el sistema no reacciona cuando se introduce una tarjeta y la ejecución del comando cardctl insert tampoco produce ningún resultado, es un posible síntoma de que la asignación de interrupciones a dispositivos PCI es incorrecta. A veces el problema también reside en otros dispositivos PCI como las tarjetas de red. En este caso puede utilizarse el parámetro de arranque pci=noacpi u otros parámetros PCI o ACPI.

La tarjeta no se detecta

Si no se reconoce la tarjeta, el mensaje unsupported Card in Slot x aparece en /var/log/messages. Este mensaje sólo indica que el administrador de tarjetas no es capaz de asignar un controlador a la tarjeta, ya que los archivos /etc/pcmcia/config o /etc/pcmcia/*.conf son necesarios para esta asignación. Estos archivos son, por así decirlo, una base de datos de controladores que se puede ampliar fácilmente usando entradas existentes como plantilla para las nuevas. Para identificar la tarjeta, puede emplear el comando cardctl ident. Puede obtener más información sobre este tema en el HOWTO de PCMCIA (sección 6) y en la página del manual pcmcia(5). Después de modificar /etc/pcmcia/config o /etc/pcmcia/*.conf, debe cargar de nuevo la asignación de controladores mediante rcpcmcia reload.

El controlador no se carga

Una de las causas es que exista una asignación incorrecta en la base de datos de controladores. Esto puede ocurrir por ejemplo si el fabricante ha insertado un chip distinto en un modelo de tarjeta que no ha cambiado externamente. A veces existen controladores opcionales que funcionan mejor (o funcionan solamente) con modelos distintos al controlador especificado. En estos casos se necesita información exacta sobre la tarjeta. También sirve de ayuda preguntar en listas de correo o a nuestro servicio de soporte avanzado.

En el caso de tarjetas CardBus es necesario añadir la entrada HOTPLUG_DEBUG=yes al archivo /etc/sysconfig/hotplug. De este modo el sistema produce mensajes en el archivo de registro que indican si el controlador ha sido cargado correctamente.

Otra causa puede ser un conflicto de recursos. Aunque para la mayoría de las tarjetas PCMCIA no importa qué IRQ, puerto E/S o rango de memoria se utiliza, existen algunas excepciones. Por eso siempre es necesario probar primero una tarjeta y en ocasiones desconectar además temporalmente otros componentes del sistema como tarjetas de sonido, IrDA, modems o impresoras. Se puede ver la distribución de recursos del sistema con el comando lsdev ejecutado como usuario root. (Es normal que varios dispositivos PCI utilicen el mismo IRQ).

Una posible solución consiste en emplear la opción adecuada para el módulo de controladores de tarjeta. Dicha opción se puede averiguar con modinfocontrolador. Para la mayoría de los módulos existe una página man. El comando rpm -ql pcmcia | grep man muestra una lista de todas las páginas man incluidas en el paquete pcmcia. Para probar las opciones también es posible descargar los controladores de tarjetas manualmente.

Una vez que el problema esté resuelto, , el uso de un recurso determinado puede permitirse o prohibirse de manera generalizada en el archivo /etc/pcmcia/config.opts. Las opciones para los controladores de tarjetas también pueden introducirse en este archivo. Si, por ejemplo, el módulo pcnet_cs sólo debe utilizarse con IRQ 5, se debe realizar la siguiente entrada:

module pcnet_cs opts irq_list=5
Interfaz mal configurada

En este caso se recomienda comprobar concienzudamente la configuración de la interfaz y el nombre de la configuración con getcfg. Asimismo es necesario asignar el valor yes a las variables DEBUG en /etc/sysconfig/network/config y HOTPLUG_DEBUG en /etc/sysconfig/hotplug. Con otro tipo de tarjetas o si esto no funciona, existe la posibilidad de incluir una línea set -x en el script activado por hotplug o el administrador de tarjetas (ver /var/log/messages). De esta forma, cada uno de los comandos del script se recogerán en el registro del sistema. Si encuentra el pasaje problemático en un script, puede introducir y probar los comandos correspondientes en una terminal.


SUSE LINUX Manual de administración 9.3