Introduction

I wanted to be able to wake my main Windows PC remotely without keeping it connected to Ethernet.

The idea was simple:

Connect to my home network through Tailscale, send a Wake-on-LAN magic packet, and have my PC wake up over Wi-Fi.

The problem is that Wake-on-LAN is traditionally associated with Ethernet. Wireless Wake-on-LAN, or Wake-on-WLAN (WoWLAN), depends on the Wi-Fi adapter, driver, motherboard firmware, and access point all supporting the required wake behaviour.

My final setup looks like this:

Remote device
     |
     | Tailscale
     v
Tailscale LXC
192.168.0.XX
     |
     | UDP 9
     v
LAN broadcast
192.168.0.XXX
     |
     v
Living-room Deco
     |
     v
Upstairs Deco
     |
     v
RZ616 Wi-Fi 6E
     |
     v
Windows PC

This post documents how I configured it and how I troubleshot it when the magic packet initially wasn’t waking the PC.


My Setup

Windows PC

My main PC uses:

  • MSI system identifier: MS-7E30
  • Wi-Fi adapter: RZ616 Wi-Fi 6E 160MHz
  • Wi-Fi IP: 192.168.0.XXX
  • Connection: 5 GHz
  • Wi-Fi standard: 802.11ac

The PC is connected to an upstairs TP-Link Deco M9 Plus.

The living-room Deco is the main mesh node.

I specifically wanted this to work over Wi-Fi only. My Ethernet adapter exists, but is disconnected.

Proxmox / Tailscale

I already had a Debian LXC running Tailscale:

192.168.0.XX

This LXC acts as my permanent jumpbox into my home network.

The goal was:

Remote device
    |
    v
Tailscale
    |
    v
Tailscale LXC
    |
    v
LAN broadcast
    |
    v
Wi-Fi PC

Step 1: Verify Windows Wake Support

The first thing I checked was whether Windows considered the RZ616 capable of waking the computer.

Run:

powercfg /devicequery wake_programmable

The RZ616 appeared in the output.

I then checked which devices were currently armed to wake the system:

powercfg /devicequery wake_armed

The output included:

RZ616 Wi-Fi 6E 160MHz

This confirmed that Windows had the Wi-Fi adapter configured as a wake-capable device.


Step 2: Configure the RZ616

I opened:

Device Manager → Network adapters → RZ616 Wi-Fi 6E 160MHz → Properties → Advanced

The important settings were:

  • Wake On Magic Packet: Enabled
  • Wake On Pattern Match: Disabled
  • ARP OFFLOAD FOR WOWLAN: Enabled
  • GTK REKEY FOR WOWLAN: Enabled

I wanted the adapter to specifically respond to a Wake-on-LAN magic packet while the PC was sleeping.


Step 3: Configure Windows Power Management

In the RZ616’s Power Management tab, I enabled:

  • Allow this device to wake the computer
  • Only allow a magic packet to wake the computer

I then verified that the RZ616 was still armed:

powercfg /devicequery wake_armed

The output included:

RZ616 Wi-Fi 6E 160MHz

Step 4: Verify S3 Sleep

I checked the available Windows sleep states:

powercfg /a

My system supports:

  • Standby (S3)
  • Hibernate
  • Fast Startup

S0 Modern Standby was not available.

For this setup, I used normal S3 Sleep.


Step 5: Configure the MSI BIOS

This was the setting that ultimately made the difference.

I entered the MSI BIOS by rebooting the PC and pressing Delete.

Under the power and wake settings, I configured:

  • Wake Up Event By: BIOS
  • Resume By PCI-E/Networking Device: Enabled
  • Resume By USB Device: Disabled
  • Resume By RTC Alarm: Disabled
  • ErP Ready: Disabled

The important setting was:

Resume By PCI-E/Networking Device
    Enabled

I did not enable USB wake or RTC alarms because neither was required for network wake.

After saving the BIOS configuration, I booted back into Windows.

I verified the RZ616 was still wake-armed:

powercfg /devicequery wake_armed

and confirmed:

RZ616 Wi-Fi 6E 160MHz

was still present.


Step 6: Check the Deco Mesh

My PC connects to the upstairs Deco M9 Plus, while the living-room Deco is the main node.

My relevant Deco settings were:

  • Fast Roaming: Disabled
  • Beamforming: Disabled
  • Mesh Technology: Enabled

I left these settings alone while troubleshooting.

The important discovery was that the Deco continued to show my PC as connected to the upstairs Deco even after the PC entered sleep.

That was a good sign.

It meant the RZ616 wasn’t simply disappearing from the wireless network when Windows entered S3.


Step 7: Install Wake-on-LAN on the Tailscale LXC

On the Debian LXC, I installed wakeonlan:

apt update
apt install wakeonlan

I could then send a magic packet using the PC’s Wi-Fi MAC address:

wakeonlan XX:XX:XX:XX:XX:XX

However, I wanted to explicitly target my LAN broadcast address.

My home network is:

192.168.0.0/XX

Therefore the broadcast address is:

192.168.0.XXX

The final command was:

