I've got an issue with some hardware in a test lab that, when the device being tested has an issue, it seems to "crash" the USB controller, causing the port to not show devices connected...however it gets worse. If the Server the device is attached to is rebooted, then it hangs during POST because Dell's lifecycle controller tries to enumerate the USB ports, and they don't respond.
I've tried a number of things, such as:
- using
powertop
to try changing the port status (does nothing) echo 0 > /sys/bus/usb/devices/usb1/bConfigurationValue
, which is supposed to issue a reset.- changing
/sys/bus/usb/devices/usb1/power/wakeup
to enabled and disabled, no change - rummaging around in docs on ipmitool to see if there was a way to do it.
- using
modprobe -r usbhid
to remove the usbhid kernel module, then reinstall
I've also tried
root@least-nest:/sys/bus/pci/drivers/ehci-pci# echo -n '0000:00:14.0' > unbind root@least-nest:/sys/bus/pci/drivers/ehci-pci# echo -n '0000:00:14.0' > bind
but got a message saying
-bash: echo: write error: No such device
None of these changes anything. It seems that it's nearly impossible to actually "reset" or power down a USB root hub/port. The only solution that seems to allow the server to reboot successfully is to use racadm
to first disable the internal USB ports, then reboot the machine, bypassing the USB enumeration during POST.
Since rebooting is a drastic measure, is there any other way to basically "refresh" or "reload" the USB controllers built into the motherboard? I'm working in parallel to see if there's something with the device attached that could be looked at as well (powering it down remotely, etc) but the focus at the moment is to see if we can get around rebooting the machine first.
I should mention the OS of choice is Ubuntu 18.04 on R630 dells.
Thanks!