How to configure wireless wake-on-lan for Linux WiFi card

How to configure wireless wake-on-lan for Linux WiFi card – nixCraft

I have Network Attached Storage (NAS) server that backups all my devices. However, I am having a hard time with my Linux-powered laptop. I cannot back up my laptop/computer when it is in suspended or sleep mode. How do I configure my wifi on a laptop to accept a wireless wol when using an Intel-based wifi card? How can I configure wireless wake-on-lan on Linux?

Wake-on-LAN (WOL) is an Ethernet networking standard that allows a server to be turned on by a network message. You must send ‘magic packets to wake-on-lan enabled ethernet adapters and motherboards to switch on the called systems.


Wake on Wireless (WoWLAN or WoW) is a feature to allow the Linux system to go into a low-power state while the wireless NIC remains active and stay connected to an AP. This quick tutorial shows how to enable WoWLAN or WoW (wireless wake-on-lan) mode with a wifi card installed in a Linux based laptop or desktop computer.

Please note that not all WiFi cards or Linux drivers support the WoWLAN feature.

Syntax to configure wireless wake-on-lan under Linux

You need to use the iw command to see or manipulate wireless devices and their configuration on a Linux based system. The syntax is:
iw command<br /> iw [options] command

List all wireless devices and their capabilities

Type the following command:

iw list<br /> iw list | more<br />

iw dev
Sample outputs:

phy#0
	Interface wlp3s0
		ifindex 3
		wdev 0x1
		addr 6c:88:14:ff:36:d0
		type managed
		channel 149 (5745 MHz), width: 40 MHz, center1: 5755 MHz
		txpower 15.00 dBm

Please note down phy0.

Find out the current status of your wowlan

Open the terminal app and type the following command to find out wowlan status:

iw phy0 wowlan show
Sample outputs:
WoWLAN is disabled

How to enable wowlan

The syntax is:
sudo iw phy {phyname} wowlan enable {option}
Where,

  1. {phyname} – Use iw dev to get phy name.
  2. {option} – Can be any, disconnect, magic-packet and so on.

For example, I am going to enable wowlan for phy0:

sudo iw phy0 wowlan enable any
OR
sudo iw phy0 wowlan enable magic-packet disconnect
Verify it:

iw phy0 wowlan show
Sample outputs:

WoWLAN is enabled:
 * wake up on disconnect
 * wake up on magic packet

Test it

Put your laptop in suspend or sleep mode and send ping request or magic packet from your nas server:

sudo sh -c 'echo mem > /sys/power/state'
Send ping request from your nas server using the ping command ping your-laptop-ip
OR send magic packet using wakeonlan command :
wakeonlan laptop-mac-address-here<br />

etherwake MAC-Address-Here

How do I disable WoWLAN?

The syntax is:

sudo phy {phyname} wowlan disable<br />

sudo phy0 wowlan disable

How to enable iw settings after reboot?

Edit or update or create a file named /etc/rc.local as follows:
sudo vim /etc/rc.local
Update it as follows:

#!/bin/bash
/sbin/iw phy0 wowlan enable magic-packet disconnect
exit 0

Save and close the file in vim. Run the chmod command to set correct permissions:

sudo chmod +x /etc/rc.local
Under systemd rc-local will gets pulled automatically into multi-user.target by systemd-rc-local-generator if /etc/rc.local is executable. For example, to view this file, run:

sudo systemctl edit --full rc-local
See how to enable rc.local shell script on systemd while booting Linux system for more info.

Conclusion

You learned how to configure wireless (Wi-Fi) for wake-on-lan under Linux operaring system using the iw command. For more info read the iw command man page:

man iw<br /> iw --help

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.