Configuring Wake-On-LAN for DELL machines with ConfigMgr

Since ConfigMgr 1810, there is a new, and much improved way to wake up machines on your network. However, your hardware must be configured to allow it, and so does Windows 10.

Good news, you can use ConfigMgr for that too. I typically use a Task Sequence for most hardware (BIOS) configurations, and a Configuration Item / Configuration Baseline for the Windows 10 settings, but sure, a package that runs a script to set it will do just fine as well, or a Configuration Item that does everything. Anyway, in this guide you learn to use a task sequence for the BIOS configuration, and a Configuration Item / Configuration Baseline for the Windows Wake-On-LAN settings. You can even download the ones I was using 🙂

Credits: Thanks to DarkMallard for the WOL script on TechNet Gallery, and to Maurice Daly for the Invoke-DellCCTKCheck.ps1 script.

Update/Warning: I recently learned that there seem to be an issue with using the new WOL notification method when targeting collections with more than 150-200 active clients. The symptom is that it may soak the fast channel for hours . Thanks Michael for the heads up, I'll update the post as I learn more.

Note #1: Due to changes in Windows 10 (and Windows 8.x), most hardware models does not support waking up from a Shutdown, only from sleep (and some hibernation scenarios). Even with tricks such as setting AllowWakeFromS5 under NDIS settings in the registry, waking up from Shutdown rarely works in Windows 10. More info about these changes in Microsoft KB 2776718: "Wake on LAN"(WOL) behavior in Windows 8, Windows 8.1 and Windows 10.

Note #2: When you wake up a machine via Wake-On-LAN, don't be surprised when it goes back to sleep again after being idle for two minutes. That's been the default behavior since Windows Vista, and is usually not what you want. That timeout is easy to change, but still, it's a rather not-that-bright default timeout IMNSHO. Anyway, I added that setting to my Configuration Item / Configuration Baseline as well. I bumped it up to 1 hour.

Note #3: The new option for waking up machines via client notification (fast channel) usually does not require enabling Wake-on-LAN on the ConfigMgr site level, it's only really needed for the wake-up proxy feature that you can enable via client settings.

For local-subnet-based wake-up scenarios, this configuration is no longer needed.

Configuring BIOS for Wake-On-LAN

When writing this guide, I used a few Dell Optiplex machines, but the steps works on most of DELL's business models. To configure BIOS unattended I use the DELL cctk.exe tool.

Now, in a perfect world, the latest cctk.exe should work with all DELL models, but of course it doesn't. So the first thing you need is a script that figures out what cctk.exe version you need. Luckily good friend Maurice Daly has written one of those: This script runs the cctk.exe tool without any parameters, depending on exit code, the script sets a ConfigMgr task sequence variable, DellNewCCTKCmds to either true or false, and then sets another variable, DellCCTKPath, to call the correct version of the tool.

Next step is to download the two cctk.exe versions, put them in a folder, and then create a ConfigMgr package with that folder as a data source. In my environment I put cctk.exe version in the root, and cctk.exe version in the Legacy folder. I also added Maurice script to the root folder.

My DELL Command Configure package source.

Once the package is created, you can create a task sequence that runs the script, and then calls the vendor tool to do the configuration. The task sequence I used for this guide is available for download here (but without the DELL Command Configure package):

Note: If you are not using BitLocker (you should, but still), disable the first action in the task sequence.

The Enable DELL WOL Setting Task Sequence.

Configuring Windows 10 for Wake-On-LAN

Once the BIOS configuration is in place, it's time to make sure Windows is configure for Wake-on-LAN. And as mentioned earlier I use a ConfigMgr Configuration Item/Baseline for that.

Note: There is a built-in client setting that configures two of the settings I have in my Configuration Item, two of the Wake-On-LAN settings on the network card, but since I want to have more settings anyway, I put them all in a single Configuration Item.

The built-in ConfigMgr client setting to configure a network card for Wake-On-LAN.

The Configuration Item contains a few scripts and registry values, disables Energy Efficient Ethernet on the network card, disables Windows 10 Fast Startup, enables Wake-On-LAN settings on the card, and adjusts the default two minute timer for when machines go back to sleep after being waken.

The Configuration Item for Windows 10 Wake-On-LAN Settings.

You can download the Configuration baseline and its Configuration Items here:

Import the Baseline into ConfigMgr, and then deploy it. When deploying the baseline, make sure to select the Remediate noncompliant rules when supported option.

Note: For the new "going-back-to-sleep-after-being-woken" timeout to take affect, you need to have the machines rebooted. So worst case, the new timeout won't be active until next patch cycle.

Deploying the CB – Enable Wake-On-LAN baseline.

Verifying the Configuration

After deploying the WOL BIOS Configuration Task Sequence you can quickly verify that it worked as expected by running the cctk.exe manually on the client with these commands:

cctk –DeepSleepCtrl
cctk –WakeOnLan

