Hello,
We dev a HMI for a device (it's not our device we bought it) which embedded a NUC (NUC7i7DNB)
And our final customer ask us to add a function to enable/disable the power of NUC's usb front panel (which are deported on device front panel).
What we want :
Disable/enable specific usb port or the entire root hub power.
If we need to change bios setting from os and reboot to apply it, it's ok.
Additional infos :
There are no external device connected on ports when we want to do such command.
We need to completely remove power from usb port (we though they want to protect their device against "usb killer" attack, or such vandalism)
We can do it in the bios settings, but we want to allow the user to do it from the OS (Which is Ubuntu 18.04)
What we tried/saw :
- It's look like root usb on this NUC don't allow power switching (sudo lsusb -v)
The hub 0 "Linux Foundation 2.0 root hub" (Bus 001 Dev 001) says : wHubCharacteristic 0x000a No power switching (usb 1.0)
The hub 1 "Linux Foundation 3.0 root hub" (Bus 002 Dev 001) says : wHubCharacteristic 0x000a No power switching (usb 1.0)
- Despite this, we tried to send sendClearPortFeature(PORT_POWER) to all root hub's ports, after that, root hub Port Status said power on ports is away, but that false, +5V still present between pin+ & pin-
- We tried to unbind driver of hubs, without success
- It's write in USB2.0 specification "The roothub provides the same functionality for dealing with USB topology as other hubs" (Chapter 10.2.8 Root Hub)
And "This state (Powered-off) is supported for all hubs. A port transitions to this state in any of the following situations: From any state except Not Configured when the hub receives a ClearPortFeature(PORT_POWER) request for this port" (Chapter 11.5.1.2 Powered-off)
Did we miss something ?
Is it possible to do such operation from OS ? on this NUC ?
Thanks in advance
Alex
Source :
https://www.mjmwired.net/kernel/Documentation/usb/power-management.txt
http://sdphca.ucsd.edu/Lab_Equip_Manuals/usb_20.pdf
Code source used to test :