wakeonlan -i 192.168.0.XXX XX:XX:XX:XX:XX:XX

Step 8: Verify the Magic Packet

Before troubleshooting the Wi-Fi adapter, I wanted to make sure the magic packet was actually leaving the Tailscale LXC.

I installed tcpdump:

apt install tcpdump

Then monitored UDP port 9:

tcpdump -ni eth0 udp port 9

I sent the magic packet:

wakeonlan -i 192.168.0.XXX XX:XX:XX:XX:XX:XX

tcpdump showed traffic similar to:

14:17:16.628381 IP 192.168.0.34.XXXXX > 192.168.0.XXX.X: UDP, length 102

This confirmed the packet was leaving the Tailscale LXC and being sent to the LAN broadcast address.

At this point, the Tailscale and LAN side were working.


Step 9: Check the PC During Sleep

I put the PC into Sleep and checked the Deco app.

Dan-PC was still shown as connected to the upstairs Deco.

This was important because wireless Wake-on-LAN requires the Wi-Fi adapter to remain available for wake events while the system is sleeping.


Step 10: Test Wireless Wake-on-LAN

With the PC asleep, I ran:

wakeonlan -i 192.168.0.XXX XX:XX:XX:XX:XX:XX

The PC woke up.

Wireless Wake-on-LAN was working.

No Ethernet cable was required.


Final Configuration

The final working configuration was:

Windows

Allow this device to wake the computer
    Enabled

Only allow a magic packet to wake the computer
    Enabled

RZ616

Wake On Magic Packet
    Enabled

Wake On Pattern Match
    Disabled

ARP OFFLOAD FOR WOWLAN
    Enabled

GTK REKEY FOR WOWLAN
    Enabled

MSI BIOS

Wake Up Event By
    BIOS

Resume By PCI-E/Networking Device
    Enabled

Resume By USB Device
    Disabled

Resume By RTC Alarm
    Disabled

ErP Ready
    Disabled

Deco

Mesh Technology
    Enabled

The PC remains associated with the upstairs Deco while sleeping.

Tailscale LXC

The working command is:

wakeonlan -i 192.168.0.XXX XX:XX:XX:XX:XX:XX

Troubleshooting Checklist

If wireless Wake-on-LAN isn’t working, I’d check the following in order.

Check whether Windows sees the adapter as wake-capable

powercfg /devicequery wake_programmable

Look for:

RZ616 Wi-Fi 6E 160MHz

Check whether the adapter is wake-armed

powercfg /devicequery wake_armed

Check the RZ616 settings

Make sure:

Wake On Magic Packet → Enabled

Check Windows Power Management

Make sure:

Allow this device to wake the computer → Enabled
Only allow a magic packet to wake the computer → Enabled

Check the BIOS

Make sure:

Resume By PCI-E/Networking Device → Enabled
ErP Ready → Disabled

Check the Wi-Fi association

Put the PC to sleep and check whether the router/mesh still sees the PC as connected.

Check the magic packet

On the Linux sender:

tcpdump -ni eth0 udp port 9

Then:

wakeonlan -i 192.168.0.XXX XX:XX:XX:XX:XX:XX

Why Wireless WoL Is More Complicated

Ethernet Wake-on-LAN is relatively straightforward because the Ethernet adapter can continue monitoring the physical network while the rest of the computer sleeps.

Wi-Fi is different.

The Wi-Fi adapter needs to remain capable of handling a wake event while the operating system is asleep, while the access point needs to continue maintaining the wireless client’s connection.

That means several components have to cooperate:

Motherboard firmware
        +
Windows power management
        +
RZ616 driver
        +
RZ616 Wi-Fi adapter
        +
Deco mesh
        +
LAN broadcast

If one of those pieces isn’t configured correctly, the magic packet can successfully leave the network but the PC will never wake.


What Actually Fixed It?

The interesting part of this troubleshooting session was that almost everything was already configured correctly.

The magic packet was being sent correctly.

The Tailscale LXC was working.

The PC remained connected to the upstairs Deco while sleeping.

Windows had the RZ616 wake-armed.

The RZ616 had Wake-on-Magic-Packet enabled.

The missing piece was the MSI BIOS networking wake setting:

Resume By PCI-E/Networking Device
    Enabled

After enabling it, the same wireless magic packet successfully woke the PC.


Final Thoughts

I initially assumed the difficult part would be getting the magic packet through Tailscale and the Deco mesh.

It turned out the packet was never the problem.

The useful part of troubleshooting this was breaking the system into individual layers:

Tailscale connectivity
        ✓

LAN broadcast
        ✓

Deco → PC association during sleep
        ✓

Windows wake configuration
        ✓

RZ616 WoWLAN configuration
        ✓

BIOS networking wake
        ✗ → fixed

Wireless Wake-on-LAN
        ✓

The final result is exactly what I wanted:

I can remotely wake my Windows PC over Wi-Fi through my Tailscale-connected homelab, without using Ethernet.

The next step is to turn the working wakeonlan command into a simple remote command or service so I don’t have to SSH into the LXC every time I want to wake the PC.