A $5 ESP32 joins your Tailscale network and stays on your LAN 24/7. Send one UDP packet from anywhere in the world — your PC wakes up. No port forwarding. No static IP. No always-on server.
Everything is end-to-end encrypted. The relay server only sees ciphertext.
The ESP32 connects to your WiFi and registers with Tailscale using a full ts2021 WireGuard implementation that fits in 520 KB of RAM.
From any device on your Tailscale network — laptop, phone, home server — run wake-pc. The packet is WireGuard-encrypted end-to-end.
The ESP32 fires a 102-byte WoL magic packet to 255.255.255.255:9 on your local network. Your PC's NIC sees it and powers on.
Most WoL solutions require permanent changes to your network or an always-on server.
Exposes your router to the internet. Requires a static IP or DDNS. One misconfiguration and you have a security hole.
Defeats the purpose. You're keeping a machine running 24/7 just to wake another machine.
Uncommon in consumer routers. Requires router-specific setup. Not portable between homes.
$5 hardware. Zero port forwarding. Works behind any NAT. Secure by default (Tailscale + WireGuard). Draws ~80 mW.
Any ESP32 works. No PSRAM required.
The setup script handles everything: ESP-IDF check, configuration, build, and flash.
git clone https://github.com/medinajaime/esp32-wakeonlan.git
cd esp32-wakeonlan
./scripts/setup.sh
The script prompts for your WiFi credentials, Tailscale auth key, and target PC MAC address — then builds and flashes automatically.
python3 scripts/wake-pc 100.x.x.x # ESP32 Tailscale IP
The ESP32 Tailscale IP is shown at the end of setup and in the Tailscale admin console under the device name esp32-wol.