Mi tarjeta PCMCIA USB 2.0 Conceptronic CSP480C2 no funciona con algunos dispositivos

Googleando un poco se llega facilmente a la conclusión de que la tarjeta PCMCIA (o sea, PCCard) Conceptronic CSP480C2 funciona perfectamente en Linux. Así está recogido por ejemplo en la Web de TuxMobil, pero aparte de eso no te dicen mucho más. En otros foros, encuentras que sí, que se supone que funciona pero que da algunos problemas variados.

Todo lo que voy a contar, vale también para la tarjeta PCMCIA Inves USB 2.0 que proporciona dos puertos, y que es reconocida por lspci como una NEC Corporation (ENE Technology Inc CB1410 Cardbus Controller)

Yo me compré una tarjeta de esas y, efectivamente, funcionaba pero me encontré con unos cuantos problemillas que me costó un poco solucionar. Concretamente, solo conseguía hacerla pillar un lápiz USB LG de 1Gb que usaba USB 2.0, pero ningún dispositivo USB 1.1 era detectado (ni siquiera un lápiz USB MemoryBird de 64 Mb que se supone debería funcionar con todo). Curiosamente, tampoco conseguí hacer que vaya un disco duro externo LaCie Mobile de 80 Gb que es también USB 2.0. Una cosa muy rara, eso de que solo funcione uno de los aparatos y ninguno más.

Bien, lo primero de todo es usar un Kernel recientito. Yo estoy con un 2.6.17 bajo Gentoo, pero seguramente servirá cualquier kernel de la serie 2.6. Si usas gentoo, NO debes instalar pcmcia-cs. Ese paquete está creado kernels 2.4.x, así que no debería usarse con ningún kernel 2.6. En lugar de eso, asegúrate de que estás usando hotplug y udev.

Este era el punto de partida cuando compré la tarjeta. La salida de dmesg al enchufarla decía:

