Windows 7 come out of sleep when I open remote desktop

24

15

Is there any way to have a Windows 7 machine come out of sleep automatically when I try and connect to it with Remote Desktop?

The power saving option of the machine I want to connect to (enforced by group policy I believe) is to sleep after 30 minutes, which means I have to either physically walk over to press a key, or fire up a separate Wake-on-LAN tool to get it out of sleep mode.

I would be nice if the Remote Desktop Connection client sent the Wake-on-LAN packet automatically - is this possible?

John Sibly

Posted 2009-11-12T17:11:25.563

Reputation: 653

2Don't newer motherboards have this feature? – Dalin Seivewright – 2012-02-09T14:28:59.863

@DalinSeivewright Yes they do-my newest dev machine does this automatically now :) – John Sibly – 2014-02-03T11:26:18.893

Answers

13

You'll need to send a magic packet (For Wake ON LAN) through your router. Difficult because router's don't forward these by default, but there are workarounds as found here:

In order to wake up a computer from the Internet you need a Broadband connection with a Router connected to the Modem that keeps your connection alive (you need a Router even if you have Static IP).

Waking Up the computer from remote is done by sending the magic packet through the Internet using your Internet IP address, and the MAC number of the computer that you intend to Wake Up.

If you do not know your IP address:

Link to: How I find my Computer/Server Internet address from remote location.

You have to prepare the system for Wake Up Over the Internet.

Open a Port thought the Router, and the Software Firewall (use high port number so it will not conflict with any other port, 5850 is a good example).

Assign the port to the internal IP of the computer that you want to WOL (you can use the port only for one computer).

Get this Utility it let you define a port for WOL.

Link to: Wake on LAN for Windows Graphical User Interface (WOL GUI)

Take with you a copy of the WOL GUI, and write down the MAC number. In the remote location start WOL GUI and type in your MAC number, Type in the Internet address (Internet IP) type in the port number that you left Open. Click on Wake me Up and it should work.

The utility:

alt text

The magic packet GUI utility is freeware.


You can also use a hotkey to wake it along with the command line version of Wake On LAN:

The Syntax:

C:\path\to\wolcmd.exe [Mac address] [IP address] [Subnet mask] [port number]

Making things easier:

!w::Run, C:\wolcmd.exe 009027a324fe 195.188.159.20 255.255.255.0 8900
  • Alt + w will wake the remote computer

modify the script accordingly so the path points to the wolcmd.exe executable and the MAC, IP, and subnet are correct.

John T

Posted 2009-11-12T17:11:25.563

Reputation: 149 037

Hi John - yes this is the tool I currently have to use if I want to get this computer out of sleep. I was wondering if it was possible for Remote Desktop to do it automatically? – John Sibly – 2009-11-12T17:23:41.983

1Natively i dont know of a way to do it automatically, and If I use AutoHotkey to wake it automatically when you open remote desktop, opening RDC for a different reason will still wake your home computer which you do not want, so I edited my answer to elaborate on how to set a hotkey to wake your remote computer. – John T – 2009-11-12T17:49:08.703

1John T's answer is brilliant. All I can add is that I created a short cut on my desktop with:

wol -i 192.168.1.61 -p 00:24:8C:1F:90:23 wol 00:24:8C:1F:90:23

(Can't remember why I added two similar commands)

Then I assign the shortcut a keyboard combo e.g Ctrl +shift +j

Works fine for a desktop machine. But struggling with my laptop's nic. – Guy Thomas – 2009-11-12T20:08:25.380

Thanks for all the feedback. The command line version looks very promising - I think the solution (for me at least) is to create a batch file to: call the command line tool, wait for 5 seconds or so, and launch "mstsc.exe mycomputer.rdp" – John Sibly – 2009-11-12T22:19:50.060

3

Improving on John Sibly's answer... if in windows you can avoid C# code by using the "timeout" cmd as below.

ECHO OFF
CLS
WolCmd.exe MAC_OF_NIC IP_ADDR MASK 7
timeout 10
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

See this answer on StackOverflow for more option regarding the sleep section of the .cmd file: https://stackoverflow.com/questions/4317020/windows-batch-sleep

Dennis

Posted 2009-11-12T17:11:25.563

Reputation: 171

Useful command - I'll have to remember that for future batch files :) – John Sibly – 2012-06-25T11:05:41.933

2

You need a network adapter that support ARP offload and TCP SYN wake pattern as stated in http://technet.microsoft.com/en-us/library/ee617165%28v=ws.10%29.aspx

If those features are supported and enabled, then whindos won't warn you about sleep/hibernate policy when you turn on remote desktop.

czz

Posted 2009-11-12T17:11:25.563

Reputation: 121

I've notice that this works on my newest dev machine-I guess this is the reason why. – John Sibly – 2013-12-17T19:21:20.330

2

Remote Desktop does not have any built-in remote wake-up capability.

You may be able to configure your network card to wake up on any packet. However, this will probably not work like you intended - as it won't discriminate between your remote desktop connection attempt and someone just scanning your network or a latent packet from a service you were using.

For now, you will probably have to settle with a two-step process: 1) wake the computer with one application, 2) Connect via remote desktop.

Jason R. Coombs

Posted 2009-11-12T17:11:25.563

Reputation: 1 952

2

Using the information from the other answers, I ended up creating a folder containing the following files:

connect.bat
mycomputer.rdp (remote desktop connection file)
sleep.exe (a little program to wait a specified number of milliseconds)
wolcmd.exe

So running connect.bat, wakes up my computer, waits 10 seconds, and then opens a remote desktop connection to it.

connect.bat contains the following:

ECHO OFF
CLS
WolCmd.exe 0011AA22BB33 10.1.255.255 255.255.0.0 7
ECHO Sleeping...
Sleep.exe 10000
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

You can generate sleep.exe by saving the source below as sleep.cs, and compliling it using the C# compiler that comes with the .NET framework:

csc /out:sleep.exe c:\sleep.cs

Source for sleep.cs

using System;
using System.Threading;

namespace Sleep
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                int period = 0;
                Int32.TryParse(args[0], out period);
                Console.WriteLine("Sleeping for {0} ms", period);
                Thread.Sleep(period);
            }
        }
    }
}

John Sibly

Posted 2009-11-12T17:11:25.563

Reputation: 653

1

There are different type reasons related to the appearing error message.

Not enough memory

Close your other programs, and then try connecting again. If the problem continues, restart your computer, and then try connecting again. If you still can't connect, contact your network administrator or technical support. (For more information, see Preventing low memory problems.)

Network failure

Make sure that your network connection is working e.g. by accessing some local or global domain or if the Ethernet cable is plugged into your network adapter or wireless switch is turned on.

The remote computer cannot be found

Verify that Remote Desktop is enabled. Check if the remote computer is running (neither in sleep nor hibernation mode). Verify the computer name or its IP address and make sure you typed it correctly.

Connecting a home computer to a computer on a corporate domain requires an intermediate step to ensure that the computers can communicate e.g. to establish a virtual private network (VPN) connection to the corporate network.

Or another application might be using the same port as RDP.

For further examples than my most common cases or for details about each of them see:

strpeter

Posted 2009-11-12T17:11:25.563

Reputation: 165