[SOLVED] UEFI Setting to disable S0 Sleep

This seems like you’re finally engaging with my actual argument, so thanks for that. Why do you think that MS would do that? Again, my suggestion/request here has only been that they provide users an option to disable S0, not that they make this the default behavior.

How would it affect anyone who doesn’t toggle the setting?

I’m working on it.

Yeah, I’m learning this. :frowning:

I believe you invoke it manually with Start → Power → Sleep.

For me, with the S3 registry hack, it takes an unusually long time to come back to life (~12-14 sec, vs. e.g. ~4 seconds for my old Thinkpad), but it doesn’t appear to be going through a boot sequence when waking, as it does with hibernate. Also, it requires an extra keypress / mouse movement to wake the display. So I think it is actually some sort of sleep–probably S3–just badly implemented. (IDK who’s at “fault”–e.g. MS/Windows, some firmware, some driver, Intel, etc.)

Additionally, when waking from (presumed) S3, it does a terrible job of rediscovering my USB-C dock and its connected resources, requiring 2+ disconnect/reconnect cycles. So this may not even really be usable for me.

Ah, I misunderstood that part then. If it were the default behavior it would impact Linux users. As for MS…why do they block S3 sleep at all? Perhaps they would take no action at all or remove FW from authorized distributors of Windows or blacklist the PK or whatever. I’m for user freedom but I’d rather they put the engineering dollars into Coreboot than paying Insyde to develop that feature. It’s not that I’m opposed to what you want per se, just that I think you bark up the wrong tree as it were.

1 Like

Well, I retract my vote for the feature request (for BIOS to prevent modern standby).

On further reading, I’ve found several claims (1, 2, 3, 4) that Intel and AMD have removed support for S3 sleep in their newer processors/platforms, and that supposedly S0iX states (“modern standby”) are to be its replacement. I’ve not yet found a clear admission/explanation of that from Intel or AMD, though.

However, it’s so obviously not a suitable replacement. No one at Intel ever put their laptop to sleep and put it in their backpack when they were considering these changes? Standby and sleep do not mean the same thing.

I don’t need “instant on” from a proper “sleep” state. What I do want from it:

  • Silent and safe to block airflow
    • All moving components stop - especially fans
  • Quicker entry/exit vs. hibernate (S4 / suspend to disk)
  • Wakes only when I tell it to; not when the OS does because it wants to do who knows what tasks that it just. must. do. immediately–NO, they can wait until I wake it

(Modified from source.)

I don’t need, want, or expect my laptop to behave like a mobile device. It still doesn’t, and can’t, even with “modern standby”. I’m not saying there’s no use for it, but at least Microsoft’s implementation really sucks, in that sleep isn’t sleep anymore.

I suspect/hope that various Linux distros have saner “sleep” implementations, i.e. enter and stay in S0i3, fans off, until actually awoken by the user.

[/rant]

1 Like

I disabled s3 sleep in the command line, but the issue persists for me. I found my laptop with a dead battery today after closing it while it was plugged in. A bios toggle would really help still. How do I ping the moderators to undo the “solved” label on this topic? It’s not solved.

@Wrenly_Bewick You don’t need to be a mod to change the title. I’m the one who did it. You can ping mods by typing @ moderators (space included to avoid pinging). The topic is about enabling S3 not disabling it as you are trying to do. Either sleep state supports charging while asleep so I’m not sure what your issue is but I think it isn’t as simple as changing sleep states. Read through the topic. Your complaint lies with MS not FW. The issue is marked as solved because it isn’t an issue with FW.

1 Like

Thanks for the clarification regarding the title change! I don’t have regular status yet, so I cannot personally do that, but the info is appreciated nonetheless.

I’m afraid that the topic is in fact about disabling S0 sleep from the firmware. Microsoft has gone out of its way to eliminate the capability to disable S0 sleep and force enable S3 sleep, despite the issues with the later. In addition, the peculiarities of S3 vs S0 sleep are particularly important for Linux users. A UEFI/ BIOS firmware toggle would help better support and reduce issues with both Windows and Linux alike.

All this would require would be a UEFI firmware update, and Microsoft wouldn’t need to be involved.

