Why is sleep so hard for laptops?
And it's crap across the OSes. On Linux laptops don't wake up from sleep, on Windows they keep waking up when nobody asks for it.
In our home office room there's three laptops. My private one running Fedora, my work PC that sadly runs Windows and my wife's laptop also running Windows.
My work laptop and my wife's laptop keep waking up wasting electricity, and my private laptop needs a hard reset to wake it up every second time.
That feature should be stupid simple, yet it doesn't work across the board.
Rant over.
164
Comments97
Never had these problems with MacBooks. It’s probably one advantage of the OS and hardware being made by the same company.
Agreed. For all the downsides people point out with Mac’s, they handle this and battery life quite well. My daily driver is a Mac, and everything I connect to runs some flavor of Linux. Then there’s the Windows 11 thing my work foists upon me.
That's fair, never had one, so I can't judge that.
Agreed, I disable sleep on all laptops other than my MacBook and my work laptop which manages to drain its battery and overheat itself on my bag semi frequently.
The MB has never had negative issues with sleep.
I never had problems with sleep. Neither with fedora nor suse nor arch
I wonder if the hardware you use is better supported for/by Linux.
Macs aren't immune to S0 sleep options. The Apple silicon CPUs are just so efficient that when it fails to fall to sleep it doesn't matter. Intel ones it sucks balls when it fails.
Even my Intel MacBook Pro slept like a champ. They aren’t 100% immune but 99.95% I didn’t have an issue compared to my work windows laptop which was like 25% sleep worked and woke up correctly.
Hell, why is sleep so hard for most humans?
Absolutely unfair, I tell ya!
Stop judging, at least I made it to bed. It's not my fault sleep can't find me.
Narrator: It was.
Sleep is easy, you just prioritized that 30 minute YouTube video
The problem is it's not stupid simple, it's actually fairly complicated. Each piece of hardware and its driver must be suspended. The GPU is a particularly tricky one. Its processor must be suspended, and the state saved. In the kernel, the driver must suspend its execution, and likewise save its state. Then on resume, each half has to reload and begin execution again. And if there's any mismatch in the resumed states, the GPU and/or driver crash and probably take the kernel with it.
Now do that for the Wi-Fi, Bluetooth, sound card, USB, disk controller, and every other device.
This guy sleeps.
What are you talking about? This guy dies and comes back alive every time!
No, that would be hibernation
On older Macs the light would pulse when sleeping in the same pattern as a human breathing while asleep.
Same here. The hardware is still great but there’s not as much soul in the designs.
I researched this in (checking notes) 2009 or so… things may have slightly changed since (and my memory is fading away)
At the time there was a standard for sleeping. Microsoft was part of the standard… and then they decided to implement in a different way (classic Microsoft, of course).
Hardware producers then adjusted to windows because… well… we were dozens of us using Linux on laptops.
This created issues in Linux because there were some purist developers that wanted to follow the standards, others that were more pragmatic and wanted to implement the windows way. In the end nothing worked.
Fast forward to today, windows waking up constantly I guess it’s broken as expected because it wants to allow background processes to do stuff. Linux not waking up sounds still the issue from 2009: there are multiple levels of sleep and the deepest was the most problematic. If I have to guess your laptop wakes up just fine if the battery is full and you left closed for few minutes… while it doesn’t when the battery is low-ish and/or you left sleeping for a longer period
It's waking up because another device on the network (probably router) is pinging it
Disable "Wake on Magic Packet" and the Windows sleep issue goes away
This kind of stuff must happen at hardware level… wake on lan is in hardware.
Ethernet cards keep in getting packets (arp at very least) even if they are not directed for them. If the OS needs to check all packages it would be always on
That said… wake on lan is also a waste of energy if you don’t need (why powering the Ethernet cards?)
The setting I am suggesting gets disabled keeps the card powered during sleep so Wake on LAN can work on a hardware level.
The OS isn't checking the packets. The NIC gets a packet and wakes up the OS.
I am not defending it, just explaining how to stop it from happening. A lot of people who know what Wake On LAN is don't know about Wake On Magic Packet
Yeah, but classic Windows move: it'll work for a while and then it will randomly stop working.
This was one of the big things that pushed me to Linux. Not feeling like I was the one in control of my PC.
I have had no issues with sleep on macOS, so whatever they are doing we should try to copy !
The same MacBook air, that used to last over a week with the lid closed on macOS, now needs to be charged every 3 days on Asahi NixOS.
Linux is a much better operating system, even just for the sheer variety of software available, but power management isn't quite there yet in my experience on this laptop.
A few years ago Windows invented a new sleep state, s0ix, instead of the previous s3 state. This makes a laptop behave more like a phone, able to wake up when it receives new data.
Unfortunately this is usually implemented badly and also causing the removal or neglect of previously reliable s3 sleep.
It’s actually insane that the only company who I’ve noticed pull off s0 sleep properly is Apple with their MacBooks, which is sad. I understand they likely had already figured out how to do it properly by working on it for iOS but still, goddamn, it can’t be difficult to fix it elsewhere?
I understand Linux is a FOSS OS (and they kinda at the mercy of hardware manufacturers to upstream support for hardware) so I have no complaints there, but Microsoft that makes so much money can’t get people to fix it? I call bullshir.
MacBook seamless suspend/sleep performance is like 25% of why my personal daily driver is MacOS. Another 50% is battery life, of which their sleep/suspend management plays a part. I've played around with Linux on Apple hardware but it's just never quite been there on power management or sleep/wake functionality. Which is mostly Apple's fault for poor documentation and support for other OS's, but it just is, and I got sick of fighting it.
I don't think Microsoft cares
I unlocked my bios (luckily Lenovo allows that with just a "secret" key combination in the bios) and disabled modern sleep, enabled S3 and S2 and tried that, with the result that my Linux freezes every time on wake up instead of only half the time...
Don't know what exactly they messed up there, but it's frustrating.
What lenovo laptop do you have? I’ve had to use a special uefi tool to unlock mine
Lenovo LOQ 15ARP9.
To unlock, go to the BIOS, open advanced settings, hold FN+R+N, release, press F10 to save and reboot, head back to the BIOS and all options are unlocked.
Some Lenovo laptops have other key combinations, some need a tool, some need a modified BIOS.
https://enaix.github.io/2025/06/03/acpi-conspiracy.html
Wait, are you suggesting it's consistent and reliable on desktops?
I'm roughly 25 years into using computers daily and never turning them off and I've never had or used a desktop that didn't sleep and wake reliably, either naturally or using the sleep and wake buttons on the keyboard, with both Linux and Windows
Are you talking the full set of S0-S3 sleep as well as hibernation? Or just whatever your machine did by default? Because I've never had one do all of them correctly without freezing up or having some other issue, across multiple motherboard brands and BIOS updates and so forth. ~30 years here, Windows mostly then the last few on Linux.
Yep I’m with you. I’ve been under the assumption the “sleep” button is some sort of joke Microsoft includes just to mess with people. Never had it work reliably on desktop or laptop since it appeared
Tbh, I don't know. The last time I used a desktop on a daily basis was 2020, and that was just my work PC where I wouldn't really care if it woke up while I wasn't at work.
The last time I had a desktop PC at home was in 2009, so I really can't say what is happening there in the meantime.
And at least to me, sleep on a laptop is much more important than on a desktop. Battery usage isn't really a thing on a desktop (usually at least).
Interestingly, I do own a little 2010 netbook that I use as an ultra-mobile laptop when I really don't need any kind of performance, and that one does all sleep states including hibernation perfectly out of the box. Even when just sleeping it loses maybe 1-2% of charge per day.
But all the other laptops I own suck when sleeping.
Well yeah obviously it's way more important on anything portable. For me it's very reliable on Steam Deck. But that's also kind of a core feature, and it only has one type of sleep (in game mode at least). But it does still drain battery faster than I'd like.
I'm curious, what kind of netbook is that one you mention?
It's an EEE PC 1005P. It's an outdated piece of garbage, but sleeping works perfectly and the battery life is crazy. 8 hours on its extended battery, 5 hours on the stock battery. And these aren't new batteries either.
With AntiX Linux performance is ok enough for what I need it for.
Maybe that's more an issue with modern standby? Or the hardware has some quirks. The last two laptops I had were a Thinkpad and now a Dell Latitude. And they both sleep very well. I close the lid and they'll drain a few battery percent over the day, I open the lid, the display lights up and I can resume work... Rarely any issues with Linux.
Yes modern standby has burned my laptop in my backpack after the windows implementation... Insane
I haven't used sleep on any of my laptops for >20 years because it's been so unreliable. Rather than getting frustrated, I gave up pretending it would ever work, and adjusted accordingly.
First thing I do on any OS, but especially linux, is turn off every sleep-related option permanently. I don't care anymore. I won't fight with it.
In 35 years of experience I've never got it to work correctly on any OS except IOS. I've only met ONE tech who claimed it worked for them, and that was in the 2000's. He couldn't demonstrate how exactly.
I do the same thing, turn that shit off because it does not work.
Do you mean iOS (iPhone) or IOS (Nintendo Wii) ? Or is there a third ?
Cisco firmware is also IOS.
The DOS BIOS was also sometimes called IOS, and the Input/Output Supervisor in the IBM OS/360 was also abbreviated as IOS.
Yeah I don't bother with sleep either, I just turn all my stuff off when I'm done with it. With the advent of SSDs and M.2 drives, it takes about 10 seconds for my desktop to boot from fully powered off. I can wait that long lol
Trouble is you've then got to re-open all of your apps again. As a developer I have about 10 different things open (including zellij sessions and panes). I've started just leaving my computer on 24/7. How much does it cost me per month? Better not think about it!
In my case its because Sony messed up the bios in more ways than one and refuses to correct the problems. They work around it with their own drivers witin Windows and leave it like that, but it also breaks Linux functionality as a result.
I have an old Dell XPS 13 sleep works great on for Linux probably can sleep a week or two and still have charge left when I open the lid. I have a newer framework and it's dead in 2 days while "sleeping."
S0 standby is the problem. It's a flawed idea from the start. The theory is it's more "secure" or something. But like... Who cares about stealing shit from memory going from sleep to wake.
Now my laptop drops 20% charge in 5-10 minutes and goes into hibernation. It draws more power than if it's on.
It's not about security. It's about maintaining a network connection so you can stream Spotify and receive Facebook updates while it's "sleeping". It's fucking stupid.
The only purpose S0 standby has on my work laptop is to make sure that my bluetooth headset always prioritizes connecting to my sleeping laptop in my backpack over connecting to my phone that I want to watch youtube on while on the train.
Newer Dells have removed the s3 deep sleep. I believe the cutoff is between Intel 11th gen and 12th gen in (at least) Latitudes. I have a i7 12th gen that sucks at sleep, but an i5 8th gen that sleeps well.
I think the laptop really does matter, and it's because chipsets are not all equal in how well their sleep modes are supported in the OS.
I've been buying XPS13s for over a decade; I've had four (three personal, and one requisitioned for me by my job), and sleep and suspend have worked almost flawlessly on them under Linux. In the office, most everyone else would move between meetings or to their desks with the lids almost closed, to prevent sleep and the problems it caused, but I'd just fearlessly close my lid; it was ironic to me that running Linux on the XPS I had more reliable sleep behavior than the Windows people on their laptops.
For OP: low power, initialization, and restoring state has to be implemented by each chip, and there are a lot of shitty, poorly implemented chips. Then the OS also has to store and restore state for each chipset, and even if the chip implements it well, the OS has to do a good job restoring power in the correct order and restoring the state for each chip. If anything goes wrong in either the chip or driver implementation, you get a broken state.
This is aggravated by the fact that Linux is a monolithic kernel, and if any device drivers get borked it usually borks the whole kernel. This wouldn't be as bad a problem if Linux were a microkernel architecture and drivers could just be killed and restarted.
Wrong. You might not have asked for it, but it is not your computer, it's Windows' computer. Microsoft decides when it wakes up.
Fair.
my guess is because the CPU power levels are fucking trashed because of all the patches they have to run at runtime. before Intel went all "wild west" with their security practices to improve performance, sleep worked just fine for me.
keep in mind, this was before uefi too, so it might also have a hand in the problems.
Good to hear.
Never had I problems with sleep. Neither with arch, suse, fedora nor ubuntu. Neither with Gnome nor with kde.
Not even with windows.
Must be the hardware (brand).
The laptops are Lenovo LOQ, HP (work laptop) and Gigabyte.
My system76 wont even go to sleep anymore. It just pretends, then if i put it in a backpack for a bit it is burning hot.
System76? Shouldn't they have support for such a case?
No idea how system76 configures their builds.
I'd check awiki if nothning else helps.
https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate
Possibly, tbh I spent a few hours on it and gave up, the laptop is due for a replacement anyways. It has other problems too, the touchpad connector is very flaky. Not sure I would go with them again..
Good to know, so far their on my buy list. Maybe not anymore :D My laptop is old but still works very good
Turns out that the touch pad was waking it up, once I fixed that sleep worked normally again. The only last issue is that the USB c port does not really work for charging so you have to lug their power adapter everywhere like a portable desktop. But if you could do USB to barrel power it would be completely fixed. Sometimes I have to apply strong downward pressure tl the touch pad but nbd.
Spent 30 or so hours fixing all the issues with the laptop but now its great! Not for the faint of heart lol.
Thanks!
ACPI is weird and sometimes hardware dependent, so it's really hard to support it on every device. that's my current understanding at least.
It's amazing how bad Linux and Windows are at sleeping on my laptops. My steam deck has a power drain issue too, even when fully powered off.
It feels like everything is running on a VM, and the hypervisor is running constantly. Or something odd like that.
Are you talking about sleep, hibernate, or monitor off?
Sleep and hibernate don't work for me.
Hibernate just acts like a power loss. After shutting down the state is just lost and the laptop starts up with a fresh boot.
With Modern Sleep, kernels 6.11+ go to sleep fine, but don't manage to wake back up. The keyboard lights up for half a minute, the fan goes on, the screen stays dark and after half a minute the laptop goes back to sleep. Kernel 6.10 sometimes works, sometimes behaves like 6.11+. I'd say it works 80% of the time.
I disabled Modern Sleep in BIOS and tried to enable S3, S2 and S2+S3 in BIOS instead. I set the corresponding sleep states in Linux as well, and no matter which one of the non-modern-sleep options I try, and no matter if I'm using kernel 6.10 or 6.15, it never manages to wake up (same symptoms as above).
Yes
weirdly i have the windows problem on linux with my laptop: never have I had it not wake from sleep, but sometimes it starts overheating while on sleep and drains the battery super quick
many times ive put my laptop on sleep in my pouch, taken it out and hear the fans blasting, the laptop is burning hot and the battery lost 40% in 20 minutes
It's been quite a while since I've used sleep on a laptop, but it worked well on my Dell (latitude I think, as I said, it's been a while). It did take a little experimenting with sleep levels to get it reliable, but once it was it worked for years.
ETA: I realise that saying "it worked for me" is probably intensely annoying, my appologies for that, but I thought a counterpoint might be a useful extra data point.
This is purely anecdotally and pretty worthless as a guide or anything, but i got it working perfectly on my framework laptop running kde neon (basically Ubuntu with kde as de in rolling release mode) But its basically archeotech, past me followed a bunch of hints in the framework forum, did some unknown configuration and now it works reliable through all other updates since at least 20 month, battery holds around a week or so sleeping i think
Re the windows waking up, it's likely a network card/chip to blame. You can disable the ability to wake inside Device Manager. Every time I had a system wake unexpectedly, networking was to blame.
I also had it that one laptop was configured to wake any time the mouse moved even a tiny bit. So walk past the laptop, laptop is now awake.
Sadly I cannot configure any of that on my work laptop, because helpdesk thinks allowing me to do so would be a security risk or something like that.
Works fine on mine. Windows will wake up and check for updates if you don't turn that off. It doesn't work on Linux?
On Linux on kernel 6.11+ it freezes every single time on wakeup.
On kernel 6.10 it freezes when the laptop has been sleeping for more than a few hours.
Hibernate just reboots the PC.
I bring you the classic by Three Dead Trolls in a Baggie
My laptop refuses to stay asleep if fstab disks were disconnected prior to sleeping. It works perfectly fine for me now that I figured that out.
Just one more weird behavior with fstab and kde or Linux or arch? I don't know who to blame.
With OpenSUSE Leap sleep always worked for me, (even hibernate works) but if you had it as external monitor only then sometimes the screen power off would not come back on, and the laptop screen was told to stay off. I found myself using KDEconnect on my phone to try to cycle monitor power on/off command and sometimes it figured it out
On the Windows one, consider hibernating it. Its a longer wake up time, but it doesn't wake up randomly.
Company policies for some reason has hibernate disabled -.-
@[email protected] It's probably because my kernel version is very old (5.14.11-arch1-1, haven't updated since 2019, even though it's Arch, a rolling-release distro) and my Acer laptop is old as well (Intel Core 7th gen), but I rarely have problems regarding laptop sleep. After I wake the laptop up, the video (including every VT#) may get frozen and I have to remotely SSH and request a reboot (and when this happens, sometimes the reboot gets stuck as well, so I have to do a hard power-off). But it's very rare, as stated, and I daily put my laptop to sleep without issues, sometimes the system uptime stretches to weeks (currently, my system was booted almost four days ago).
It does work fine too on my 2010 EEE PC running Antix running on a 5.10.x kernel. Seems to be more an issue with newer devices, since every single laptop I own that's newer than maybe 2013 has these issues.
Sleep on my minisfourm v3 is awesome with Linux. It correctly detects the keyboard cover, auto rotates based on the accelerometer and can be unlocked using the fingerprint sensor.
Considering the security implications of suspend and how much enabling zram has improved my workflow for hibernate, I can't really say I miss suspend any much. It was fast (near-instant in good days) but it's always been a bet whether you can restore state or have to clean boot.
Also at least in my experience there were always a number of things that just borked suspend if you left them unattended. Back when I was still maining Debian Stable on 2022, having a remote mounted via SSHFS or having Redshift active always would lead to a near-eternal freeze before suspending, or worst case scenario a suspend-into-crash (ie.: suspends right, but panics during resume).
I wouldn't mind if at least hibernation worked. But it always loses the state on hibernate and acts as if there was just a power loss. It boots up with a fresh state instead of the stored one.
It's quite a bit old and maybe superseded by something more modern in 2025 already, but have you tried setting up your boot with the
acpi_osi=linuxparameter? It should enable some corrections and capabilities from the BIOS that are not available if the system "lies" to the BIOS by telling it it's Windows ("for compatibility, they said"). Dunno, maybe it juuuust happens to include the fix you need.Its mostly the blue light and the lack of melatonin. Seriously though I have not had an issue with it in linux and not really that much with windows but half the time I shut my machine down.
Instructions unclear, now my laptop is covered in sticky stuff.
My laptop uses 0.07w sleeping, draining about 1.8% of the battery per hour. I would say that's acceptable with 32GB RAM s2idle
Framework 16 on NixOS
Roughly 1M anecdotes in the comments already