Verifying the BIOS configuration.

To verify the WOL Configuration Baseline, you can open Device Manager, and check the settings on your network card. In the Advanced tab and choose Energy Efficient Ethernet. It should say Off.

Note: This option is not available for all DELL models.

Checking the Energy Efficient Ethernet setting on the network card.

The next set of settings to verify are the two Wake-on-LAN settings on the Power Management tab of the network card properties.

Network Card Power Management Settings.

To verify that Windows 10 Fast Startup is disabled, go to the good old Control Panel, and in Power Options, select "Choose what the power buttons do". The check box for "Turn on fast startup (recommended)" should not be selected.

Verifying that the Configuration Baseline did the job.

Verifying that you can wake the machine

Before trying to use ConfigMgr to wake the machine it's a good idea to a simple test first using any WOL tool of your choosing. In this example I'm using a little PowerShell script:

# Mac Address of machine to wake up from sleep or hibernate
$MacAddress = "18-66-da-31-a3-d1"

Function Send-MagicPacket{
    $MacByteArray = $MacAddress -split "[:-]" | ForEach-Object { [Byte] "0x$_"}
    [Byte[]] $MagicPacket = (,0xFF * 6) + ($MacByteArray  * 16)
    $UdpClient = New-Object System.Net.Sockets.UdpClient

Send-MagicPacket -MacAddress $MacAddress

But there are other small GUI-based tools like WakeMeOnLan v1.85 from NirSoft, and many others.

Troubleshooting Wake-On-LAN

In addition to double-checking the BIOS and Windows 10 settings, you can also use a monitor, like Wake On Lan Monitor from Depicus, to verify that the request reaches the subnet. Don't forget to change the port to whichever port you are using. Port 7 and 9 are commonly used for Wake-ON-LAN.

Wake On Lan Monitor showing a request on the local network.

Another option is to install Wireshark on of the machines, and have it listen to the traffic on that subnet. Below is a capture from a wake-up request via a ConfigMgr client. Unless a client setting is configured otherwise, it's going to use port 7 for the request.

wake-up request via a ConfigMgr client.

On some of the DELL hardware I was testing on I had to upgrade BIOS and load the default settings before configuring the Wake-On-LAN settings. If you reset to default settings, make sure to make a note of settings like SATA operations or virtualization options before the reset 🙂

Wake-On-LAN in ConfigMgr, behind the scenes

In ConfigMgr you can see the wake-up request being sent from the site server to an available client in the BgbServer.log. Look for the following message:

Starting to send push task (PushID: 122 TaskID: 119 TaskGUID: F1E30996-55F1-4F4F-8BFA-BF4450690FC9 TaskType: 18 TaskParam: 
<WakeupInfo WakerMachineID="16777479">
<NetworkInfo SleepingMachineID="16777480" IPAddress="" IPSubnet="" MACAddress="18:66:DA:31:A3:A4" MulticastAddress="" Flags="0" />
</WakeupInfo>) to 1 clients with throttling (strategy: 1 param: 42)
The BgbServer.log

In addition to the IP address and Mac Address of the machine to be waken, you will also see the Resource ID of the existing online machine tasked with the waking up. In this case you'll see this: WakerMachineID="16777479"

Happy Deployment / Johan

About the author

Johan Arwidmark

0 0 votes
Article Rating
Notify of
Oldest Most Voted
Inline Feedbacks
View all comments
tony dewhurst
tony dewhurst
2 years ago

Thanks for this Johan it works on most machines but also get some script execution errors 0xffffffff

3 years ago

Hi Johan,
First of all, thanks for sharing this valuable information, it is really helpful and much appreciated.
I want to share with you, all the implementation it's working fine and computers (Dell Optiplex 5060/5070) are waking up from a full shutdown but not when they are in sleep mode). Any idea?

Kyle Belcher
Kyle Belcher
3 years ago

As always, thanks for your contributions Johan!

Has anyone ever dealt with 802.1x enabled environments? At our agency, machines are in a "no-man's land" VLAN unless they have successfully authenticated via the Windows Wired AutoConfig service. I've been told by our network group that because any offline/unauthenticated machines are in this VLAN, that WOL cannot be implemented.

Anyone else found a way to achieve WOL in this type of environment?

4 years ago

Hi, any idea why a deployment with 'Send wake up packets' ticked does not wake up the device at the start time, but I can wake up manually via client notification?

4 years ago

Great. I will keep you updated as soon as I get more information from the dev team. 🙂

4 years ago

Thanks Johan, to confirm this is using ConfigMgr 1910 using subnet-directed broadcasts for WoL.

4 years ago

Nice article.
Be careful when using the WOL feature on large collection though. I have an open case with Microsoft because this functionality is soaking my fast channel for hours when used with more than 150 – 200 computers collection. The dev team is still investigating and I'm expecting news from them in a few days.