In this article, I aim to take a different approach. We will begin by defining a laptop according to my understanding. The I will share my personal history and journey to this point, as well as my current situation with my home and work laptops. Using this perspective, we will explore the current dysfunctionality of the standby function in modern laptops, followed by a discussion of why this feature still has relevance and right to exist. Finally, we will draw conclusions on what we can learn and take away from this.
I have an older XPS where where the CPU still supports deep sleep (S3).
Most distros have it disabled by default now because neither AMD not Intel seem to officially support it in new CPUs (so windows will have the same problem)
To check if your cpu supports it, you can run:
journalctl | grep S1
You should see a message that says something like CPU supports S1 S2 S3 etc. if S3 is there then deep sleep is supported and can be enabled.
Ubuntu instructions: https://askubuntu.com/questions/1029474/ubuntu-18-04-dell-xps13-9370-no-longer-suspends-on-lid-close/1036122#1036122
Fedora desktop or atomic instructions: https://discussion.fedoraproject.org/t/laptop-appears-to-sleep-but-not-suspend/77193/4
Note, this is purely the fault of CPU manufacturers for being so shitty about proper sleep and yet another point that has to be conceeded to apple. Imagine explaining to a normal person that your XPS is really good and way cheaper than a Mac…but the batter will die overnight when you need it in the morning. Literally just shooting themselves in the foot.
Hibernate works as well but takes a bit longer. Hibernate also crashes in many modern systems but again works great in my older XPS. You have to manually activate this as well and it’s really not to bad with a good ssd.
That being said his should all be very basic functionality so why do I have to do this manually. This shit is why people buy Macs.
There’s also room for distros to improve here. The installer can probe the CPU and see if S3 is supported, if so it can use deep sleep automatically. Why do I have to mess with Kernal arguments?
Similar for hibernate, why doesn’t the installer just have a check box that sets up the hibernate file/partition?
deleted by creator
S0idle is a real problem.
Years ago you put your laptop in sleep S3 mode at 5PM, put in the backpack, resume it at 9AM the next morning and it lost maybe 10% battery.
Now S0idle is like a cellphone, always powered, so you put your laptop in a backpack, windows/Linux half support a botched S0 so some devices are still powered, either your laptop overheat or dies because battery reach 0% during the night.
This. S0idle was pushed by Microsoft and Intel and amd followed. Now all new non apple CPUs are an embarrassment when it comes to sleep ability which essentially any normal person would expect without thinking about it so when they buy a brand new laptop and it ends up with a dead batter every morning people immediately just buy a Mac and get a much better experience.
Just completely shooting themselves in the foot. Same story with shitty laptop screens for nearly 5 years while Macs had retina displays.
Where can I find beforehand which laptop supports S3? Are there any know brands that do?
Nothing with a recent AMD gfx Card or APU will officially support S3, and I think Nvidia is the same. Just because it isn’t supported doesn’t mean they’ll intentionally break anything, but over time you’ll have more and more bugs related to it and one day it will break and never be fixed.
Personally I use S4 (hibernate) more or less exclusively.
S3 (hibernate) is conspicuously absent in many distros.
S3 is standby. Hibernate is S4
See my post here
Unpopular opinion: the only vendor that does sleep right is Apple. The only reason they can is the tight vertical integration of the platform where they control all the hardware, all the drivers, and can exercise control over all the applications in the App Store.
More open platforms are essentially fucked.
It’s not an unpopular opinion that Apple is the only one that does sleep right. It is an unpopular opinion that this is only possible because they have a complete walled garden and that open platforms are fucked, especially considering it is easy and common to install applications from outside the App Store on macOS. We used to have sleep figured out, that’s what S3 was. But then hardware vendors dropped it. So yes, drivers and hardware vendors are part of the problem. The Steam Deck is an example of an open platform where sleep works fine.
100% this. Sleep on Linux is perfect in my older XPS (after I manually enable it). Lots of reports of it not working on newer laptops.
While I agree it doesn’t have to be a walled garden, you do have to admit that apple wouldn’t ship a laptop that couldn’t sleep properly. They are so much better at real world design than other manufacturers who were happy to abandon s3 in favour of making laptops into phones as if anyone actually wanted that.
Sleep is hit-or-miss even on System76 laptops. Dead simple on my XPS, though.
What generation do you have? I have an XPS-15 9560, it doesn’t seem to have it enabled.
I mean, that’s fair. It’s certainly not a technical impossibility to get it right and keep getting it right.
Lol what is s3?
To be fair to you, I thought they were talking about AWS S3 at first and was very confused until I read the article.
Exactly
Edit! I’m wrong! Read below comment
A hibernation state where your laptop completely powers off saving current ram to disk to resume from when the system is powered back on. The article is a pretty interesting read!
S3 is what people actually think of when they think of sleep mode, or modern standby. The running state of the operating system is stored in RAM, in low power mode. All context for the cpu, other hardware like disks and network is lost and those devices are completely shut down - bar the RAM. Basically, you close the lid at the end of the day, and you’re nearly at the same charge level the next morning.
This saves a lot of power. On my older 8th gen intel cpu laptop, it loses maybe 1-2% charge per day in this mode.
My new 13th gen laptop still has deep sleep, or standby (s3) as a hardware function, but it’s technically not supported. It actually doesn’t work when enabled, and just falls back to s1 (sleep, everything’s still on, just in low power mode). It loses about 2-3% per hour in this mode
S4 (Hibernate) does roughly the same as S3, but the OS state is stored to the disk instead of ram, so that can be shut off too. Now the device is completely powered off, losing no charge while ‘asleep’.
S5 is off
S4 sleep takes much longer to wake up from than s3, so was less desirable. In the modern computing world (especially end user devices), commonly there’s full disk encryption going on, which adds a layer of complexity to resuming from disk, as you would when waking up from hibernation (s4).
Making it resume without putting in a decryption password for example (using a TPM), isn’t simple, and breaks a lot when you do system upgades
Is that what the Steam Deck uses? It’s pretty useful.
I wonder. The Steam Deck holds charge very well, but then another comment here says “Nothing with with a recent AMD gfx Card or APU will officially support S3”. Perhaps the Steam Deck uses hibernate? It launches pretty fast, but then maybe storing memory to the built-in SSD is fast enough. Or perhaps even if not officially supported the S3 in the Steam Deck’s APU still works well enough. Or perhaps the APU is older than I think it is.
In windows 10 you can reenable it, but you have dig a bit in the power management control panel to do so.
Its unfortunate that this thinking has bled over to Linux.
Sleep in RAM, meaning only the ram is powered/refreshed, everything else like cpu or SSD are unpowered.
The S3 “sleep state” of the computer. Which I guess is sleep. There sre other numbers for running and off I think.
Ty all 4 replies. Now I know 👍🤗
This is the result of Microsoft being so cozy with hardware vendors.
Yo, setup hibernation and use hybrid sleep as your default sleep.
ln -s /etc/systemd/system/suspend.target ../../../usr/lib/systemd/system/suspend-then-hibernate.target
Now any sleep is hybrid. The machine suspends, then wakes up after a timeout, and enters hibernation. The timeout is configurable in
systemd-sleep.conf(5)
.With this combo I find that I prefer S0 to S3. S0 drains the battery about twice as fast, sure, but it resumes instantaneously, while S3 takes about 30 seconds (!) to resume on this machine. And the thing hibernates and powers off if I leave it for an hour anyway.
Hybrid sleep is the way to go but my dell xps wakes from s3 in less than 5s
@JRepin Am I the only idiot who uses
systemctl hibernate
with a proper swap partition? Works perfect every time I’ve set it up.You are not the only person. However, even hibernation mode isn’t a sure thing anymore.
@drwho Whatcha mean by “not a sure thing”? Is there some issue with specific hardware, or configuration?
@Lem453 Everything on that page refers to configuration problems. Most of them inferring a misunderstanding (or complete disregard) of the requirements that need to be implemented prior to configuring suspend-to-disk in order for it to work properly. Both the gentoo, and arch wikis have very thorough instructions on how to successfully incorporate this feature.
I mean, even then it might not work. I’m wrestling with it right now (Lemur Pro 13 from System76) and from plain old suspend mode the machine still wakes up randomly (it pops up on my monitoring network as active, and can even be SSH’d into when it’s supposed to be in lower power mode). Also, suspend-to-disk hibernation only resumes correctly about 13% of the time (I’ve been keeping stats while debugging it).