1 Like

These are not the same. I’ll grant you a toggle would be helpful I just hate asking FW to fix something that is is wrong with Windows. Linux users can switch between S3 and S0 much more easily.

I don’t think anyone is putting blame on Framework though? This seems to be just an innocent feature request that would be helpful to a lot of the community! There’s nothing wrong with asking as far as I can see.

2 Likes

No, there isn’t. Given the limited resources, I just prefer advocating for other things, like Coreboot.

And removing that option actually makes sense, because the only thing that changes is a single bit in the ACPI tables the BIOS provides and that bit is literally defined as “S0 sleep consumes less power than S3 sleep” and Intel has since removed official support for S3 on mobile CPUs.
Of course, it would be easy to flip that bit with a BIOS option, but why risk it, when there are enough reports out there of things breaking with S3.
Also, modern features like wake-on-fingerprint cannot be implemented on the existing Framework HW with S3, because instead of the OS being able to instantly wake and handle the fingerprint, you’d need either additional separate HW that can validate fingerprints autonomously or a 2-step process where you first wake it up, wait for the lock screen and then touch the power button again for the login.
Framework probably also cannot guarantee S3 working, even to the current (lacking) level, in the face of security, ME, driver and Windows updates without official support from Intel.

The problem rather is, that Windows does not give us options to control what it does during S0 sleep, because the whole point of S0 sleep is, that that is now under OS control and not HW. It would be quite easy for Windows to disconnect from WiFi and wake up for nothing other than what traditionally wakes it from S3 (keyboard, mouse) if the user so desired. If the bit is actually accurate, then S0 sleep poses no problem by itself. So, be angry at this decision from Microsoft, not HW using new methods that reduce complexity and provide more options without any disadvantages (unless somebody actually has numbers showing, that the bit is lying, and Intel’s CPUs and reference board designs cannot be more efficient in S0 sleep than in S3, as long as the OS does not do additional things in the background).
As long as it is not just FWs board design that consumes too much power in S0 compared to S3, even though Intel has designs that don’t, this cannot be FWs fault or even under their control, without risking huge amounts of customer complaints when S3 could break randomly or permanently with any newly released update.

3 Likes

I’m afraid I firmly disagree with your stance. As time goes on, I keep finding my laptop drained after sleeping. The option in the registry and command line has no effect. I keep finding my laptop drained even when S0 sleep is allegedly disabled. That’s why I want a firmware toggle. I am a power user, and I can troubleshoot these kinds of things. Anecdotally, the kinds of people who buy framework laptops should be exactly the sorts of people who can figure these things out. It frustrates me that such a simple addition to the firmware poses such opposition…

Reviving this thread slightly with this same problem. I have a 13" AMD with Win11. I sleep it often, usually after classes or during work, so most of the time i sleep it for either a day or a few days (throughout the weekend) depending on what’s going on. Very very often after I sleep the laptop when it has a decent amount of charge (or full), when I wake it up, the battery is very low or outright dead (causes a hard shutdown/loss of work). This has been happening for the past few months, I just started investigating it yesterday.

I noticed yesterday that it uses S0 Sleep + Network Connectivity (aka Windows Modern Standby). I used a registry key to enable the Power Options in Control Panel’s settings for it to disable network connectivity.

C:\Users\iraven>powercfg /a
The following sleep states are available on this system:
    Standby (S0 Low Power Idle) Network Disconnected
    Hibernate
    Fast Startup

The following sleep states are not available on this system:
    Standby (S1)
        The system firmware does not support this standby state.
        This standby state is disabled when S0 low power idle is supported.

    Standby (S2)
        The system firmware does not support this standby state.
        This standby state is disabled when S0 low power idle is supported.

    Standby (S3)
        The system firmware does not support this standby state.
        This standby state is disabled when S0 low power idle is supported.

    Hybrid Sleep
        Standby (S3) is not available.

    Standby (S0 Low Power Idle) Network Connected
        Connectivity in standby is disabled by policy.

Fast forward to today, my battery was around 89% when I slept it and put it in my backpack, and returning to it was 23%. A powercfg /sleepstudy report shows this in greater detail but with no telltale signs of what is drawing power:

