Sistema de travamento - como xhci_hcd descarregar e permitir somente ehci_hcd no Ubuntu 12.04, 13.04 para depurar alguns hardwares usb

2

Eu tenho poucos hardwares USB que usam energia de 500mA (5V), depois de pesquisar descobri que a fonte de alimentação externa ou hub era a solução, mas isso era uma perda de tempo, mesmo fazendo energia externa o problema continua.

Agora, apenas a maneira de depurar este problema é desabilitar o Xhci_hcd no Ubuntu 12.04 ou no Ubuntu 13.04 e manter o Ehci_hcd apenas porque é onde o problema de 99% está começando.

Mas no Ubuntu sua impossibilidade ou missão quase impossível agora para desabilitar o xhci_hcd como posso fazer isso por favor ???

tentou:

$ 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: descarta o dispositivo também:

[ ] 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

e também na lista negra do kernel, mas xhci é impossível de desativar no Ubuntu

Alguém pode, por favor, mostrar alguns passos sobre como desabilitar este xhci para que eu possa encontrar o problema exato depurando o dispositivo apenas com ehci?

    
por YumYumYum 06.10.2013 / 10:23

1 resposta

0

O xhci_hcd está embutido no kernel em pelo menos 14.04. Você pode recompilar o kernel para que ele seja um módulo (ele está em Device Drivers | USB support no menu de configuração do kernel, pressione a barra de espaço até que seja M ou defina CONFIG_USB_XHCI_HCD=m no arquivo .config). Com isso, você pode fazer o blacklist e carregar e descarregar com o modprobe e o rmmod à vontade.

Infelizmente para mim eu acho que minha placa-mãe requer xhci_hcd mesmo para usb 2.0 e não pode usar apenas ehci_hcd, então não ter o módulo xhci_hcd carregado significa nenhum usb (ou eu preciso tomar outras providências para que funcione):

$ lsusb
unable to initialize libusb: -99

Mas é útil ter um módulo xhci, pelo menos eu posso recompilá-lo com alguns hacks sem ter que recompilar o kernel inteiro.

    
por Lucas W 12.03.2015 / 21:48