This article from Lifehacker: Access Your Computer Anytime and Save Energy with Wake-on-LAN reminded me that I've been meaning to write this up for a long time.
Before building my latest system I spec'd it out with everything I needed, including Wake On Lan. For my system, I chose the ASUS P5WD WS Pro (other ASUS boards probably have identical setups). Since this new system was going to be a beast and my main file server, I wanted to be able to access it remotely and not have it running 24x7. So WOL is the perfect solution, right? What I didn't know was that different manufacturers define WOL (Wake On Lan) differently. Some of them don't even support wake on lan like you'd imagine (to some, WOL means wake from suspend mode, not from power off). Some manufacturers require a specific UDP port is used when you send the "magic" WOL packet. Lastly I had no idea that operating system support also varies, and IS important.
I'm also using Marvell ethernet controllers, so other Marvell chips might also have the same WOL configuration.
First, you must set the correct BIOS settings (I forget now if only one or both of these are necessary - either way, enabling both doesn't hurt):
Advanced->Onboard Devices Configuration-> PCI-E LAN BOOTROM -> Enable
Advanced->Onboard Devices Configuration-> PCI LAN BOOTROM -> Enable
1. Enable WOL in your ethernet controller (These instructions are also here).
You must have ethtool installed for this:
sudo apt-get install ethtool
sudo vim wakeonlanconfig
*Or substitute vim for the editor of your choice
In this file, you will paste the following, changing "eth0" to your applicable interface. If you have multiple, just add more lines.
ethtool -s eth0 wol g
Now install this script:
sudo chmod a+x wakeonlanconfig
sudo update-rc.d -f wakeonlanconfig defaults
Finally, run it:
You can verify this is working by running ethtool:
sudo ethtool eth0
Among other information, you should see this:
Supports Wake-on: pg
2. Keeping your network interface alive when your computer shuts down:
sudo vim /etc/init.d/halt
Change this line: "halt -d -f -i $poweroff $hddown"
to this: "halt -d -f $poweroff $hddown"
(just remove the -i).
3. Get your MAC Address and send a magic packet.
Your MAC Address is your physical network address and it shows up in the form AB:CD:EF:GH:IJ:KL. Find yours by typing:
ifconfig |grep HW
Now shut down the computer which is getting woken up:
sudo shutdown -h now
From another computer on the same network (another linux computer in this example):
Your computer should roar to life.
Appendix A: ASUS Tech Support
While not strictly relavent to this tutorial, I just wanted to note that ASUS Technical Support sucks. While I was struggling to get this working not only could technical support not answer my technical questions regarding their implementation of WOL, which vary from vendor to vendor, but they had a horrible attitude and they treated me like I was a moron. That might be true, but as a paying customer I expect humane treatment.