The registry key override mentioned earlier in the thread “PlatformAoAcOverride” = 0 disables S0 however no Standby states are available to the system then (having me Hibernate every time I want to “suspend”.)

I dislike how S3 is disabled/not implemented via the firmware/BIOS at all, because I keep having to charge this laptop very very often due to this sleep drainage issue. Very inconvenient. (My older laptops (ThinkPad X270, X230) did not have this issue as they fully support S3 sleep states, and I’ve been doing this regular sleep pattern for as long as I can remember. I rarely shut down unless for special circumstances.)

I can provide more information as requested, however the message of this thread is clear enough. Let me know if any of y’all have further questions.

I’ve never liked S0 sleep myself, there are too many problems with it across various manufacturers. I tend to use Hibernate as an alternative, which stores everything on the hard drive and shuts down, placing you back where you left off without difficulties, for me.

For an example of S0 sleep being inconsistant, on my Asus TUF A15, if I use this, my computer will have run its battery down in fifteen hours, and if I place it in a bag it will be a little warm, indicating the CPU is not in fact asleep. This is with various settings enabled to allow windows to power down devices to save power. However, on my AMD Framework 13 with only USB-C expansion cards, sleep mode will be quite reliable for me and will probably allow my computer to sleep for days.

I’d also like it if S0 sleep could be disabled without disabling it in windows and making sleep unavailable completely. Sadly, this might not be possible/supported on newer CPU’s or motherboards, depending on how firmware or otherwise are configured.

You can dislike it all you want, It was a AMD & Intel decision to remove S3 from mobile systems. Its not coming back.

And you are complaining about the wrong thing. Windows still may say connected standby in there, but in actuality, if you check, Windows should be doing disconnected standby on battery by default anyway, ever since they removed the public options to choose connected (back on Win10).
If your WiFi card remains connected in battery standby, that is likely your WiFi card doing this itself. Which is what the Intel AX210 does and can be configured for it. It does that to remain “wakeable” and for quicker connects. And in my experience its irrelevant to power consumption anyway, but you can turn this off on the WiFi driver.

Then, S0 power consumption: the point of it is, that it does not need to consume more power than S3, it just manages more things in software and is thus way more flexible, forwards compatible and allows new features. Fault with its power consumption here lies with Windows, because it likes to wake up and check some things, which increases the average power consumption over not waking for any background work. And then, it seems Framework laptops are just not efficient at sleeping and we do not know where the power goes. But that is not about S3/S0. Its about all the components and boards that do consume power.

Also, your Windows must be broken, because by default, Windows will go from Modern Standby to Hibernation, once 5% of battery budget have been consumed. Windows should only sleep forever, if its connected to AC power or if somebody messed up the default-hidden settings.

In the past, many notebooks had the problem, that Windows missed them transitioning from AC to battery while sleeping and then stayed in sleep forever. This seems to be partly a Windows bug and also influenced by firmware. Because my Dell XPS 15 still has that problem till this day, while my FW 12th never had this problem. So I am betting this is all about events the firmware causes on battery state changes not matching what Windows expects to get. And it seems FW has that under control.

Also 2500 mW is super heavy. In that entry, it should absolutely tell you which components / drivers consumed that / kept the system awake. My FW 12th is at 400-300 mW (if it sleeps long, it averages to 300mW. Because Windows takes many seconds to actually power down and wakes more often at the start, which drives up the average).
Other notebooks can be below 200mW, which would match my older S3 devices.

All energy should be directed at finding the broken software and hardware that consumes the power and complaining at the responsible parties to fix it. And for more control in Windows how much background work to do, because a correctly configured Linux will currently beat Windows’ average, by simply not waking up at all.

S3 is more efficient than S0 by definition, in S3 sleep, the CPU is powered down, in S0 sleep it’s not. No matter how efficient S0 sleep is, it could only approach, not reach or exceed, S3 efficiency. The reason that S0 approaching S3 is the CPU power management, desktop and older laptop’s CPU frequency are limited, while modern laptop can underclock by a large amount and cores can be “parked” at C6 state, further reducing power consumption. Thus, modern standby can approach S3 efficiency, at least in theory. In practice it depends on software upon idling, on Linux, S0 consume 10% to 20% more power than S3, on Windows that loves to run background tasks on full tilt, the power consumption can be a magnitude if not several magnitudes higher.

