Increasing numbers of single board computers are powered by USB ports using a cable like this:
Wouldn’t it be cool if you could plug these into a USB hub and have the hub individually power up and down the computers? Like a cheap APC power management board.
It turns out you can — with difficulty. The USB standard defines Per-Port Power Switching (PPPS) but unfortunately almost no hub in existence actually supports it. To save a few cents on the BOM, the manufacturers generally leave out the extra power transistors needed to make it work. One guy has modified his USB hub to add the extra part and full marks to him but that’s a lot of effort.
There is one hub which actually supports this: The D-Link DUB-H7, but only the first version (the silver/grey case). In the second version (black case), D-Link too realized their “mistake” and saved on the extra bits.
Armed with this knowledge, I bought one of these from the US (shipping cost 3x the cost of the hub itself).
And it works! Well, for a while.
# lsusb ... Bus 003 Device 005: ID 2001:f103 D-Link Corp. DUB-H7 7-port USB 2.0 hub
Switch off port 7 (right-most port):
# ./hub-ctrl -b 3 -d 5 -P 4 -p 0
Switch on port 7:
# ./hub-ctrl -b 3 -d 5 -P 4 -p 1
The ports are not numbered in the same sequence as the ports on the hub itself. I found by experimentation that the ports correspond as follows. I don’t know if it’ll be the same on every model:
|1 (left)||-P 5|
|7 (right)||-P 4|
The bigger problem is the hub is fairly unreliable. Switching ports on or off too frequently seems to result in the hub crashing, which appears to only be recoverable by powering the hub off for several seconds.
So I’m not quite there.