VirtualHere has created a fully standards compliant 4-Port USB 3 Hub that supports Per-Port-Power-Switching (PPPS). https://modularkvmip.com/product/usb-hub/
The PPPS functionality enables you to turn on or off power to each USB port individually. It is useful for :
- Resetting USB Dongles
- Power-cycling devices entirely (e.g while developing firmware)
- Saving bus power. e.g high power USB Disks can be turned off while not in use
- Driving simple relays etc
To switch power on or off to a USB port:
Using VirtualHere
- Plug the hub into a device running VirtualHere Server
- In the VirtualHere Client Right click on the Server and select Show Hubs...
- Right click on the 4-Port VirtualHere Hub and select Hub Control and select Power Cycle Off/On etc
Using VirtualHere in the Windows Command Line
Download https://www.virtualhere.com/sites/default/files/usbserver/vhfilterexe/vhfilter.exe
Install the filter (only needs to be done once) and reboot. Then use the DevicePath returned from the list-hubs
command to switch on or off a port. Its preferable to switch off the USB 3 port as that will switch its companion as well. For example:
C:\Downloads>vhfilter.exe vhfilter.exe turns on/off port power on a USB PPPS Hub Copyright 2023- VirtualHere Pty. Ltd. https://www.virtualhere.com Usage : vhfilter.exe --install-filter | --uninstall-filter | --list-hubs | --switch-port [port] [off | on] [devicePath] C:\Downloads>vhfilter.exe --install-filter The VirtualHere USB Hub Filter driver has been sucessfully installed C:\Downloads>vhfilter.exe --list-hubs The following hubs are attached that support Per-Port-Power-Switching: USB\VID_366B&PID_0004\MSFT203E55860BE2704C0F has 4 ports is USB 2 and attached to port 4 on USB\ROOT_HUB30\4&7178304&0&0 with companion port 3 USB\VID_366B&PID_0005\MSFT303E55860BE2704C0F has 4 ports is USB 3 and attached to port 3 on USB\ROOT_HUB30\7&30ff8dbc&0&0 with companion port 4 C:\Downloads>vhfilter --switch-port 4 off "USB\VID_366B&PID_0005\MSFT303E55860BE2704C0F" Successfully turned port 4 off Successfully turned companion port 4 off C:\Downloads>vhfilter --switch-port 4 on "USB\VID_366B&PID_0005\MSFT303E55860BE2704C0F" Successfully turned port 4 on Successfully turned companion port 4 on C:\Downloads>
Using uhubctl
You can also use https://github.com/mvp/uhubctl to switch the USB port power when the Hub is connected to Linux / MacOS hosts