Note
This tool and its author are not affiliated with Valve in any way.
Tip
Please do not request install help in this repo!
This script installs and activates a service that allows USB devices on any USB root hub to wake SteamOS from sleep.
SteamOS is installed on many DIY PCs by enthusiasts to make faux steam machines.
However; given the Steam Machine and Steam Decks nature, and OSs in general, these DIY PCs cannot be woken by most controllers.
To get around this, this service detects changes on the USB root hubs (USB device controllers) and if a change is detected (like a controller waking up (state change), or randomly appearing on the bus (bluetooth)) it triggers the wake command in the OS (like you pushed the power button.).
The following is a small subset of tested controllers and devices.
It is worth mentioning that this service does not work on pure built in BT receivers (like combo wifi/bt cards).
A USB of some kind must be triggered, such as a dock or dongle.
| Device | Model | Connection Type | Wake On |
|---|---|---|---|
| 8BitDo Controller | Ultimate 2 | Dongle & Base | Controller Wake |
| Xbox One Controller | 1708 | Cable | Unplug & Plug event |
| Logitech KB/M Combo | K400 Plus | Included 2.4ghz Dongle | Button Press |
- Switch SteamOS to Desktop mode.
- Download the script from releases or copy it.
Now you must make the script executable:
chmod a+x usb-wake.shTip
A sudo password must be set and it is not by default!
SteamOS does not ship with a root password, so one must be set before you can execute things with sudo set one temporarily and then remove it again like so.
Note
It is assumed that you are using the default SteamOS user "deck", if not change command accordingly.
First set the password for the account, make this something memorable or copy and paste the following.
yes "USBWake!" | passwd deckNow simply navigate to the folder the script belongs to and execute it.
sudo ./usb-wake.shThe script will output its status as it completes.
After the script runs and installs the service you remove the password using the following:
echo "USBWake!" | sudo -S -k passwd -d deckOnce the service install is complete you can test it by setting your sleep timeout in settings to a low number then turning off your controller. After the machine goes to sleep simply wake the controller.
- Installs service that runs once each boot enabling currently connected usb hubs to wake the system
- Automatically backs up the current USB hub configuration during installation for restoration later
- Includes restoration feature to restore backups
- Includes uninstall feature to remove the service
The script itself has several flags to choose from including simply running it.
Use --help to open the menu.
Usage:
./usb-wake.sh
./usb-wake.sh --restore
./usb-wake.sh --uninstallAdditionally; user inputs are safeguarded for mistypes, preventing accidental usage.
Using the --restore flag allows you to temporarily restore USB hub settings from a backup.
Using the --uninstall flag allows you to remove the service and optionally restore from a configuration backup.




