[SOLVED] UEFI Setting to disable S0 Sleep

TL,DR: Please add support for disabling S0 sleep in the UEFI in order to conserve battery. Windows 11 has a bug that is liable to drain your battery when it’s enabled! EDIT: I fixed it with a registry edit

A recent Linus Tech Tips video regarding Windows modern standby raised some issues with Windows 11 sleep. Many new laptops are mysteriously waking up hot to the touch with a dead battery, despite having been fully charged and put in sleep mode. This is something I want to avoid at all costs if I can.

New laptops have a feature called “S0 sleep” which allows them to remain slightly on and connected to the internet when in sleep mode. This allows Windows to update while it’s sleeping so you don’t have to remember to do it yourself. However, there’s a bug. When the laptop is plugged in, the laptop will be connected to the internet while in sleep. Meanwhile in battery mode, the laptop is supposed to be disconnected from the internet. Linus speculates that if the laptop is put into sleep mode while plugged in, and then the AC adapter is removed, it will remain connected to the internet as it drains battery.

The old sleep mode, S3 sleep did not have this problem. From what I understand, the mode does not support connecting to the internet while asleep. So long as S3 sleep is supported by a motherboard, this would make a great workaround to the S0 sleep issue. Unfortunately, due to many vendors not supporting S3 sleep mode, Microsoft has removed the ability to change the sleep mode, even through registry edits! The only way to change to S3 mode is to disable S0 sleep on the motherboard.

EDIT: A registry edit worked for me after all

Fortunately, framework laptops do support S3 sleep mode! However, there is no toggle to disable S0 mode. Because of that, Windows 11 refuses to use S3 even though it’s supported. I attempted to disable S0 sleep via changing the “enable 8254 clock gate” to all three options (enabled, disabled, and enabled in runtime and s3). Regardless of the choice, S0 sleep remained available.

I hereby request a new version of the UEFI firmware that supports disabling S0 sleep mode. The video says that some laptop firmware supports doing so. Upon adding this feature, it will be possible to bypass the issue and use old school S3 sleep mode for the sake of legacy compatibility and battery life!

Update: These are my powercfg results. Note that Standby S3 is listed under “not available” with the message “this steady state is disabled when S0 low power idle is supported”:

Update 2: I managed to switch to S3 sleep via a registry edit suggested by another poster. Please see their post for more information!

4 Likes

This is already possible

You may have heard in that video that FW laptop already supports S3 sleep

You may need to perform that registry edit to do so but Linux users have been using S3 no problem

1 Like

How do I do it then? I looked for a guide but couldn’t find one from googling…

@Wrenly_Bewick, see here: High Battery Drain During Suspend (Windows edition) - #175 by Xiaoling_He

1 Like

Unless I am mistaken, Microsoft changed things so that the registry edit no longer works…

UPDATE: The registry edit worked!

2 Likes

It does did not work for me. [EDIT: update.] I have the 11th Gen Framework.

[EDIT2: request retracted.] OP, please restore the request in your first post for Framework to give us the ability in the UEFI/firmware/setup (nee BIOS) to disable S0 / “modern standby”. It is more likely to continue allowing you to be able to suspend to RAM (S3 sleep), compared to relying on some particular registry hack that the Microsoft overlords haven’t borked yet.

(And they are likely to do break it, considering the other options already removed. Maybe they already have, and your PC just hasn’t gotten the memo yet.)

@bmcdonnell It is available, Framework is not blocking it in any way. I also have 11th gen and could, if I so chose, disable Modern Standby. The issue for you is Windows, not Framework. The FW laptop supports S3 sleep.

1 Like

What is available? The option to disable S0 modern standby in the “BIOS”? If so, could you please tell me where to find it? I don’t see the option (running v3.10).

To be clear: I understand that Windows disables S3 sleep when S0 “modern standby” is available. I want to be able in the BIOS to make S0 unavailable to the OS, so that Windows will have to use S3 (suspend to RAM) for sleep.

@bmcdonnell S3 sleep is available. You can use it. There isn’t anything for Framework to do to enable S3 sleep. It is your OS that has it disabled, that’s a Windows issue, not a FW issue.

Please explain how I can use it with Windows, since the registry change referenced above is not working for me.

@bmcdonnell I haven’t got an answer for you. There are threads about it on the forum. Some threads mention that Intel nuked S3 on 11th gen and so nothing can be done to enable it. My own experience on Linux suggests otherwise. I’ve enabled S3 on Linux before (not currently) and if it weren’t supported by the processor then I shouldn’t be able to do that. Even the Linux Battery life tuning guide suggests enabling S3.

If the registry hack isn’t working for you, then I don’t know what to tell you. But there isn’t anything FW is doing to block S3 from use so there is no point complaining to them about it.

@bmcdonnell - I just tested this on an 11th gen running windows 11 and the registry edit worked. Make sure to run regedit as administrator, and that you add a dword 32 bit value. Then close regedit, reboot, and you should see standby (s3) available.

Good luck!

2 Likes

I did. It isn’t. [EDIT2: see update below.]


EDIT (winver):

I never claimed Framework is “blocking” anything (least of all S3). Windows by default prevents use of S3 when S0 is available, and MS is making it increasingly difficult to utilize S3 (when S0 is available). As explained in the LTT video (link in OP), MS has iteratively removed several easier ways to enable S3. How long until they break this registry hack, too? Or have they already, partially?

You could tell me you understand my initial suggestion that if Framework could provide us an option in the UEFI/BIOS/firmware to prevent the OS from using S0 (not S3), then we’d have the most reliable way to force Windows to use (fallback to) S3 for sleep.

Instead of arguing against this feature request, which would presumably be no skin off your back.

@bmcdonnell - see it any of the other steps in this article help: https://appuals.com/disable-modern-standby-windows/

Hopefully one of them works. If so, please do let us know what the magic formula was.

Good luck!

Ugh. Well, I still think the retracted feature request from the OP is worthwhile. But I did get the registry hack working.

Apparently I had included a stray character (space or backtick) when I copied and pasted the registry key. (You can’t tell from the screenshot.) Deleted, recreated, rebooted, and it works.

Apologies for the confusion.

2 Likes

@bmcdonnell - thank you for the follow up, and glad that you got it working. Have a great evening (or day, or morning, or whatever is appropriate in your neck of the woods)!

Sounds like a good way to get MS to blacklist FW from getting PK keys and breaking Secure Boot. Whether you like it or not, MS has power here. Besides, your “cure” would impact Linux users as well, an undesirable behavior for me at least. If you don’t like what Windows does and it pisses you off so much…don’t use Windows. Use Linux or Mac. I’m not trying to be a jerk but asking FW to fix what MS does is ridiculous.

1 Like

If I may interject, I do support adding a UEFI toggle to disable S0 sleep. It’s my understanding that more than one UEFI supports that already, so why would Microsoft go after it?

1 Like

Seems at first glance like a good idea to add a toggle to BIOS, since theoretically it’ll force Windows to use S3. But as of right now S3 performs worse than hibernate…

1 Like