Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / Swing

Turn On Your PC/Computer Programmatically / Automatically –Wake On LAN ( WOL ) Over Internet- Wake On WAN ( WOW)

4.71/5 (15 votes)
10 Aug 2009CPOL7 min read 111.6K   4.2K  
Start your Computer by C , C++ , JAVA , .NET ..

Introduction

Everyone of us turns off the machine many times in a day. We do it by a single mouse click on “Turnoff/Shutdown” button in any OS or using 'Shutdown' command typing in command prompt or Shell. Restarting of PC follows the same procedure. Are there any other ways to boot the machine without pressing 'power on' button in CPU manually when PC is in Shutdown state?
Network administrator can shutdown or restart all machines in a network by a single mouse click. Can he start all machines in LAN by a single mouse click when PCs are in shutdown state?
Yes, it can easily be done if your PC is connected to a network, be it in LAN (Local Area Network) or WAN (Wide Area Network).

So at the end of the day, when you leave office/college by thinking my PC is shutdown, network admin cannot scan your PC. But, administrator sitting at his desktop can boot your machine and perform necessary activities using remote desktop.

Surprised!!!!. I know you are thinking that when the computer is in shutdown state, there is no OS / no program running to do it. So who will do the job for me ????
Hold on!!!!

Prerequisites

This article assumes you have minimum networking knowledge and have full access to your PC/Router. Yes, to do it you require minimum support from Hardware / OS / Router. The good thing is that most of the modern hardware and OS support it.

How? 

When you turn off your PC, all devices go off state but a small networking device known as NIC (Network Interface Card) remains on (depending on your NIC settings) and waiting for receiving messages from other network devices.

A special message called 'Magic Code' once received by it boots the PC using special power circuit called 'WOL connector' present in mother board.
A special utility program from other running PC creates 'Magic Packet' which contains MAC (Media Access Control) of target machine and broadcasts it in the network. All NIC cards present in the whole network receive the 'Magic packet' but only the NIC having same MAC address which is present in magic packet boots the PC.
This is not a new technology but not used widely for lack of security. However, some NICs support the security feature called 'SecureOn' which allows you to set a "Magic Packet password" of 6 bytes.

My PC is Connected to LAN and is in Shutdown State. I Want to Turn It On From a Different Machine

  • Turn off your PC and observe whether your LAN card's light is blinking or not. If yes, your LAN card supports it. Not blinking ... wait! Don't be disappointed. Turn on your PC. Go to LAN Card setting in control Panel and enable "Allow this device to bring the computer on". You may find a different name of this property in different OSs.

    Here is the screen shot taken from Windows OS for Intel Pro VM LAN Card:

    Shutdown PC again and see if it is blinking now. No? Stop reading here. Your NIC does not support it.

  • Open BIOS setup (Pressing F10 / Other key) while booting your PC. Go to "Power Option" and enable "SME wake up" or "Enable WOL" option or related Option. If no such options are there, stop reading here. Your PC does not support it. We are almost done. Still there are some chances to get a negative result because some mother boards do not have inbuilt "WOL connector" which is required to flow current to the main board.

  • Open your OS. Type " ipconfig /all " in the command prompt or shell. Your MAC address/ Physical address will be displayed. Note it. Now shutdown your PC. Go to a different PC in LAN. Run the attached JAVA program (it requires Java Runtime Environment). Provide Broadcast address (255.255.255.255 or check with your network admin) and MAC address. If all things go well, you will find your machine turning on. You need to disable "Bios Password", otherwise you need to enter the password manually. (Scroll below to know a bit more about broadcast address.)

    Below is the MAC address taken from Windows OS: 

Why Are We Using MAC Address? 

When the machine is in shutdown state, there is no IP assigned to PC. - Simple answer.
When we are connected to a network and connect to another PC, we need a unique address to connect.
These are IP address and MAC address. These are unique in a network. When we want to connect to another PC which is in the same LAN, IP address has minimum role. What PC requires to know is the MAC address. But still we connect using IP address in LAN. OK.... It finds out the corresponding MAC address for a given IP from network table called ARP (Address resolution Protocol) table. But in WAN, all connections happen using IP address. OK leave it. It is not within the scope of this article.  

Can I Turn on my PC Over the Internet (From cybercafe / School / College)?  How? 

  • First test whether it is working in LAN. If not, stop reading here. Working? Great!!! Now we have to play with the router. 
  • You need a router. Don't worry. You don't require a corporate router. Modern modem comes with Inbuilt router. Go to router console or router manual. Find out whether it supports "Subnet based Broadcasting". If not, you cannot proceed with router. 
  • Turn your Modem/Router in 'always on' mode. If you don't have static IP, you will get a new IP every time you will switch on your router, not PC. This IP should be globally accessible. Using " ipconfig " command, note your router's IP for the first time.

    The following picture is taken from 'Huawei MT882' data one modem for enabling 'always on' feature:

  • Open any port (Generally 7 or 9) on your router and forward any request coming to this port to your PC. Note: The IP is not exactly your computer's IP which you want to turn on from shutdown state. It is the broadcast address for your IP address. For an example, if your PC's IP is 192.168.1.10, broadcast address will be 192.168.1.255. If you are unable to calculate your broadcast address, use any 'Online Subnet calculator'.Link: Online Subnet Calculator. This part is the most vital part of settings. Router should broadcast "Magic packet" coming to given port to all PC in LAN (derived by sub net mask). Many routers disable "Subnet based broadcast" by default.You need to enable it. Some routers do not support this feature. (Refer to the Router manual.)

  • Shutdown your PC. Not router. 
  • Go to a different network ( WAN ) and run the attached program. Provide MAC address and Router IP and Port No. which you have just opened in your router. The program will send Magic packet to router at given port. Router is configured to broadcast this 'Magic packet' to all PCs in the LAN (derived by subnet mask in your network) based on subnet, not Machine IP address.  If all things go well, you will find your machine turning on. 
  • If you are behind a restricted firewall, you may not be able to connect to your router. You have to use HTTP tunnelling to achieve this. You can read about HTTP tunnelling from my another article. You may need to run the program more than once since the protocol used here is UDP, not designed for guaranteed packet delivery.

My Router Does Not Support "sub net based broadcast" So?

Use an 'always on machine' in your LAN. Configure your router to forward "Magic Packet" to only 'always on machine'. As soon as 'Always on machine' receives the magic packet from the router, it broadcasts it in LAN and the target machine will wake up since magic packet contains MAC address of your PC which is in shutdown state.

Conclusion 

Keeping your NIC card always on takes very little power. So if you want to wake up all your machines by a single mouse click, go ahead. It makes the network administrator's life easy.

History

  • 11th August, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)