New
#11
I had this issue when I was first setting up my WOL. However, it now works flawlessly. Like everything, the answer lies in the details. Let me explain.
It's my understanding that when the computer is in S1 or S2 sleep (see earlier post in this thread from Parmer for definitions), an IP address can still be used for WOL. But, once it gets to S3 or S4 sleep, the computer essentially loses it's IP as an identifier. This explains why WOL might work right after the computer has been put to sleep, but not when the computer has been sleeping for a long time.
So, if you can't send the WOL signal directly to the IP of your computer your trying to wake, to what IP can you send it? The answer is that you need to send the WOL signal sent out to EVERY IP on the subnet. This is accomplished by sending the WOL signal out to xxx.xxx.xxx.255. (255 broadcasts to every device on a subnet.)
So, the WOL signal has to go out as a broadcast (aka xxx.xxx.xxx.255) and it has to contain 2 things:
1. The MAC address of the device you want to wake, and
2. The UDP port number for the NIC that's listening for the WOL signal (UDP port is usually 7 or 9 for WOL).
Herein lies the problem. You can generally configure a router to forward incoming data to any specific IP, but not all IP's. In other words, I've never seen a router that will port forward anything to the xxx.xxx.xxx.255. This is for good reason, but limits your ability to use WOL.
If you're only trying to send and receive the WOL signal within one subnet, you just need to follow the rules above and make sure that your NIC is configured properly (read on for an easy way to check.)
But, if you're trying to do this across different networks (i.e. over the internet), you'll need a router that is capable of sending out the WOL signal and you'll need a way to ask the router to do so.
So, how does one "ask the router to send out the WOL signal"? So long as the router is capable (many are not), you should be able to do it through the GUI interface on the router, or by connecting to it (via telnet or SSH) and executing the proper command. If your router is NOT capable or sending out WOL signals, you might be able to make it so by flashing the router with a third party firmware like DD-WRT, Tomato, etc.
The GUI method is easier to understand, but the telnet or SSH method allows you to write a little batch file that allows you to do WOL with a simple double click. (I won't get into this here.) Regardless of which method you use, when trying this from the internet, you'll have to configure your router to allow WAN connections to the GUI, telnet, or SSH interface before you'll be able to ask it to send the command.
Lastly, before banging your head against the wall trying to set this up, do an easy check to see if you NIC can even handle WOL:
From the command prompt type:
powercfg –devicequery wake_from_any
... and hit enter.
The device with the NIC you want to be listening for the WOL signal needs to be listed. If it is not, pick a different device or give up because WOL isn't going to work (not reliably any way).
If it is listed, from the command prompt type:
powercfg –devicequery wake_armed
... and hit enter.
If the device with the NIC you want to be listening for the WOL signal is properly configured, it will be listed. If it is not listed, change the configuration and check it again.
Lastly, don't forget to check that the power management settings in your bios are configured as well. You can have everything else correct, and improper bios settings can still hold you back.
For what it's worth, I use a router flashed with DD-WRT for WOL. I think most if not all DD-WRT versions can do WOL. If your router can be flashed with DD-WRT, I highly recommend it.
Good Luck!