(blablabla y aquí insertamos la tarjeta pcmcia)
pccard: CardBus card inserted into slot 0
yenta EnE: chaning testregister 0xC9, 00 -> 00
PCI: Enabling device 0000:03:00.2 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.2[C] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
ehci_hcd 0000:03:00.2: EHCI Host Controller
ehci_hcd 0000:03:00.2: reset hcs_params 0x2395 dbg=0 cc=2 pcc=3 ports=5
ehci_hcd 0000:03:00.2: reset portroute 1 0 1 0 0
ehci_hcd 0000:03:00.2: reset hcc_params e806 thresh 0 uframes 256/512/1024 park
ehci_hcd 0000:03:00.2: park 0
ehci_hcd 0000:03:00.2: MWI active
ehci_hcd 0000:03:00.2: ...powerdown ports...
drivers/usb/core/inode.c: creating file '005'
ehci_hcd 0000:03:00.2: new USB bus registered, assigned bus number 5
ehci_hcd 0000:03:00.2: irq 11, io mem 0xd2002000
ehci_hcd 0000:03:00.2: reset command 080b02 park=3 ithresh=8 period=1024 Reset HALT
ehci_hcd 0000:03:00.2: init command 010009 (park)=0 ithresh=1 period=256 RUN
ehci_hcd 0000:03:00.2: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb5: default language 0x0409
usb usb5: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb5: Product: EHCI Host Controller
usb usb5: Manufacturer: Linux 2.6.15-kal ehci_hcd
usb usb5: SerialNumber: 0000:03:00.2
usb usb5: hotplug
usb usb5: adding 5-0:1.0 (config #1, interface 0)
usb 5-0:1.0: hotplug
hub 5-0:1.0: usb_probe_interface
hub 5-0:1.0: usb_probe_interface - got id
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 5 ports detected
hub 5-0:1.0: standalone hub
hub 5-0:1.0: individual port power switching
hub 5-0:1.0: individual port over-current protection
hub 5-0:1.0: Single TT
hub 5-0:1.0: TT requires at most 8 FS bit times (666 ns)
hub 5-0:1.0: power on to power good time: 20ms
hub 5-0:1.0: local power source is good
hub 5-0:1.0: enabling power on all ports
hub 5-0:1.0: state 5 ports 5 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'

Al enfhufar el MemoryBird que no funcionaba, la salida de dmesg era idéntica, era como si no hubiera enchufado nada.

Y la salida de lspci al meter la tarjeta decía:

00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
00:1f.5 Multimedia audio: Intel Corporation 82801DB/DBL/DBM AC'97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM AC'97 Modem Controller (rev 03)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 Lf [FireGL 9000] (rev 01)
02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
02:03.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller
03:00.0 USB Controller: NEC Corporation USB (rev 43)
03:00.1 USB Controller: NEC Corporation USB (rev 43)
03:00.2 USB Controller: NEC Corporation USB 2.0 (rev 04)

Da la impresión de que la tarjeta pcmcia ha sido reconocida y que proporciona dos puertos USB 2.0, pero luego resulta que solo el lápiz USB 2.0 LG de 1Gb me funcionaba.

El problema es que si sigues las instrucciones habituales, tendrás activado el soporte EHCI y UHCI para USB, porque la mayoría de los USB actuales son UHCI, como ocurre por ejemplo en el portátil Highscreen CL50. Pero ahí es donde está el problema, porque resulta que la tarjeta PCMCIA usa el estándar OHCI, así que también tienes que activar el soporte de OHCI en tu kernel.

Vale, vamos a modificar tu kernel. ha de estar cofigurado para usar las Cardbus de 32 bits como ésta. Pero aparte de eso, tendrás que entrar en el apartado de USB y activar EHCI (para soporte de USB 2.0), UHCI (para soporte de los USB del portátil), y OHCI (para soporte de los USB de la tarjeta PCMCIA). Tal que así:

Haz un "make menuconfig" y elige:

Bus Options (PCI, PCMCIA, EISA, MCA, ISA) -->
  PCCARD (PCMCIA/CardBus) suport -->
	 <M> PCCard (PCMCIA/Cardbus) support
	 [ ]	Enable PCCARD debugging
	 <M>	16-bit PCMCIA support
	 [*]		Load CIS updates from userspace
	 [ ]		PCMCIA control ioctl
	 ---	32-bit Cardbus support
	 ---	PC-card bridges
	 <M>	CardBus yenta-compatible bridge support
	 <M>	Cirrus PD6729 compatible bridge support
	 <M>	i82092 compatible bridge support
	 <M>	i82365 compatible bridge support
	 <M>	Databook TCIC host bridge support
Device Drivers -->
  USB Support -->
	 <M>	Support for Host-side USB
	 [ ]		USB verbose debug messages
	 ---		Miscellaneous USB options
	 [*]		USB device filesystem
	 [*]		Enforce USB bandwidth allocation
	 [*]		Dynamic USB minor allocation
	 [ ]		USB selective suspend/resume and wakeup
	 ---		USB Host Controller Drivers
	 <*>		EHCI HCD (USB 2.0) support
	 [ ]			Full speed ISO transactions
	 [ ]			Root Hub Transaction Translators
	 < >		ISP116X HCD support
	 <M>		OHCI HCD support
	 <*>		UHCI HCD (most Intel and VIA) support
	 < >		SL811HS HCD support
	 ---		USB Device Class drivers
	 < >		USB Modem (CDC ACM) support
	 < >		USB Printer support
	 ---	NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
	 ---	may also be needed; see USB_STORAGE Help for more information
	 <*>	USB Mass Storage support
	 [ ]		USB Mass Storage verbose debug
	 [*]		Datafab Compact Flash Reader support
	 [ ]		Freecom USB/ATAPI Bridge support
	 [ ]		ISD-200 USB/ATA Bridge support
	 [ ]		Microtech/ZiO! CompactFlash/SmartMedia support
	 [ ]		USBAT/USBAT02-based storage support
	 [ ]		SanDisk SDDR-09 (and other SmartMedia) support
	 [ ]		SanDisk SDDR-55 SmartMedia support
	 [ ]		Lexar Jumpshot Compact Flash Reader
	 [*]		Olympus MAUSB-10/Fuji DPC-R1 support
	 [ ]	The shared table of common (or usual) storage devices
	 ---	USB Input Devices
	 <*>	USB Human Interface Device (full HID) support
	 [*]		HID input layer support
	 [ ]			Enable support for iBook/PowerBook special keys
	 [ ]			Force feedback support (EXPERIMENTAL)
	 [*]		/dev/hiddev raw HID device support 

(Y el resto según tu hardware, generalmente todo desactivado)

Ahora recompila y rebota la máquina para usar el nuevo kernel. Puede que tengas que compilar (o emerger) algunos módulos extra para dejar las cosas listas.

Ahora, al insertar la PCCard deberíamos ver la salida dmesg:

(blablabla y aquí metemos la tarjeta pcmcia)
pccard: CardBus card inserted into slot 0
yenta EnE: chaning testregister 0xC9, 00 -> 00
PCI: Enabling device 0000:03:00.0 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
PCI: Setting latency timer of device 0000:03:00.0 to 64
ohci_hcd 0000:03:00.0: OHCI Host Controller
drivers/usb/core/inode.c: creating file '005'
ohci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 5
ohci_hcd 0000:03:00.0: created debug files
ohci_hcd 0000:03:00.0: irq 11, io mem 0xd2000000
ohci_hcd 0000:03:00.0: resetting from state 'reset', control = 0x0
ohci_hcd 0000:03:00.0: OHCI controller state
ohci_hcd 0000:03:00.0: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:03:00.0: control 0x083 HCFS=operational CBSR=3
ohci_hcd 0000:03:00.0: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:03:00.0: intrstatus 0x00000004 SF
ohci_hcd 0000:03:00.0: intrenable 0x8000001a MIE UE RD WDH
ohci_hcd 0000:03:00.0: hcca frame #0025
ohci_hcd 0000:03:00.0: roothub.a 0f000203 POTPGT=15 NPS NDP=3(3)
ohci_hcd 0000:03:00.0: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:03:00.0: roothub.status 00008000 DRWE
ohci_hcd 0000:03:00.0: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:03:00.0: roothub.portstatus [1] 0x00000100 PPS
ohci_hcd 0000:03:00.0: roothub.portstatus [2] 0x00000100 PPS
usb usb5: default language 0x0409
usb usb5: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb5: Product: OHCI Host Controller
usb usb5: Manufacturer: Linux 2.6.17-gentoo-r4 ohci_hcd
usb usb5: SerialNumber: 0000:03:00.0
usb usb5: uevent
usb usb5: configuration #1 chosen from 1 choice
usb usb5: adding 5-0:1.0 (config #1, interface 0)
usb 5-0:1.0: uevent
hub 5-0:1.0: usb_probe_interface
hub 5-0:1.0: usb_probe_interface - got id
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 3 ports detected
hub 5-0:1.0: standalone hub
hub 5-0:1.0: no power switching (usb 1.0)
hub 5-0:1.0: global over-current protection
hub 5-0:1.0: power on to power good time: 30ms
hub 5-0:1.0: local power source is good
hub 5-0:1.0: no over-current condition exists
hub 5-0:1.0: state 7 ports 3 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'
PCI: Enabling device 0000:03:00.1 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.1[B] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
PCI: Setting latency timer of device 0000:03:00.1 to 64
ohci_hcd 0000:03:00.1: OHCI Host Controller
drivers/usb/core/inode.c: creating file '006'
ohci_hcd 0000:03:00.1: new USB bus registered, assigned bus number 6
ohci_hcd 0000:03:00.1: created debug files
ohci_hcd 0000:03:00.1: irq 11, io mem 0xd2001000
ohci_hcd 0000:03:00.1: resetting from state 'reset', control = 0x0
ohci_hcd 0000:03:00.1: OHCI controller state
ohci_hcd 0000:03:00.1: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:03:00.1: control 0x083 HCFS=operational CBSR=3
ohci_hcd 0000:03:00.1: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:03:00.1: intrstatus 0x00000004 SF
ohci_hcd 0000:03:00.1: intrenable 0x8000001a MIE UE RD WDH
ohci_hcd 0000:03:00.1: hcca frame #001e
ohci_hcd 0000:03:00.1: roothub.a 0f000202 POTPGT=15 NPS NDP=2(2)
ohci_hcd 0000:03:00.1: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:03:00.1: roothub.status 00008000 DRWE
ohci_hcd 0000:03:00.1: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:03:00.1: roothub.portstatus [1] 0x00000100 PPS
usb usb6: default language 0x0409
usb usb6: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb6: Product: OHCI Host Controller
usb usb6: Manufacturer: Linux 2.6.17-gentoo-r4 ohci_hcd
usb usb6: SerialNumber: 0000:03:00.1
usb usb6: uevent
usb usb6: configuration #1 chosen from 1 choice
usb usb6: adding 6-0:1.0 (config #1, interface 0)
usb 6-0:1.0: uevent
hub 6-0:1.0: usb_probe_interface
hub 6-0:1.0: usb_probe_interface - got id
hub 6-0:1.0: USB hub found
hub 6-0:1.0: 2 ports detected
hub 6-0:1.0: standalone hub
hub 6-0:1.0: no power switching (usb 1.0)
hub 6-0:1.0: global over-current protection
hub 6-0:1.0: power on to power good time: 30ms
hub 6-0:1.0: local power source is good
hub 6-0:1.0: no over-current condition exists
hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'
PCI: Enabling device 0000:03:00.2 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.2[C] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
ehci_hcd 0000:03:00.2: EHCI Host Controller
drivers/usb/core/inode.c: creating file '007'
ehci_hcd 0000:03:00.2: new USB bus registered, assigned bus number 7
ehci_hcd 0000:03:00.2: reset hcs_params 0x2395 dbg=0 cc=2 pcc=3 ports=5
ehci_hcd 0000:03:00.2: reset portroute 1 0 1 0 0
ehci_hcd 0000:03:00.2: reset hcc_params e806 thresh 0 uframes 256/512/1024 park
ehci_hcd 0000:03:00.2: park 0
ehci_hcd 0000:03:00.2: MWI active
ehci_hcd 0000:03:00.2: ...powerdown ports...
ehci_hcd 0000:03:00.2: supports USB remote wakeup
ehci_hcd 0000:03:00.2: irq 11, io mem 0xd2002000
ehci_hcd 0000:03:00.2: reset command 080b02 park=3 ithresh=8 period=1024 Reset HALT
ehci_hcd 0000:03:00.2: init command 010009 (park)=0 ithresh=1 period=256 RUN
ehci_hcd 0000:03:00.2: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb7: default language 0x0409
usb usb7: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb7: Product: EHCI Host Controller
usb usb7: Manufacturer: Linux 2.6.17-gentoo-r4 ehci_hcd
usb usb7: SerialNumber: 0000:03:00.2
usb usb7: uevent
usb usb7: configuration #1 chosen from 1 choice
usb usb7: adding 7-0:1.0 (config #1, interface 0)
usb 7-0:1.0: uevent
hub 7-0:1.0: usb_probe_interface
hub 7-0:1.0: usb_probe_interface - got id
hub 7-0:1.0: USB hub found
hub 7-0:1.0: 5 ports detected
hub 7-0:1.0: standalone hub
hub 7-0:1.0: individual port power switching
hub 7-0:1.0: individual port over-current protection
hub 7-0:1.0: Single TT
hub 7-0:1.0: TT requires at most 8 FS bit times (666 ns)
hub 7-0:1.0: power on to power good time: 20ms
hub 7-0:1.0: local power source is good
hub 7-0:1.0: enabling power on all ports
ohci_hcd 0000:03:00.0: suspend root hub
hub 7-0:1.0: state 7 ports 5 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'
ohci_hcd 0000:03:00.1: suspend root hub

Wow!. Observa que la salida dmesg es muuucho más larga, y aparecen múltiples referencias a OHCI.

Y si ahora conectamos un MemoryBird aparece:

(lo de antes y ahora, además:)
hub 7-0:1.0: state 7 ports 5 chg 0000 evt 0002
ehci_hcd 0000:03:00.2: GetStatus port 1 status 001803 POWER sig=j CSC CONNECT
hub 7-0:1.0: port 1, status 0501, change 0001, 480 Mb/s
hub 7-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x501
ehci_hcd 0000:03:00.2: port 1 full speed --> companion
ehci_hcd 0000:03:00.2: GetStatus port 1 status 003801 POWER OWNER sig=j CONNECT
hub 5-0:1.0: state 7 ports 3 chg 0000 evt 0000, resume root
ohci_hcd 0000:03:00.0: wakeup
hub 5-0:1.0: state 7 ports 3 chg 0000 evt 0000
ohci_hcd 0000:03:00.0: GetStatus roothub.portstatus [0] = 0x00010101 CSC PPS CCS
hub 5-0:1.0: port 1, status 0101, change 0001, 12 Mb/s
hub 5-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101
ohci_hcd 0000:03:00.0: GetStatus roothub.portstatus [0] = 0x00100103 PRSC PPS PES CCS
usb 5-1: new full speed USB device using ohci_hcd and address 2
ohci_hcd 0000:03:00.0: GetStatus roothub.portstatus [0] = 0x00100103 PRSC PPS PES CCS
usb 5-1: ep0 maxpacket = 8
usb 5-1: default language 0x0409
usb 5-1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 5-1: Product: Memorybird
usb 5-1: Manufacturer: Fujitsu
usb 5-1: SerialNumber: 171A1A0D0323
usb 5-1: uevent
usb 5-1: configuration #1 chosen from 1 choice
usb 5-1: adding 5-1:1.0 (config #1, interface 0)
usb 5-1:1.0: uevent
usb-storage 5-1:1.0: usb_probe_interface
usb-storage 5-1:1.0: usb_probe_interface - got id
scsi1 : SCSI emulation for USB Mass Storage devices
drivers/usb/core/inode.c: creating file '002'
hub 5-0:1.0: state 7 ports 3 chg 0000 evt 0002
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
  Vendor: Fujitsu   Model: Memorybird        Rev: 1.05
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sdb: 128000 512-byte hdwr sectors (66 MB)
ohci_hcd 0000:03:00.0: urb cf9700c0 path 1 ep1in 93120000 cc 9 --> status -121
sdb: Write Protect is off
sdb: Mode Sense: 43 00 00 00
sdb: assuming drive cache: write through
SCSI device sdb: 128000 512-byte hdwr sectors (66 MB)
ohci_hcd 0000:03:00.0: urb cf9700c0 path 1 ep1in 93120000 cc 9 --> status -121
sdb: Write Protect is off
sdb: Mode Sense: 43 00 00 00
sdb: assuming drive cache: write through
 sdb: sdb1
sd 1:0:0:0: Attached scsi removable disk sdb
sd 1:0:0:0: Attached scsi generic sg1 type 0
usb-storage: device scan complete

Evidentemente, lo reconoció. Si montas la unidad sdb1, verás que funciona y puedes acceder normalmente a los datos. Y por supuesto, puedes combinar lo que sabes de udev y de autofs para que todo esto se haga automáticamente, solo metiendo el MemoryBird (o lo que sea) en el puerto USB de la tarjeta Conceptronic.

Ahora deberían funcionar todos los dispositivos USB 2.0 y 1.1 en nuestra PCCard, o sea que la tarjeta funciona, tal y como dice TuxMobil. Pero algunos discos duros externos como el Lacie Mobile de 80 Gb no funcionarán porque necesitan una fuente de alimentación extra, cosa que no ocurre con el puerto USB propio del portátil. Enchufa el disco duro al USB del portátil y ya está, pero si necesitas conectarlo a la PCMCIA por narices, entonces necesitas usar un cable suplementario para alimentación eléctrica. Lo disfrutes :-).

Compártelo:
  • Print
  • email
  • Digg
  • del.icio.us
  • Facebook
  • MySpace
  • Google Bookmarks
  • BarraPunto
  • Twitter

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

Deja un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>