To be able to wake up a PC from the S5 'shut down' state, the OS has to prepare the NIC during system shutdown. For Realtek NICs, this is done by the "Realtek PCIe GBE Family Controller" driver, but only if the option S5WakeOnLan "Shutdown Wake-On-Lan" is enabled. This setting is located at HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} in an unpredictable subkey between 0000 and 0012.

I have discovered that it's the driver's .inf file that controls what the default value for this option is, and whether it's even visible in the UI. In an old sample from 2008, the setting simply defaulted to '1' and was made visible for all models. Recent versions have categories for individual NIC models, like

  • [s5wol.reg] - visible and defaults to '1'
  • [s5wol.reg] - hidden and defaults to '0' (faulty? found in 2015-04-06)
  • [s5wolhidedisable.reg] - hidden and set to '0'
  • [s5wolhideenable.reg] - hidden and set to '1'
  • [s5wolhidetype2.reg] - hidden and set to '2' ?!?!

I have done a survey of the PCs I manage, and found that I'm dealing with all of the above. Initially, I just manually set S5WakeOnLan to 1 and it worked just fine, for over a year. A few old Vista PCs sometimes hang during power-on or reboot, which may be the reason why Realtek disabled it (or it might be caused by something unrelated). I was not able to find relevant documentation.

The problem is that everytime the OS decides to reinstall the NIC's driver (upgrade to Win10, driver update, every major OS Update which seems to be twice a year), the setting reverts to default, and the PC can no longer be turned on remotely. I have already had to fix this several times across all the affected WIn10 machines, and it's turning out to be an ongoing burden.

Half a year is enough for me to forget that this is still a thing, so when it does happen, it screws up my maintenance schedule, since I have to wait a day+ for the PC to be turned on physically, then patch the registry remotely, then wait again for the PC to be turned off and on, so that the registry change takes effect. I'd like to get rid of this issue, but so far the only workaround I came up with is a Group Policy Registry rule that shoves S5WakeOnLan = 1 into every one of those numeric subkeys.

  • I updated my dev machine from Win7 to Win10 about 2 weeks ago and couldn't get WOL to work since then (it still works with the Win7) and have been trying to get it working since then. Your regedit worked! I changed the S5WakeOnLan under CurrentControlSet from 0 to 1 and BINGO! Thanks! EDIT: Asus P9X79LE with Realtek GBE Ethernet. – user555303 Aug 3 '18 at 5:50
  • All win10 PCs at the office had their power options' "fast boot" (HKLM HiberbootEnabled) reset back to 'enabled' a few days ago, probably by another automatic windows update. This also breaks WoL and makes the PCs crash during boot. I'd watch out for that too. – theultramage Aug 3 '18 at 9:05
  • Oh, and forgot to mention. If your card is recent, the driver may be exposing the "Shutdown Wake-On-Lan" setting in the Device Manager UI. In that case, it's easier to just change it there, since it should make the setting persistent across driver updates. Your issue was probably caused by the win10 upgrade, since it removes all driver packages and deletes all settings. – theultramage Aug 3 '18 at 9:10

The long-term solution is to have Microsoft update the driver packages hosted on Windows Update servers, to versions new enough that they don't exhibit the problem anymore. As time passed, I have observed this actually happening, gradually. Today I concluded that all of my originally affected PCs now expose the setting in the driver UI. Some still default to disabled, but changes to the setting should now be retained across OS upgrades. So for me, the issue is resolved.

Though I still have no idea how to report faulty packages to Microsoft in a way that would get them fixed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.