Con núcleos de hasta 3.19, todos mis dispositivos USB funcionan perfectamente.
Al actualizar a 4.0 o posterior, algunos de mis dispositivos USB dejan de funcionar y el núcleo produce errores como este:
[ 3.369436] usb 9-1: device descriptor read/64, error -62
[ 3.593543] usb 9-1: new full-speed USB device number 4 using ohci-pci
[ 3.997572] usb 9-1: device not accepting address 4, error -62
[ 4.120602] usb 9-1: new full-speed USB device number 5 using ohci-pci
[ 4.524792] usb 9-1: device not accepting address 5, error -62
[ 4.524911] usb usb9-port1: unable to enumerate USB device
[ 15.402105] usb 9-1: new full-speed USB device number 6 using ohci-pci
[ 15.530135] usb 9-1: device descriptor read/64, error -62
[ 15.759224] usb 9-1: device descriptor read/64, error -62
[ 15.983312] usb 9-1: new full-speed USB device number 7 using ohci-pci
[ 16.111309] usb 9-1: device descriptor read/64, error -62
[ 16.340398] usb 9-1: device descriptor read/64, error -62
[ 16.564378] usb 9-1: new full-speed USB device number 8 using ohci-pci
[ 16.968454] usb 9-1: device not accepting address 8, error -62
[ 17.091555] usb 9-1: new full-speed USB device number 9 using ohci-pci
[ 17.495570] usb 9-1: device not accepting address 9, error -62
[ 17.495603] usb usb9-port1: unable to enumerate USB device
[ 17.673702] usb 9-1: new full-speed USB device number 10 using ohci-pci
[ 17.801758] usb 9-1: device descriptor read/64, error -62
[ 18.030814] usb 9-1: device descriptor read/64, error -62
[ 18.254834] usb 9-1: new full-speed USB device number 11 using ohci-pci
[ 18.382858] usb 9-1: device descriptor read/64, error -62
[ 18.611902] usb 9-1: device descriptor read/64, error -62
[ 18.835977] usb 9-1: new full-speed USB device number 12 using ohci-pci
[ 19.240034] usb 9-1: device not accepting address 12, error -62
[ 19.363101] usb 9-1: new full-speed USB device number 13 using ohci-pci
[ 19.767182] usb 9-1: device not accepting address 13, error -62
[ 19.767226] usb usb9-port1: unable to enumerate USB device
Ese ejemplo en particular fue solo un lector de tarjetas de memoria USB barato ... Realmente no me importa.
El problema más importante para mí es que el receptor Quad DVB-T en mi caja de back-end de mythtv también está sujeto al mismo problema, por lo que no puedo actualizar esa máquina más allá de 3.19 en este momento. Esta es una tarjeta PCI-e, parece que es una especie de puente pci-e a usb, y los sintonizadores DVB conectados a través de usb. No estoy completamente seguro, pero creo que en realidad podría ser una tarjeta PCIe -> PCI -> USB.
Aquí están los detalles de la tarjeta en un kernel 3.19 en funcionamiento:
# lsusb | grep Leadtek
Bus 010 Device 005: ID 0413:6680 Leadtek Research, Inc.
Bus 010 Device 004: ID 0413:6680 Leadtek Research, Inc.
Bus 010 Device 003: ID 0413:6680 Leadtek Research, Inc.
Bus 010 Device 002: ID 0413:6680 Leadtek Research, Inc.
# dmesg | grep -i DigitalNow| grep pci
[ 9.405568] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-1/rc/rc1/input17
[ 9.405687] rc1: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-1/rc/rc1
[ 9.475939] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-2/rc/rc2/input22
[ 9.476049] rc2: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-2/rc/rc2
[ 9.542441] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-3/rc/rc3/input24
[ 9.542617] rc3: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-3/rc/rc3
[ 9.609134] input: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-4/rc/rc4/input26
[ 9.609289] rc4: DigitalNow Quad DVB-T Receiver as /devices/pci0000:00/0000:00:0a.0/0000:04:00.0/0000:05:00.2/usb10/10-4/rc/rc4
# lspci | grep '^0[45]:'
04:00.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge (rev aa)
05:00.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
05:00.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62)
05:00.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65)
# lspci -vv -s 05:00
05:00.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62) (prog-if 00 [UHCI])
Subsystem: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 26
Region 4: I/O ports at d020 [size=32]
Capabilities: [80] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: uhci_hcd
05:00.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 62) (prog-if 00 [UHCI])
Subsystem: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32, Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 41
Region 4: I/O ports at d000 [size=32]
Capabilities: [80] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: uhci_hcd
05:00.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65) (prog-if 20 [EHCI])
Subsystem: VIA Technologies, Inc. USB 2.0 Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32, Cache Line Size: 64 bytes
Interrupt: pin C routed to IRQ 50
Region 0: Memory at fe500000 (32-bit, non-prefetchable) [size=256]
Capabilities: [80] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: ehci-pci
Entonces, ¿qué ha cambiado recientemente en los controladores USB del núcleo? ¿Es esto un error o es un problema de configuración?
Hace varias versiones del kernel (3.8), las cosas de USB cambiaron, por lo que ehci-hcd
tuvieron que cargarse antes ehci-pci
. initramfs-tools
desde entonces se ha actualizado para manejar eso automáticamente, pero todavía tengo los restos comentados de la solución en mi /etc/modules
archivo:
# make sure ehci-pci loads immediately after ehci-hcd for kernel 3.8
# (should be handled automagically by initramfs-tools 0.110 now)
#ehci-hcd
#ehci-pci
¿Es esta una situación similar, que puede manejarse cargando controladores en un orden particular o colocando en la lista negra a ciertos controladores obsoletos?
Algunos detalles más de hardware y software:
Esto ha ocurrido en varias máquinas, incluyendo:
- Placa madre Asus M4A89TD PRO USB3 con procesador AMD Phenom II X6 1090T (estación de trabajo)
- Asus M5A97 con procesador AMD Phenom II X6 1090T (interfaz de mito)
- Asus Sabertooth 990FX con procesador AMD Phenom II X6 1090T (estación de trabajo y servidor)
- Asus Sabertooth 990FX con procesador AMD FX (tm) -8150 de ocho núcleos (backend de mito)
El último, con el FX-8150 (que es lo que tenía por ahí cuando murió la placa base anterior y tuve que reconstruirlo), es la caja de mito con el receptor DigitalNow Quad DVB-T. El primero, el M4A89TD Pro, es la máquina con el lector de tarjetas de memoria USB barato.
Todos tienen al menos 8 GB de RAM y todos tienen GPU nvidia GTX-750 (cajas de mito) o GPX GTX-560 o GTX-560Ti, utilizando el controlador patentado nvidia. Todos están ejecutando Debian sid, con núcleos recientes (4.2.x en todo menos en el backend del mito, ya que es el único en el que el USB es importante para todo menos HID - USB kbd y mouse e incluso una tableta wacom funcionan bien, por cierto, en 4.0+ granos).
Todas las máquinas arrancan SSD de 128-256GB en RAID-1 usando XFS para / y ext4 para / boot. El backend de mythtv también ejecuta zfsonlinux para almacenamiento masivo. Como es la estación de trabajo / servidor combinados.
He probado los núcleos de stock de Debian, los núcleos de Liquorix y los núcleos compilados a medida. Todo con el mismo resultado: hasta 3.19 está bien. 4.0 y posterior rompe mi receptor DVB-T y mi lector de tarjetas de memoria.
Tenga en cuenta: no busco conocimientos generales o información que se pueda encontrar en cinco minutos con google. Busco información específica sobre cualquier regresión conocida de USB (u otra posiblemente relacionada) en núcleos 4.0+ y, con suerte, un parche o solución.
/etc/modules
. vincular los módulos al kernel estáticamente no hará ninguna diferencia y probablemente empeorará las cosas al no darme la oportunidad de cambiar el orden en que se cargan los módulos.