You may have noticed that the sleep mode your PC has is different from that of your smartphone.
When a PC “sleeps,” that term has typically meant to go to “suspend-to-RAM” mode, also known as S3 or standby (now renamed “legacy standby.”) When it is in this mode, it’s oblivious to the outside world until a hardware event brings it out of S3. It could be a press of a key on a keyboard, a packet being sent to its IP on the LAN, or an internal wake timer, but it’s always some outside thing that wakes it. It isn’t capable of waking itself programmatically, as there are no programs running. They’re completely halted.
Phones, of course, are not like that. When you press the little button that turns off the display, it’s not sleeping in the S3 sense. If it was, it would not be able to alert you when one of your posts on Facebook got a “like” or if a Snapchat came in (not to mention “old-fashioned” means of communication like email). Sometimes this “not really sleeping” bit can even help keep you safe.
If you have your phone set to alert you when, for example, a tornado warning is declared for your area, the phone can compare the tornado warning area to the preset “home” location or to the current location of the phone, and if there’s a match, it can alert you.
None of this functionality would be possible if the phone went fully to sleep.
Microsoft, which in the Nadella era seems to believe that PCs are but large phones, decided that this kind of functionality should exist in PCs as well. Such was born the S2idle specification, currently supported by both Intel and AMD. According to Microsoft, this would allow select system processes (like Windows Update) and Microsoft Store apps (!) to run while the PC is “sleeping.” It allows the PC to remain associated with its wifi access point, but with the wifi adapter in a low-power state that will allow it to instantly send or receive data without having to re-authenticate with the access point. It can even send and receive data while asleep, which is how apps like Snapchat or Facebook are able to send you notifications that something happened while the device is sleeping.
The downside to this is obvious. A CPU that is completely asleep will use less power than one that’s waking up to process certain system processes and demands of various apps. The more time it spends active, the more power it will use. With S3, you know what processes are active– none of them. But with S2idle, how do you really know, let alone control, what processes are able to become active while the PC is sleeping?
Many people have complained about phones that seem to drain the battery quickly while “sleeping.” Sometimes this is a function of the battery having aged and lost some of its capacity, but not always. In Android, there’s no clear line between an app that is active (like Firefox is now on my PC, which I am using to enter this post) and one that is inactive. When one leaves one app to use another, the first one remains in the background unless the system needs the RAM, and often apps that you haven’t even run since the last reboot (that you might be led to believe are not active) will send you a notification of some thing or other (often trivial in nature, like a game telling you that your energy has recharged and it’s ready to play).
That does not seem ideal to me. I’m not a smartphone person… I have one with AOSP (degoogled), but mostly I just carry it around without ever hitting the button on the side to wake it the rest of the way up. When I do, most of the time, it’s to use it as a clock, and the rest of the time it is to turn on the wifi hotspot so I can use my laptop to connect to the internet when I am out and about.
Compared to my slider phone, the time my smart phone goes between charges is short. Even with a years-old battery, the slider could go the better part of a week, while the smartphone is dead in a few days. I don’t want any of the notifications… I don’t text, I don’t do social media, and I really don’t even use the phone. I wish my phone had S3 that would deterministically put the CPU into sleep mode and keep it there until I tell it to come back to life.
I am the same with my laptops. When I am at home and the power is connected, I am not really concerned about sleep… I have them set to stay awake when power is connected. On battery, though, closing the lid puts the unit to sleep, and I want it to remain that way until I am ready to use it again, at which time I will raise the lid (the hardware event to wake the unit).
As I recently discovered, though, my XPS does not have the ability to use S3. I find that shocking! How can the PC not be able to do a true standby mode? That’s been the standard for years and years.
I don’t mind innovation or trying new features. Why, though, was it necessary for Dell to remove the tried-and-true sleep mode? You can make some new thing the default without removing the old one. A simple setting in the UEFI would solve the problem and have zero impact on the OEM Windows setups that are set to use S2idle.
Microsoft, being Microsoft, does not allow one to simply switch S2idle to S3 in the UEFI… changing the setting requires reinstallation of Windows (as they do with changing some other settings, like changing the SATA mode from RAID to AHCI). That’s not a reason to remove the option to change the setting, though… the option to switch from RAID to AHCI is still there, even though switching it would supposedly break the preinstalled Windows.
I don’t really see the use case for a Dell XPS 13 laptop that would make the S2idle mode worthwhile. Does Dell they expect people to leave their smartphones at home and instead carry their XPS laptops (which do not come from the factory with a cellular modem, usually) around everywhere they go, waiting for the notification to come in so they know they got a SMS text or Snapchat? That’s how people use phones, not laptops, and I’d wager that any person who wants those alerts all the time is still going to carry a phone, and to use that instead of the laptop for responding to whatever the thing was.
So what’s the rationale for this in PC-land other than “phones do it like that, and phones are cool, so laptops should too”?
The claim from MS is that S2idle can deliver all of this added functionality while providing battery life that’s on par with what it would have using S3. I’d love to test that idea, but I can’t.
There are all kinds of reports across the web of people using S2idle-equipped laptops with Linux and having dismal power consumption in what passes for sleep mode on those units. The claims of power consumption comparable to S3 clearly are not a given. The alleged benefits of S2idle don’t, as far as I know, even exist on Linux, so this is a clear-cut regression in functionality, and it’s one that didn’t have to be. What’s more is that Dell does sell the XPS with Linux preinstalled as an option, so they can’t really hide behind these machines being intended for Windows. All it would take is an option in the UEFI to change “Microsoft modern/connected standby (S2idle)” to “Legacy standby (S3),” with a warning that changing this setting could cause a user to have to reinstall Windows, if that is what they would like.
Fortunately for me, the performance of S2idle is pretty good with Kubuntu 22.04 (5.15 kernel). I went to bed with the laptop on battery at 97%, slept 8 hours, then woke up and checked again. It had only gone down to 94%, or about 0.4% per hour, which is supposed to be on par with S3. Again, I’d love to be able to check that, if I could. But will it always be? Since S2idle does not deterministically stop all processes from running, I can’t be certain that what worked so far will keep working.
If I had Windows on this machine, I would not be using any “Microsoft Store apps” anyway, but that still would only offer partial protection from stuff running during sleep. Windows Update will also run during sleep, and if Microsoft decides to install updates at that time, then that will happen too. I don’t want it doing that when I am on AC power, but it’s even worse if it is using my battery capacity to do updates when I want to preserve the battery for, you know, my stuff.
Dell XPS 13/9310, i5-1135G7/16GB, KDE Neon 6.2
XPG Xenia 15, i7-9750H/32GB & GTX1660ti, Kubuntu 24.04
Acer Swift Go 14, i5-1335U/16GB, Kubuntu 24.04 (and Win 11)