Most very recent laptops no longer support S3 sleep which used to be the default for a long time. On my old laptop it allowed me to just close the lid in the evening and open it again in the morning, and it would only loose a negligible amount of charge during that time.
My new laptop (Dell Inspiron 14 Plus, Alder Lake) uses s2idle by default on Linux (Fedora in my case), which depletes the battery very quickly. I tend to shut down my computer every evening now, but even when I just put my laptop in my bag for 2 hours it will have lost 10-15% when I get it out. It’s not terrible and I have gotten used to using my laptop like that but there’s got to be a better way right?
I know hibernation / suspend-to-disk is an option in theory, but I use secure boot (and also disk encryption), and that makes it a lot more complicated, involving compiling your own patched kernel, so no thanks.
The way sleep on modern laptops is supposed to work is apparently called S0iX but it is not used by default and I don’t know if or how I could make use of it on my laptop, and a guide that is linked everywhere on 01.org now just redirects to some generic intel site.
If you have a recent laptop without S3 sleep support, how are you dealing with this? Do you just live with the poor battery life, or is there some secret to getting more power saving sleep on modern machines?
Edit for mare clarification:
- The laptop does enter s2idle correctly, it just doesn’t get down to a very low power state at all and consumes ~5% an hour
cat /sys/power/mem_sleep
only returns[
, no deep sleep is supported. ]echo deep | sudo tee /sys/power/mem_sleep
doesn’t work (tee: /sys/power/mem_sleep: Invalid argument
)- There’s no option in the BIOS to enable other sleep modes
- I’ve even tried patching the ACPI table myself to enable S3 sleep and it didn’t work. I have no idea if I did it correctly although according to dmesg it did seem to load my patch
Thank you all for your input but it looks like on this Dell laptop I’m stuck with horrible s2idle sleep :/
Sucks to hear that. I hoped that mjg59’s/Google’s Chromebook hibernation code would’ve made it into the kernel by now. Disk encryption shouldn’t pose too much of a problem, though, as long as you put the swap partition in the same encrypted container (i.e. swap+root fs inside LVM inside LUKS).
My experience with any method of sleeping is that it’s extremely dependent on specific hardware and drivers. My laptop loses a few percent of battery per day, my Steam Deck even less. However, if I leave my Nvidia GPU in use while suspending, the drain massively increases because of what I presume are Nvidia driver issues. Forcing components into a low power state (yay for
powertop
) may help, but that may as well be placebo. I personally don’t really notice the drain or care all that much.I have explicitly enabled S3 sleep rather than S0iX because S0iX tends to turn on the computer in my backpack. It could just be a Windows thing, but although S0iX provides a better experience, I’ll take the small percentage of battery drain over taking a piping hot, drained laptop out of my backpack every time.
If you’re experiencing power drain, double check if your system is actually using your preferred sleep method. It should use the most efficient method supported; my computer reports
s2idle [deep]
in/sys/power/mem_sleep
(support for s2idle and deep sleep) but it’s possible that your computer somehow got misconfigured. The method in square brackets is the default sleep method/the method used next time you suspend your laptop and you may need to alter it (echo deep | sudo tee /sys/power/mem_sleep
).