The difference is in who controls it. S3 is external control. With only a very coarse interface for the software to manage states. So its either on or off.
Modern Sleep centralizes this management inside the CPU. Rails no longer will be powered off as part of sleeping, but the CPU may power down almost/basically as much, depending on which peripherals and parts are still kept active by software and needed.

This allows the OS to save slightly less power then S3, while still keeping peripherals and network active depending on the situation. If no peripheral is kept awake for additional functionality, the system can power down basically as much.

And because its integrated into the processor, you do not have cumbersome interfaces with BIOS/firmware during wakeup and putting to sleep that vastly increase the latency and limit the sources you can use for wakeup. In S3, BIOS/Board design controls if USB ports are powered or not. In Modern Standby, the OS does.

There were additional power modes modes defined, Intel calls them S0ix where the CPU powers down similarly to S3, if its not needed.

The ACPI bit that Windows uses to decide between S3 or Modern Standby, if the system reports both (11th gen and 12th gen do) is literally defined as

Column 1 Column 2 Column 3 Column 4
FACP - Flag Bit Length Bit Offset Description
LOW_POWER_S0_IDLE_CAPABLE 1 21 A one informs OSPM that the platform is able to achieve power savings in S0 similar to or better than those typically achieved in S3. In effect, when this bit is set it indicates that the system will achieve no power benefit by making a sleep transition to S3.

What frequency? You realize that 99% of the CPU will be powered down and have its clock disabled during sleep either way?
There are just more intermediate states with Modern Standby, that are processor-managed to ensure entering sleep states quickly without large exit penalties.

The whole point was to give the OS granular control. So yes, it depends a lot on software. If linux consumes more, that is because Linux and its drivers are not powering down peripherals as much as they should. Like modern desktop distros still hard-disabling any USB sleep etc.

But we already had examples where FW13 AMD users saw less power consumption under Linux than under Windows.
Because current Linux desktop distros are not designed for Modern Standby with granular control. If the system receives a wake signal, the entire system will wake up, just like from S3, including powering on the screen. That is why for Linux most wake events are currently disabled.
This makes Linux miss the battery discharging or running empty.
Because the design intends for such small events, such as plugging devices, changing power state or whatever the OS wants to wake the OS, which can then decide if this was sth. the user needs to see and wants to interact with the device or just some background work.

Linux can do this perfectly fine on Android and other power saving mobile devices. Its just the current desktop architecture that is not smart enough for that decoupling of the processor and OS waking up and the user interface waking up. But on the other hand, its a deeper sleep in the meantime.

Windows seems to do that part pretty well unless some driver is unstable. But when it wakes up for such management reasons, it will also do some high level background work that takes it multiple seconds, that worsens the power consumption compared to current Linux systems, if the drivers can power manage on par with Windows.

Edit: to be clear, on a processor level, you cannot do more than just cutting power to everything unused. Power efficiency is about the whole platform. Where Modern Standby is what is being developed for (at least on mobile systems). It may be necessary or part of the design of the system for what can wake the system etc.
For example, I can force my 12th gen into S3. Keyboard, Touchpad and Fingerprint Sensor stop working as wake events, because the design expects the OS drivers to manage this. And the power consumption does not actually go down. Because for example the WiFi card is still powered, because with modern standby, it will not have its power cut, but turned off by the OS. If the OS does not know it needs to manage this, it may not turn it off during sleep, expecting S3 to cut power or BIOS to do something about it. But stuff like this is allows the OS to do stuff that it could not do with S3. Like keeping the network connection alive and waking when needed, per situation, while still sleeping in the meantime.

So it can absolutely make sense that the platform is better off with Modern Standby than S3. Especially because neither Intel nor Framework tests for S3, even if somebody was lazy and left the systems still reporting S3 support (which seems no longer to be the case with current AMD systems).

1 Like