С ядрами до 3.19 все мои USB-устройства работают отлично.
При обновлении до 4.0 или более поздней версии некоторые из моих USB-устройств перестают работать, и ядро выдает следующие ошибки:
[ 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
Этот конкретный пример был просто дешевым USB-устройством для чтения карт памяти ... Меня это не волнует.
Более важная проблема для меня заключается в том, что приемник Quad DVB-T на моем бэкэнд-боксе mythtv также подвержен той же проблеме, поэтому в данный момент я не могу обновить эту машину до версии 3.19. Это карта PCI-e, которая выглядит как мост от pci-e к usb, и DVB-тюнеры подключены через usb. Я не совсем уверен, но думаю, что это может быть карта PCIe -> PCI -> USB.
Вот детали карты на работающем ядре 3.19:
# 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
Итак, что изменилось в драйверах USB ядра в последнее время? Это ошибка или проблема конфигурации?
Несколько версий ядра назад (3.8) изменилось содержимое USB, так что ehci-hcd
его нужно было загружать раньше ehci-pci
. initramfs-tools
с тех пор был обновлен, чтобы обрабатывать это автоматически, но у меня все еще есть закомментированные остатки обходного пути в моем /etc/modules
файле:
# 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
Является ли это аналогичной ситуацией, которая может быть обработана путем загрузки драйверов в определенном порядке или путем внесения в черный список определенных устаревших драйверов?
Еще некоторые детали аппаратного и программного обеспечения:
Это произошло на нескольких машинах, в том числе:
- Материнская плата Asus M4A89TD PRO USB3 с процессором AMD Phenom II X6 1090T (рабочая станция)
- Asus M5A97 с процессором AMD Phenom II X6 1090T (миф фронтэнд)
- Asus Sabertooth 990FX с процессором AMD Phenom II X6 1090T (рабочая станция и сервер)
- Asus Sabertooth 990FX с восьмиъядерным процессором AMD FX (tm) -8150 (бэкэнд-миф)
Последний, с FX-8150 (что я и лежал, когда умерла предыдущая материнская плата и мне пришлось ее перестраивать), это мифическая коробка с приемником DigitalNow Quad DVB-T. Первый, M4A89TD Pro, - это машина с дешевым USB-устройством для чтения карт памяти.
Все они имеют по крайней мере 8 ГБ ОЗУ, и все имеют либо nvidia GTX-750 (мифобоксы), либо GTX-560 или GTX-560Ti GPU с использованием проприетарного драйвера nvidia. Все работают под управлением Debian sid с последними ядрами (4.2.x на всем, кроме мифического бэкенда, поскольку это единственный, где USB важен для всего, кроме HID - USB kbd и мышь и даже планшет wacom отлично работают, BTW, на 4.0+ ядра).
Все машины загружаются с 128-256 ГБ SSD в RAID-1, используя XFS для / и ext4 для / boot. Серверная часть mythtv также использует zfsonlinux для массового хранения. Как это комбинированная рабочая станция / сервер.
Я пробовал стандартные ядра Debian, ядра liquorix и скомпилированные на заказ ядра. Все с одинаковым результатом: до 3.19 это нормально. 4.0 и позже ломает мой приемник DVB-T и мое устройство чтения карт памяти.
Обратите внимание: мне не нужны общие знания или информация, которую можно найти за пять минут с помощью Google. Мне нужна конкретная информация о любых известных USB (или других, возможно, связанных) регрессиях в ядрах 4.0+ и, если повезет, патче или обходном пути.
/etc/modules
. статическое соединение модулей с ядром не будет иметь никакого значения и, скорее всего, ухудшит ситуацию, поскольку у меня не будет возможности изменить порядок загрузки модулей.Ответы:
Это похоже на регрессию ядра в 4.x Linux, по крайней мере для вашего конкретного оборудования.
http://archlinuxarm.org/forum/viewtopic.php?f=53&t=8798
Возможно, в этом коммите, но трудно сказать, так как вы не предоставили никакой дополнительной информации о вашей системе.
https://github.com/torvalds/linux/commit/a0b5cd4ac2d6542d524d8063961bf914b5df1efa
Некоторые системы, по-видимому, испытывают проблемы по крайней мере с USB 3: https://lists.debian.org/debian-kernel/2015/08/msg00066.html
Поэтому реальный вопрос в том, какое у вас оборудование и какое последнее ядро 4.x вы пробовали. Возможно, это было решено в недавнем выпуске 4.x. Проблема с usb 2 и 3, или просто 3, или не связана с версией usb? Это поможет сузить его. Ваши данные выглядят так, будто это всего лишь usb2 max в вашей системе.
Ядра регрессии нормальные.
Как я говорю людям, когда они задают этот тип вопросов, новое ядро Linux имеет несколько возможных результатов:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1455376 Это ошибка Ubuntu с обработкой usb.
Обычно ошибки, которые влияют на вещи, которые используют многие люди, исправляются относительно быстро, поэтому стоит проверить последнюю версию последнего стабильного ядра, которая, как мне кажется, на данный момент находится на уровне 4.3.
Если вы используете Ubuntu, вы можете запустить ядро liquorix, по крайней мере, если это текущая версия Ubuntu, а не LTS, то же самое для нестабильных выпусков Debian.
Просмотр: inxi -bxxx будет полезен, чтобы показать основы вашей системы. INXI устанавливается из большинства дистрибутивов.
Вот список изменений USB от Greg KH для 4.0 / 3.20
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e29876723f7cb7728f0d6a674d23f92673e9f112
http://kernelnewbies.org/Linux_4.0 показывает полный набор изменений.
https://lkml.org/lkml/2015/6/26/511 это изменения в USB для 4.2-rc1. Как видите, вопрос «что изменилось», вероятно, не совсем правильный вопрос, более полезным было бы определить, была ли проблема решена для вашего оборудования еще в последних выпусках.
источник