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
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:
```bash
curl -fsSL https://raw.githubusercontent.com/Felitendo/moondeck-switchbot-wol/main/install.sh | bash
```
PC that gets woken
```bash
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:
```bash
moondeck-switchbot-wol host
```
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`.
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.
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](https://ntfy.sh) 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:
```bash
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.