Página siguiente Página anterior Índice general

6. Problemas con tarjetas no soportadas

6.1 Configuración de tarjetas no reconocidas

Asumiendo que su tarjeta está soportada por algún controlador existente, todo lo que se necesita hacer es añadir una entrada a /etc/pcmcia/config para decirle a cardmgr cómo identificar la tarjeta, y qué controlador(es) necesitan ser asociados a esta tarjeta. Consulte la página del manual de pcmcia para más información acerca del formato del archivo de configuración. Si inserta una tarjeta desconocida, cardmgr normalmente almacenará parte de información de la identificación en el registro del sistema, lo cual puede usarse para elaborar la entrada de configuración. Esta información puede mostrarse también con el comando cardctl ident.

He aquí un ejemplo de cómo avisa cardmgr de una tarjeta no soportada en /usr/adm/messages

  cardmgr[460]: unsupported card in socket 1
  cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
  cardmgr[460]: manfid: 0x0101, 0x1234  function: 2 (serial)

La entrada correspondiente en /etc/pcmcia/config podría ser:

       card "Megahertz XJ2288 V.34 Fax Modem"
         version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
         bind "serial_cs"

o usar los códigos de ID más compactos del producto:

       card "Megahertz XJ2288 V.34 Fax Modem"
         manfid 0x0101, 0x1234
         bind "serial_cs"

Puede usar * para comparar cadenas que no necesiten concordar exactamente, como los números de versión. Cuando haga nuevas entradas en la configuración, hay que ser cuidadosos para copiar las cadenas exactamente, preservando mayúsculas y minúsculas, y espacios en blanco. Asegúrese también de que la entrada en la configuración tiene el mísmo número de cadenas que aparecen en el archivo de registro.

Tenga en cuenta que puede especificar cualquier controlador para una tarjeta, pero si sólo está dando palos de ciego, no hay mucha razón para esperar que esto resulte productivo. Puede tener suerte y encontrar que su tarjeta está soportada por un controlador existente. Sin embargo, el resultado más probable es que el controlador no funcione, y puede tener efectos laterales desafortunados como el congelamiento de su sistema. A diferencia de la mayoría de los controladores de dispositivos, los cuales comprueban la pressencia de la tarjeta apropiada, el sondeo para un dispositivo PCMCIA se hace con cardmgr, y el controlador por sí mismo puede no verificar antes de intentar comunicarse con el dispositivo.

Después de editar /etc/pcmcia/config, envíe una señal a cardmgr para recargar el archivo con:

       kill -HUP `cat /var/run/cardmgr.pid`

Si configura una entrada para una tarjeta nueva, por favor, envíeme una copia para que pueda incluirla en el archivo de configuración estándar.

6.2 Soporte para una tarjeta ethernet compatible con NE2000

Antes de empezar: este procedimiento sólo funcionará para tarjetas ethernet simples. Las tarjetas multifunción (por ejemplo, las tarjetas «combo» ethernet/módem) tienen una capa extra de complejidad en relación a cómo están integradas las dos funciones, y generalmente no pueden soportarse sin obtener algo de información de la configuración provista por el fabricante de la tarjeta. Usar el procedimiento siguiente con una tarjeta multifunción no resultará productivo en absoluto.

Primero, compruebe si la tarjeta es reconocida por cardmgr. Algunas tarjetas que no están listadas en SUPPORTED.CARDS son realmente versiones OEM de tarjetas que sí están soportadas. Si encuentra una tarjeta como ésta, hágamelo saber para que pueda añadirla a la lista.

Si su tarjeta no es reconocida, siga las instrucciones en la sección Configuración de tarjetas no reconocidas para crear una entrada en la configuración para su tarjeta, y relacionar la tarjeta con el controlador pcnet_cs. Reinicie cardmgr para utilizar el archivo de configuración actualizado.

Si el controlador pcnet_cs dice que no puede determinar la dirección ethernet del hardware de la tarjeta, edite su nueva entrada en la configuración para relacionar la tarjeta con el controlador de memoria memory_cs. Reinicie cardmgr para utilizar el nuevo archivo de configuración actualizado. Necesitará conocer la dirección ethernet del hardware de la tarjeta. Esta dirección es una serie de seis números hexadecimales de dos dígitos, impresos normalmente en la misma tarjeta. Si no están impresos en la tarjeta, puede usar un controlador de DOS para mostrar la dirección. En cualquier caso, una vez que la sepa, ejecute:

       dd if=/dev/mem0a count=20 | od -Ax -t x1

y busque el volcado de información de su tarjeta. Sólo los bytes pares están definidos, así que ignore los bytes impares del volcado. Anote el desplazamiento hexadecimal del primer byte de la dirección. Ahora, edite clients/pcnet_cs.c y busque la estructura hw_info. Necesitará crear una nueva entrada para la tarjeta. El primer campo es el desplazamiento de memoria. Los siguientes tres campos son los primeros tres bytes de la dirección de hardware. El campo final contiene algunos indicadores de características especiales de la tarjeta; para empezar, pruebe estableciéndola a 0.

Después de editar pcnet_cs.c, compile e instale el nuevo módulo. Edite nuevamente /etc/pcmcia/config/, y cambie la relación de memory_cs con pcnet_cs. Siga las instrucciones para recargar el archivo de configuración, y habrá terminado. Por favor mándeme copias de sus nuevas entradas de configuración a hw_info.

Si no puede encontrar la dirección hardware de su tarjeta en el vaciado hexadecimal, como un último recurso, puede «forzar» la dirección cuando se inicializa el módulo pcnet_cs. Edite /etc/pcmcia/config.opts y añada una opción hw_addr, como esta:

       module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"

Por supuesto, sustituya su propia dirección de hardware de la tarjeta en el punto apropiado. Tenga en cuenta que si ha tenido que hacer esto, es muy difícil que su tarjeta sea genuinamente compatible con NE2000. De hecho, no estoy seguro de la existencia de tarjetas que no sean manejadas por alguno de los dos primeros métodos.

6.3 Tarjetas PCMCIA para unidades de disquete

La interfaz para disquete PCMCIA que se usa en los Compaq Aero y otros equipos todavía no está soportada por este paquete. La dificultad para soportar el disquete Aero radica en que el Aero parece usar un controlador PCMCIA personalizado para soportar DMA en el disquete. Sin saber exáctamente cómo se hace esto, no hay forma de implementar soporte bajo Linux.

Si la tarjeta del adaptador de disquete está presente cuando se inicia, la BIOS configurará la tarjeta, y Linux la identificará como una unidad de disquete normal. Cuando se cargan los controladores PCMCIA de Linux, notarán que la tarjeta ya está configurada y conectada al controlador de Linux, y este socket se dejará solo. Así que, la unidad puede usarse si está presente al momento de iniciar, pero la tarjeta no se puede intercambiar en caliente.

6.4 ¿Qué hay de las tarjetas Xircom?

El paquete actual PCMCIA incluye un controlador para las tarjetas ethernet y ethernet/modem de Xircom, gracias al trabajo de Werner Koch. He dispuesto un foro especialmente para la discusión del desarrollo del controlador Xircom, en http://hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html.

Durante mucho tiempo, las tarjetas Xircom no fueron soportadas porque Xircom tenía como política de la compañía no divulgar información técnica acerca de sus tarjetas. Sin embargo, han modificado sus reglas, y ahora, distribuyen información de los controladores...


Página siguiente Página anterior Índice general