ESP32  ·  Tailscale  ·  WireGuard  ·  ~$5

Wake your PC
from anywhere.

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.

Get started → Read the docs
setup & wake
$ ./scripts/setup.sh
╔══════════════════════════════════════╗
║ ESP32 Wake-on-LAN — Setup ║
╚══════════════════════════════════════╝
Found ESP-IDF at: ~/esp/esp-idf
WiFi SSID: MyHomeNetwork
Tailscale Auth Key: tskey-auth-●●●●●
Target PC MAC: 10:FF:E0:08:CC:4C
Building... ██████████████████ 100%
Flashing... ██████████████████ 100%
Done! ESP32 Tailscale IP: 100.x.x.x

$ wake-pc 100.x.x.x
Waking PC via ESP32 (100.x.x.x:9999) ...
Done! Magic packet sent (attempt 7).

Three hops from command to power-on

Everything is end-to-end encrypted. The relay server only sees ciphertext.

💻
You
Any Tailscale peer
🌐
DERP relay
Tailscale network
ESP32
On your LAN, 24/7
🖥️
Your PC
Magic packet broadcast
1

ESP32 joins your Tailscale network

The ESP32 connects to your WiFi and registers with Tailscale using a full ts2021 WireGuard implementation that fits in 520 KB of RAM.

2

You send a single UDP packet

From any device on your Tailscale network — laptop, phone, home server — run wake-pc. The packet is WireGuard-encrypted end-to-end.

3

ESP32 broadcasts the magic packet

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.

The alternatives all have problems

Most WoL solutions require permanent changes to your network or an always-on server.

❌ Port forwarding UDP 9

Exposes your router to the internet. Requires a static IP or DDNS. One misconfiguration and you have a security hole.

❌ Always-on server (Pi, NAS…)

Defeats the purpose. You're keeping a machine running 24/7 just to wake another machine.

❌ Router WoL support

Uncommon in consumer routers. Requires router-specific setup. Not portable between homes.

✓ esp32-wol

$5 hardware. Zero port forwarding. Works behind any NAT. Secure by default (Tailscale + WireGuard). Draws ~80 mW.

Everything you need

Any ESP32 works. No PSRAM required.

🔌
NodeMCU-32S or any ESP32
No PSRAM needed. HiLetgo, Espressif DevKitC, or any generic ESP32 board works.
~$5 on Amazon
🔋
USB power supply
Any 5 V phone charger. After the first flash, only power is needed.
Already have one
🖧
PC with Ethernet + WoL
Target machine must be connected via wired Ethernet and have WoL enabled in BIOS.
Enable in BIOS settings

Up and running in minutes

The setup script handles everything: ESP-IDF check, configuration, build, and flash.

1
Clone the repo
git clone https://github.com/medinajaime/esp32-wakeonlan.git
cd esp32-wakeonlan
2
Run the setup script
./scripts/setup.sh

The script prompts for your WiFi credentials, Tailscale auth key, and target PC MAC address — then builds and flashes automatically.

3
Wake your PC from anywhere
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.

Full documentation →