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.