This post is a tutorial that describes what needs to be done to remotely boot up your computer. When I did it myself, I had a stubborn router that did not allow the reception of the magic packet from the internet, so I used an arduino board with an ethernet shield to act as a LAN relay.
Before I begin, I just want to say that nothing in this post is new. I just recycled the information from the web, verified its correctness and integrated all my finds into a single and simple post.
OK! Now, the first thing to do is ensure that your motherboard supports Wake-on-LAN, which is mostly the case if you have a modern motherboard. To make this verification, just go in your motherboard’s BIOS. You should try to look for something like ‘PCI Power Up’ or ‘Power On by PCI Device’. If you find this option, just ensure it’s enabled, and you are good to continue with this tutorial. Just boot on your favorite operating system.
If your prefered OS is Windows, you should do a little google search, because I prefer Linux systems. However, I googled a bit and found this nice tutorial for Windows 7.
If your prefered OS is MAC, you should do a little google search, because I prefer Linux systems. Still, here’s a nice link I found for Wake-On-LAN enabling with OS.
Now, I was interested in Linux systems, so here’s what one needs to do.
First you will need ethtool to manually switch on the Wake-On-LAN feature:
You then need to query the driver to see if it’s defaulted to ‘on’ :
1 2 3
If you see ‘pumbg’ for the option ‘Supports Wake-on’ and a ‘g’ at ‘Wake-on’, then everything should be just fine. But in case you see something else, here’s what you need to do:
Add the following code in this file:
Then edit the following file:
And append at the end of it the following line:
The next thing to do is to note down the MAC address of your ethernet card. A MAC address looks like a1:b2:c3:d4:e5:f6
At that point, the Wake-On-LAN will activate next time you reboot, but if you want to avoid the useless Reboot before testing everything, type in the bash command :
Now shutdown your computer. You will now test using another Linux PC connected to your home network. Your pc should boot after you do the following :
If it works, great! Now you need to boot your PC via a remote place. What needs to be done?
If you don’t what to remember the IP address of your router (which is definitely the case, since it can change anytime), you need to get a dynamic DNS. That’s a web address that will act as a relay that will always know what is the IP address of your home’s router. The address will look something friendly like ‘myAddress.dyndns-home.com’. I invite you to get a free dynamic dns. There’s a couple of websites that offer this service, such as:
- and so on
When this is configured, you need to edit your router’s settings to open the port number 9 (default Wake-On-Lan port) and also lock the MAC address of the PC that will boot with a static IP address in a dhcp table. After that, it SHOULD be fine and you would normally be able to remotely boot your PC.
A good alternative when your router don’t want to broadcast the magic packet and don’t want to send a packet to your PC because it’s turned off (even if it’s recorded on the dhcp table) is to have a computer that would act as a relay. You would then call the relay, which you automatically broadcast the magic packet in your LAN network, which would boot your pc.
I had an arduino nearby with an ethernet shield, so here’s what I did. I plugged the arduino to my router using an ethernet cable, and I made it run the following code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
Doing that, and after configuring port redirection in my router to redirect incoming messages through it, this solution worked perfectly. The arduino just listens to the udp port number 10009, and when it receives the magic packet, this packet is broadcasted in my LAN network. The command to make the pc boot then becomes :