Files
2026-10-26 00:13:03 +01:00

5.2 KiB

moondeck-switchbot-wol

moondeck-switchbot-wol

Wake your PC from the Steam Deck with a SwitchBot.

For MoonDeck, when Wake-on-LAN does not work. And the PC logs in on its own, but only for the Deck.

Install | How to use | Report a bug

Buy me a coffee on Ko-fi

Install

You need a SwitchBot Bot on the power button, and a SwitchBot hub with Cloud Services on for the Bot.

Steam Deck

In Desktop Mode, open Konsole:

curl -fsSL https://raw.githubusercontent.com/Felitendo/moondeck-switchbot-wol/main/install.sh | bash
PC that gets woken
git clone https://github.com/Felitendo/moondeck-switchbot-wol.git
cd moondeck-switchbot-wol
make && sudo make install

Optional: msgfmt for translations, scdoc for the man page.

How to use

On the PC:

moondeck-switchbot-wol host

The menu on the PC in Konsole: login trigger on, logs in alex

Press 1 to turn the login trigger on, then 2 to pair with the Deck. Say yes to the SwitchBot question, and the Deck gets everything from the PC.

On the Deck, the installer opens the menu. Later it is ~/.local/bin/moondeck-switchbot-wol.

The menu on the Deck in Konsole: SwitchBot wake-up on, MoonDeck wakes gaming-pc

Press 1 and pick Pair with the PC. The PC finds the Deck on its own, and both show the same code. Press y on both.

Pairing on the PC in Konsole: found steamdeck, it shows a code too: 085 324 Pairing on the Deck in Konsole: gaming-pc wants to pair, it shows a code too: 085 324

Then switch to Game Mode. MoonDeck wakes your PC ✨just like that✨.

More

How it works
Wake-up MoonDeck runs this instead of sending a magic packet. It asks the SwitchBot cloud to press the button.
MoonDeck enable sets it up for you: this program, one wake-up only (a second press turns the PC off), and 3 minutes to boot. disable puts back what was there.
Pairing The PC looks for the Deck on its network. The code on both comes from a key they share, so you know they found each other. What the PC sends is encrypted with it.
Login The Deck proves that it woke the PC, with the secret from pairing. On a wake-up, the secret never goes over the network. The PC logs you in once. Switched on by hand, it still asks for the password.
Address The Deck uses the address MoonDeck has for the PC, so a new one from your router changes nothing.
Push Optional: a push through ntfy once the PC is ready to stream.

The login works with Plasma Login and SDDM.

Commands
moondeck-switchbot-wol The menu on the Deck
… enable Let MoonDeck use the SwitchBot
… disable Give MoonDeck its Wake-on-LAN back
… pair [CODE] Pair with the PC, or paste its code
… press Press the button now
… log The last wake-ups
moondeck-switchbot-wol host The menu on the PC
… host enable Turn the login trigger on
… host disable Turn it off
… host pair Find the Deck and pair with it
… host code A pairing code, for when the PC cannot find the Deck
Help
  • The device list is empty. Pair the Bot with a hub and turn on Cloud Services for it in the SwitchBot app.
  • The Bot clicks, but the PC stays off. Check that the arm reaches the button, and the battery.
  • The PC does not find the Deck. Both have to be on the same network, and guest Wi-Fi often keeps devices apart. Pick Show a pairing code instead on the PC, and press c on the Deck to paste it.
  • MoonDeck says the wake-up failed. moondeck-switchbot-wol log says why.
  • The PC stays at its login screen. The log on the Deck says what the PC answered. journalctl -u 'moondeck-switchbot-wol-login@*' shows the PC's side.
  • A password window pops up after the login. Your keyring is unlocked with your password, and nobody typed it. Remove the keyring's password, or start the app with --password-store=basic.
Uninstall

On the Deck:

curl -fsSL https://raw.githubusercontent.com/Felitendo/moondeck-switchbot-wol/main/install.sh | bash -s -- --uninstall

On the PC: sudo moondeck-switchbot-wol host disable, then sudo make uninstall.

GPL-3.0-or-later.