내 모든 USB 장치는 최대 3.19의 커널을 사용하여 완벽하게 실행됩니다.
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 메모리 카드 리더기일 뿐입니다. 별로 신경쓰지 않습니다.
나에게 더 중요한 문제는 mythv 백엔드 박스의 Quad DVB-T 수신기와 동일한 문제가 있어서 현재 해당 시스템을 3.19 이상으로 업그레이드할 수 없다는 것입니다. 이것은 일종의 PCI-E-USB 브리지처럼 보이는 PCI-e 카드이며 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 드라이버의 최근 변경 사항은 무엇입니까? 이것은 버그입니까, 아니면 구성 문제입니까?
USB 관련 내용은 몇 가지 커널 버전(3.8) 전에 변경 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
이는 특정 순서로 드라이버를 로드하거나 특정 오래된 드라이버를 블랙리스트에 추가하여 처리할 수 있는 유사한 상황입니까?
추가 하드웨어 및 소프트웨어 세부정보:
이는 다음을 포함한 여러 시스템에서 발생했습니다.
- AMD Phenom II X6 1090T 프로세서를 탑재한 ASUS M4A89TD PRO USB3 마더보드(워크스테이션)
- ASUS M5A97에는 AMD Phenom II X6 1090T 프로세서(Myth 프론트 엔드)가 장착되어 있습니다.
- AMD Phenom II X6 1090T 프로세서를 탑재한 Asus Sabertooth 990FX(워크스테이션 및 서버)
- ASUS Sabertooth 990FX에는 AMD FX(tm)-8150 8코어 프로세서(Myth 백엔드)가 탑재되어 있습니다.
마지막 제품은 DigitalNow 쿼드 DVB-T 수신기가 장착된 신화적인 상자인 FX-8150(이전 마더보드가 고장난 후 재구축해야 했습니다)이었습니다. 첫 번째는 저렴한 USB 메모리 카드 리더기를 탑재한 M4A89TD Pro입니다.
모두 최소 8GB의 RAM을 갖추고 있으며 모두 독점 nvidia 드라이버를 사용하는 nvidia GTX-750(Myth Box) 또는 GTX-560 또는 GTX-560Ti GPU를 갖추고 있습니다. 모든 시스템은 최신 커널(신화적인 백엔드를 제외한 4.2.x 모두)과 함께 Debian sid를 실행하고 있습니다. USB가 HID를 제외한 모든 것에 중요한 유일한 시스템이기 때문입니다. USB kbd 및 마우스, 심지어 wacom 태블릿도 4.0 이상에서 잘 작동할 수 있습니다. 핵심).
모든 시스템은 RAID-1에서 128-256GB SSD로 부팅되며 /XFS를 사용하고 /boot는 ext4를 사용합니다. Mythtv 백엔드는 대용량 저장을 위해 zfsonlinux도 실행합니다. 워크스테이션/서버 조합에도 마찬가지입니다.
나는 데비안 기본 커널, liquiix 커널 및 사용자 정의 컴파일 커널을 사용해 보았습니다. 모든 결과는 동일합니다. 최대 3.19까지 괜찮습니다. 버전 4.0 이상에서는 DVB-T 수신기와 메모리 카드 리더기가 손상되었습니다.
참고: 저는 일반적인 지식이나 Google을 통해 5분 동안 찾을 수 있는 정보를 찾고 있지 않습니다. 저는 4.0+ 커널에서 알려진 USB(또는 기타 관련) 회귀에 대한 구체적인 정보를 찾고 있으며, 운 좋게도 패치나 해결 방법도 찾고 있습니다.
답변1
이는 적어도 특정 하드웨어에 대해서는 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과 관련된 것입니까, 아니면 USB 3과 관련된 것입니까, 아니면 USB 버전과 관련이 없는 것입니까? 이렇게 하면 범위를 좁히는 데 도움이 됩니다. 귀하의 데이터는 시스템의 usb2 max인 것처럼 보입니다.
커널이 정상으로 돌아옵니다.
사람들이 이와 같은 질문을 하면 나는 새로운 Linux 커널에 대해 여러 가지 가능한 결과가 있다고 말합니다.
- 이전에 작동하지 않았던 것이 이제는 작동합니다.
- 시스템의 모든 내용은 동일하게 유지됩니다.
- 이전에 작동했던 것이 더 이상 작동하지 않습니다.
- 어떤 것들은 좋아지고 어떤 것들은 멈춰
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1455376 이것은 Ubuntu의 USB 처리 버그입니다.
일반적으로 많은 사람들에게 영향을 미치는 버그는 상대적으로 빠르게 수정되므로 최신 안정 커널의 최신 버전을 확인해 볼 가치가 있습니다. 현재 버전은 4.3이라고 생각합니다.
우분투를 사용하는 경우 적어도 LTS가 아닌 현재 우분투인 경우 Liquix 커널을 실행할 수 있으며 데비안의 비안정적인 릴리스에서도 마찬가지입니다.
inxi -bxxx를 살펴보면 시스템의 기본 사항을 보여주는 데 도움이 됩니다. inxi는 대부분의 배포 저장소에서 설치할 수 있습니다.
Greg KH의 4.0/3.20 USB 변경 사항 목록은 다음과 같습니다.
usb: musb: fix device hotplug behind hub
usb: dwc2: Fix a bug in reading the endpoint directions from reg.
staging: emxx_udc: fix the build error
usb: Retry port status check on resume to work around RH bugs
Revert "usb: Reset USB-3 devices on USB-3 link bounce"
uhci-hub: use HUB_CHAR_*
usb: kconfig: replace PPC_OF with PPC
ehci-pci: disable for Intel MID platforms (update)
usb: gadget: Kconfig: use bool instead of boolean
usb: musb: blackfin: remove incorrect __exit_p()
USB: fix use-after-free bug in usb_hcd_unlink_urb()
ehci-pci: disable for Intel MID platforms
usb: host: pci_quirks: joing string literals
USB: add flag for HCDs that can't receive wakeup requests (isp1760-hcd)
USB: usbfs: allow URBs to be reaped after disconnection
cdc-acm: kill unnecessary messages
cdc-acm: add sanity checks
usb: phy: phy-generic: Fix USB PHY gpio reset
usb: dwc2: fix USB core dependencies
usb: renesas_usbhs: fix NULL pointer dereference in dma_release_channel()
http://kernelnewbies.org/Linux_4.0전체 변경 세트를 표시합니다.
https://lkml.org/lkml/2015/6/26/511이것은 4.2-rc1의 USB 변경 사항입니다. 보시다시피, "무엇이 변경되었는지" 묻는 것은 올바른 질문이 아닐 수 있습니다. 하드웨어 문제가 최신 버전에서 수정되었는지 확인하는 것이 더 유용합니다.