HARDWARE ACCESSORY

Wake a Sleeping Laptop with a Raspberry Pi Pico W

Modern laptops cut power to their internal Wi-Fi hardware during sleep, making standard Wake-on-LAN (WoWLAN) unreliable or impossible. A $6 Raspberry Pi Pico W solves this by staying alive on your Wi-Fi and sending an instant USB keyboard wake signal.

Firmware Downloads

CircuitPython 9.2.4 + Omnimux Wake Service

omnimux-pico-wake.uf2

All-in-one ready to drag & drop. Includes firmware, Wi-Fi captive portal, and USB HID wake server.

Download .UF2 (3.8 MB)

flash_nuke.uf2

Official Raspberry Pi flash eraser. Use this first if your board already had other files installed.

Download Nuke (112 KB)

Source & Package (.zip)

Contains Python scripts, Adafruit HID libraries, example config, and UF2 builder.

Download .ZIP (1.0 MB)

How It Works

┌─────────────────┐ Wi-Fi ┌────────────────┐ │ Omnimux App │ ──────────────────────────────► │ Raspberry Pi │ │ (Phone/Desktop) │ HTTP POST /wake or auto-wake │ Pico W │ └─────────────────┘ └───────┬────────┘ │ USB Cable │ (Left-Shift double tap) ▼ ┌────────────────┐ │ Sleeping PC │ │ (Wakes up!) │ └───────┬────────┘ │ SSH connects ▼ Connected in Omnimux!

When you tell Omnimux to connect to your sleeping machine, the app fires an HTTP request to the Pico W. The Pico W emulates a standard USB HID keyboard and sends two Left-Shift keypresses across the USB cable. To the host OS and BIOS, this is a hardware ACPI wake event: the screen turns on, networking restarts, and SSH answers.

Installation Guide (3 Minutes)

1Flash the Pico W

  1. Unplug your Raspberry Pi Pico W from your computer.
  2. Press and hold down the white BOOTSEL button on the board.
  3. While holding the button, plug the Pico W into a USB port on your computer, then release the button.
  4. A drive named RPI-RP2 will appear in your file manager.
  5. Drag and drop omnimux-pico-wake.uf2 onto the RPI-RP2 drive.
  6. The drive will disappear and the onboard LED will blink. The wake server is now running!

Tip for boards previously used with CircuitPython: If your board boots into a drive called CIRCUITPY with old files, first hold BOOTSEL and drop flash_nuke.uf2 onto RPI-RP2. It will wipe the flash in 2 seconds and reboot back into RPI-RP2. Then drop omnimux-pico-wake.uf2.

2Configure Wi-Fi

You can configure Wi-Fi wirelessly from your phone, or by editing a text file on your PC:

Method A: Wireless Setup via Phone (Hotspot)

  1. Plug the Pico W into any powered USB port.
  2. On your phone or laptop, open Wi-Fi settings and connect to: Omnimux-Wake-Setup (open, no password).
  3. A setup page opens automatically (or go to http://192.168.4.1 in your browser).
  4. Select your home 2.4 GHz Wi-Fi network, enter the password, and tap Save & Connect.
  5. The Pico reboots and connects to your home network.

Method B: Direct text file (CIRCUITPY)

  1. Plug the Pico W into your computer normally (without holding BOOTSEL).
  2. Open the CIRCUITPY drive.
  3. Open settings.toml in Notepad and enter your network name and password:
    CIRCUITPY_WIFI_SSID = "YourHomeWiFi"
    CIRCUITPY_WIFI_PASSWORD = "YourWiFiPassword"
  4. Save the file (Ctrl+S). The Pico W restarts and connects to your Wi-Fi within two seconds.

3Configure Laptop USB Wake & BIOS

To ensure your laptop wakes up when the key is pressed:

On Windows:

On Linux:

In BIOS / UEFI:

Using in the Omnimux App

  1. Open Omnimux on your phone or desktop.
  2. Edit the machine you want to wake.
  3. Scroll to Wake with a Pico W and enter the Pico's IP address (e.g. 192.168.1.45) or pico-wake.local.
  4. Tap Find it to verify communication (it queries /api/status without waking).
  5. Save the host.

Once configured, a manual Wake up button appears in the machine's menu and the sessions screen. You can also turn on Press the key automatically when unreachable if you want Omnimux to wake the machine automatically whenever a connection fails.

Android Note: If configuring from an Android phone, use the Pico W's numeric IP address (from your router or the setup page) instead of pico-wake.local, as Android's network stack does not resolve mDNS names.

Keep-Alive (Hardware Mouse Jiggler)

In addition to waking sleeping machines, Omnimux Pico Wake includes a hardware Keep-Alive mode to prevent PCs and laptops from entering sleep or locking when you step away (AFK):

Web Dashboard & API Reference

The Pico W serves a built-in web dashboard at http://pico-wake.local/ (or its IP) with live device status, uptime, Keep-Alive controls, and an instant "WAKE LAPTOP NOW" button.

Endpoint Method Description
/wake POST / GET Fires the USB HID wake sequence (Left-Shift double-tap).
/api/keepalive POST / GET Toggles or configures Keep-Alive mouse jiggler (?enable=1|0, ?jiggle=1).
/api/status GET Returns JSON status (device name, uptime, IP, MAC, wake key, keepalive state).
/setup GET Opens the captive Wi-Fi configuration portal.
/save_config POST Saves new Wi-Fi credentials to persistent flash memory and resets.