If you want to enable Wake-on-LAN for the onboard NIC in these systems, there are two places where it needs to be enabled. Here’s a quick guide:
0. Enable it in the BIOS
-
Press
F10
several times immediately after you press the power button.- If your keyboard requires you to enable a function lock to use the
F
keys, you can alternatively pressEscape
several times until the system menu pops up, and then chooseF10
to enter the BIOS settings
- If your keyboard requires you to enable a function lock to use the
-
Go to
Power
>Hardware Power Management
-
Enable
S4/S5 Wake On LAN
, then pressF10
to accept the setting -
Go to
File
>Save Settings and Exit
and chooseYes
to save the settings and reboot
1. Enable it in your OS
-
Ubuntu Server
-
It’s best to run these steps directly on the system instead of using a remote terminal. If you mis-type something, you could accidentally disconnect your system from the network.
-
First, grab the MAC address and interface name of your NIC. Run
ip addr
and you should get an output similar to this:
-
The interface name is the first part in the list for each device. If you have multiple interfaces, look at the IP address for each interface to make sure you get the correct one. In my case it’s
enp2s0
. -
The MAC address is on the second line of each device. The onboard NIC should start with
c4:65:16
.
-
-
Now that you have the interface name and MAC, you need to edit the netplan. First, make a backup of this file just in case you want to go back to defaults at some time. Run
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
-
Then, open the file for editing. Run
sudo nano /etc/netplan/50-cloud-init.yaml
and you should get a file that looks something like this by default:
-
You need to add a couple lines to this file, and their placement is important, including the spaces at the front. You need to use spaces, not tabs, to indent, and the number of spaces must match from line to line in the same group. If you copy and paste, make sure you get all the spaces.
wakeonlan: true match: macaddress: c4:65:16
-
The first line,
wakeonlan: true
, is indented by 12 spaces, with a single sapce beween the colon and thetrue
-
The second line,
match:
is also indented by 12 spaces -
The third line,
macaddress: c4:65:16
is indented by 16 spaces, with a single space between the colon and thec4:65:16
portion. -
When you’re done, your file should look something like this, and it should be easy to spot if you spaced something incorrectly.
-
Save the file (press
Ctrl+O
and then Enter to save and then close nano (Ctrl+X
). Now, you need to apply these changes. Runsudo netplan apply
-
If you didn’t get any errors, run
sudo ethtool <interface name> | grep Wake-on
and verify that you get the following output:
- The
Wake-on: g
is the important part. If it’s not the letterg
then check your work and try again.
- The
-
-
Ubuntu Desktop
-
The steps for Ubuntu Desktop are nearly identical to Ubuntu Server. The only real difference is the spacing in the YAML file.
-
First, grab the MAC address and interface name of your NIC. Click the network icon in the upper right, then click on
Wired Connected
, and finallyWired Settings
-
In the network settings, click on the gear icon next to the wired connection. In the dialog that pops up, click on the
Identity
tab and grab the info from the MAC Address box.
-
The MAC address is the first portion, highlighted in yellow. I’m taking these screenshots on a VM, so my MAC is completely different. The HP should start with
c4:65:16
-
The interface name is the second piece, surrounded by parentheses and highlighted in blue. My interface is different, yours will most likely be
enp1s0
-
-
Now that you have the interface name and MAC, you need to edit the netplan configuration. First, make a backup of this file just in case you want to go back to defaults at some time. Open a terminal window and run
sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
-
Then, open the file for editing. Run
sudo gedit /etc/netplan/01-network-manager-all.yaml
and you should get a file that looks something like this by default:
-
You need to add a few lines to this file, and their placement is important, including the spaces at the front. You need to use spaces, not tabs, to indent, and the number of spaces must match from line to line in the same group. If you copy and paste, make sure you get all the spaces.
ethernets: ens160: dhcp4: yes wakeonlan: true match: macaddress: 00:0c:29:28:bb:9f
-
Change the interface name on the second line to match your interface, and the MAC address on the last line to match yours as well.
-
When you’re done, your file should look something like this, and it should be easy to spot if you spaced something incorrectly.
-
Save the file and close the editor. Now, you need to apply these changes. The terminal should still be open, run this command in it:
sudo netplan apply
-
If you didn’t get any errors, run
sudo ethtool <interface name> | grep Wake-on
and verify that you get the following output:
- The
Wake-on: g
is the important part. If it’s not the letterg
then check your work and try again.
- The
-
2. Check your work
Find a Wake-on-LAN client for your favorite OS. There’s a client built-in to pfSense under Services
> Wake-on-LAN
. Unraid has a plugin. There are apps for iOS and Android phones, programs for Windows and MacOS and virtually every current OS. Some programs only require the MAC address of the NIC (gathered in step 1 above), others also require the system’s IP for monitoring whether or not it’s turned on. I’ll leave the program choice up to you, but the test is simple. Turn off the system, then send the Wake-on-LAN signal using the app of your choice and see if the system turns on automatically.