Отключение и подключение USB-хаба к шине
Выполняем:
lsusb
И смотрим номер шины и девайса USB hub (их может быть несколько) - Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
.
Теперь находим идентификатиов и тип:
lsusb -v -s 1:1 | grep 'iSerial\|iProduct' iProduct 2 xHCI Host Controller iSerial 1 0000:00:15.0
Теперь можно отключить устройство (драйвер xhci_hcd должен соответствовать типу iProduct):
echo -n "0000:00:15.0" | sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind
убедиться что хаба нету:
lsusb
и подключить обратно:
echo -n "0000:00:15.0" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind
Управление питанием USB-хаба
https://www.kernel.org/doc/html/v4.12/driver-api/usb/power-management.html
Смотрим:
cat /sys/bus/usb/devices/usb2/power/runtime_status
И тут может быть либо suspended либо active
Включаем:
echo -n 'on' | sudo tee /sys/bus/usb/devices/usb2/power/control
И на всякий случай выключаем autosuspend, чтобы USB-устройства не засыпали:
echo 'options usbcore autosuspend=-1' | sudo tee -a /etc/modprobe.d/usbcore.conf
А если модуль usbcore вкомпилирован в ядро, то редактируем /etc/default/grub и добавляем к GRUB_CMDLINE_LINUX_DEFAULT такое:
usbcore.autosuspend=-1
А потом:
sudo update-grub
и
sudo reboot
Discussion