Сбой системы - как выгрузить xhci_hcd и разрешить ehci_hcd только в Ubuntu 12.04, 13.04 для отладки некоторых USB-устройств
У меня есть несколько USB-устройств, которые используют 500 мА (5 В), после переустановки выяснилось, что решением является внешний источник питания или концентратор, но это была пустая трата времени, даже при использовании внешнего источника питания проблема сохраняется.
Теперь единственный способ отладить эту проблему - отключить Xhci_hcd в Ubuntu 12.04 или Ubuntu 13.04 и сохранить Ehci_hcd только потому, что именно здесь начинается проблема 99%.
Но в Ubuntu невозможно или почти невозможно выполнить миссию почти сейчас, чтобы отключить xhci_hcd. Как мне это сделать, пожалуйста???
пытался:
$ cd /etc/pm/config.d/
$ pwd
/etc/pm/config.d
$ ls
00sleep_module unload_modules unload_module
root@e300gent:/etc/pm/config.d# cat *
SUSPEND_MODULES="xhci"
SUSPEND_MODULES="xhci"
SUSPEND_MODULES="xhci"
$ tail -f /var/log/syslog
Oct 6 10:47:54 e300gent kernel: [ ] xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
Oct 6 10:47:54 e300gent kernel: [ ] xhci_hcd 0000:02:00.0: WARN Successful completion on short TX: needs XHCI_TRUST_TX_LENGTH quirk?
Oct 6 10:47:54 e300gent kernel: [ ] xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
Oct 6 10:47:54 e300gent kernel: [ ] usb 3-1: USB disconnect, device number 2
Oct 6 10:48:00 e300gent kernel: [ ] usb 1-1.4: new high-speed USB device number 5 using ehci_hcd
Oct 6 10:48:00 e300gent kernel: [ ] uvcvideo: Found UVC 1.00 device HD Pro Webcam C920 (046d:082d)
Oct 6 10:48:00 e300gent kernel: [ ] input: HD Pro Webcam C920 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input17
Oct 6 10:48:00 e300gent mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4"
Oct 6 10:48:01 e300gent rtkit-daemon[1470]: Successfully made thread 2583 of process 1464 (n/a) owned by '1000' RT at priority 5.
Oct 6 10:48:01 e300gent rtkit-daemon[1470]: Supervising 6 threads of 1 processes of 1 users.
ehci_hcd: сбрасывает устройство тоже:
[ ] usb 1-1.4: reset high-speed USB device number 5 using ehci_hcd
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: reset high-speed USB device number 5 using ehci_hcd
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: reset high-speed USB device number 5 using ehci_hcd
[ ] usb 1-1.4: device not accepting address 5, error -110
[ ] usb 1-1.4: reset high-speed USB device number 5 using ehci_hcd
[ ] usb 1-1.4: device not accepting address 5, error -110
[ ] usb 1-1.4: USB disconnect, device number 5
[ ] usb 1-1.4: new high-speed USB device number 6 using ehci_hcd
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: device descriptor read/64, error -110
[ ] usb 1-1.4: new high-speed USB device number 7 using ehci_hcd
[ ] usb 1-1.4: device descriptor read/64, error -110
а также в черном списке ядра, но XHCI невозможно отключить в Ubuntu
Может кто-нибудь, пожалуйста, показать некоторые шаги, как отключить этот XHCI, чтобы я мог найти точную проблему путем отладки устройства только с EHCI?
1 ответ
xhci_hcd встроен в ядро как минимум 14.04. Вы можете перекомпилировать ядро, чтобы оно было модулем (оно находится под Device Drivers | USB support
в меню конфигурации ядра нажимайте пробел, пока он не станет М, или установите CONFIG_USB_XHCI_HCD=m
в файле.config). После этого вы можете занести его в черный список, загрузить и выгрузить с помощью modprobe и rmmod по желанию.
К сожалению для меня, я думаю, что моя материнская плата требует xhci_hcd даже для usb 2.0 и не может использовать только ehci_hcd, поэтому отсутствие загруженного модуля xhci_hcd означает отсутствие usb вообще (или мне нужно предпринять дальнейшие шаги, чтобы заставить его работать):
$ lsusb
unable to initialize libusb: -99
Но полезно иметь модуль xhci, я могу, по крайней мере, перекомпилировать его с некоторыми взломами без необходимости перекомпилировать все ядро.