I will need to get a laptop in the foreseeable future, and I really want to stick to Linux. However, I may need to be out-of-home for 12+ hours straight in a day. After some research, it seems people are generally not that impressed with battery life on Linux?
The laptop does not need to do anything heavy duty, as I will remote back into my already very beefy desktop back home.
I guess a common solution to this light use case is M2 MacBook if one wants to completely throw battery concern out of the window. Well… let’s just say it’s a love-hate relationship.
My thinkpads have always gone further on ubuntu than on windaz.
Yeah my x1 carbon thinkpad has great battery life with Linux.
I’ll use power saver in fedora if needed.
My x1 carbon, with tlp and kubuntu, idling with screen on estimates 20 hours battery life. Haven’t had the patience to test it yet.
Is that just forcing the cpu scheduler? I use ubuntu-mate, and theres just a dropdown widget to switch between balanced/power/powersave.
Some addition power management tools I suppose?
vanilla with no configuration.
tlp is enough
Tlp and Intel xtu for undervolting (lowers temps and power consumption, but newer cpus don’t support it) are pretty good ideas. If battery life is your perogative, try avoiding discrete gpus, they can be a pain to make sure they don’t drain battery in Linux. 14hrs is possible, but you have to spec properly (think thinkpad t480 with dual batteries, and a low power display).
Battery life on laptops is always over exaggerated regardless what OS you run.
12+ hours of actual battery life during use just doesn’t happen.
yeah I put Linux on my 2019 XPS 15 back in 2019 and went from 4 hours of usable productivity time to 4 hours of usable productivity time
battery degradation is a much bigger issue than Linux vs windows
12+ hours of actual usage is doable on Apple Silicon, but it does depend on what your usage is. If you’re compiling something 50% of the time then probably not. If you spend most time writing code and then testing the application after compiling? Yeah it’ll last you 12.
I know that’s not what OP has and it’s not what they should get for Linux usage, but I’ve worked with 3 now (one personal, two at different jobs) and these things are the holy grail of battery life. First day on my M1 Air, taking it off the charger, 2 hours in it had used maybe 5% battery watching a udemy course and playing around in xcode.
So I think we should demand better of our laptops. I do believe AMD has done a lot, they had an entire generation where all they advertised was the increased power efficiency.
Removed by mod
This is what’s important. If you don’t enable power saving in some fashion, your hardware will always be “on” at full specs. Even if the machine isn’t actually being used, it’s still powering everything to be ready to jump at any opportunity to process something quickly without ramping down.
TLP has pretty excellent default settings. Simply turning it on will likely make your battery life go 2-3x longer than without it being on, and you will have about 80% of the performance from a UX perspective. And if you want to crunch numbers faster on battery, you can tune TLP or turn it off temporarily.
Thanks to you I just found out that I DID enable wake-on-lan a year ago and that there’s another reason I couldn’t do it.
It depends on the distro and how you configure it.
For distros that just work out of the box like ubuntu or manjaro it should be about the same as windows unless there’s something weird in your laptop, but in general there are 3 really useful tools that I recommend you check out are:
- TLPUI: a user interface for TLP, a power management tool that’s used in most distros. With this you can configure your min/max clock speeds for your CPU and GPU when on battery vs plugged in, CPU governor, display brightness, automatic poweroff of drives and USB devices, and many other things
- throttled (https://github.com/erpalma/throttled): originally created to workaround a BIOS bug on some thinkpads, this can now set things like turbo duration, power limits and undervolting, all based on whether you’re on battery or plugged in
- LACT: if you have an AMD GPU, you can use this to undervolt it or to set a better power limit
Setting these up properly on my thinkpad t480 with manjaro gave it a good 50-60% of extra battery life for what I use it for (I’m a teacher so mostly presentations and various IDEs). You should check them out.
It depends. If you get a fairly standard laptop from a brand that has some Linux awareness (Lenovo, Dell, Framework,…) you should be alright out of the box.
Gaming laptops generally are a bit worse since GPU switching is not as well integrated. I managed to get mine to parity but with a lot of tweaking. Devices with only integrated graphics tend to be fine out of the box.
It’s very dependent on the laptop. Some ThinkPad get better battery life than on Linux because a lot of kernel devs use them.
My X1 Carbon gets about 15% better battery life with PopOS vs. Windows.
That’s new info for me thanks. Never knew thinkpad can excel in this department.
It depends on the ThinkPad. They’re not all created equally and the quality between models varies wildly.
Gaming laptops will have marginally worse battery life when properly configured. But in general you’ll get better battery life on Linux in my experience.
I just spent two weeks trying to convince a new intel Zenbook laptop to have decent battery life. It would eat the battery both awake and asleep. Went through the Arch wiki on suspend issues. Discovered that the bios has a broken vestigial S3 suspend (which more and more vendors are shipping); the modern suspend mode is now S0ix (s2idle). Found that my system was only getting into C2 and C3 out of C10 levels of S0ix power-saving-state nirvana.
Somehow, I lucked upon finding that the Intel Rapid Storage/VMD setting in bios was what kept the processor from ever going to lower power states. Once I disabled that, nearly everything else fell into place. The cpu ran cooler at normal use, battery lasted longer, and power burn during sleep went from 4% an hour to negligible.
This was fun. Not one tool successfully pointed me at the real problem. It took one random dell support post to set me on the right path. https://bugzilla.kernel.org/show_bug.cgi?id=211879. I spent two weeks chasing the same problem that somebody else had in 2021. Linux doesn’t have a [WARNING] for detecting a damned VMD, and it doesn’t have a means to tell the VMD to fuck off? The stupid hardware doesn’t have the sense to not fuck up the processor if it isn’t attached to its Windows-only driver? I don’t understand how anybody has been able to use an intel for the last couple of generations if this is how they work.
In conclusion - battery life is actually pretty great now. But it was a bloody nightmare to get here.
I actually get 2x the battery life of windows on my ThinkPad. If you run a distro like Arch or Gentoo you will have to configure some things to get good battery life, but with Mint or something it just works™. If you want a whole lot of battery life you could get a laptop that has a replaceable battery, like the T480 (still plenty powerful for Linux), then your max life is limited only by how many extra batteries you are willing to carry.
I’ve installed a few distros on my gaming laptop for fun and something I’ve noticed was that your desktop environment may have a large impact on your battery life.
With Mint, my battery would die in like 2.5 hours. After installing Arch with the Budgie desktop environment, I’ve noticed that my battery life was twice as long as when it was running on Mint.
It really depends on the hardware and your use cases (ie. workflow).
I have a laptop (Dell Latitude 7420) with an integrated GPU (all Intel Tiger Lake), and I regularly get between 8 - 10 hours of battery life with just using terminals and web browsers (Firefox).
On GNOME, you will want to take advantage of the power profiles. With Pop, you can take advantage of their power management system. Otherwise, you can use something like TLP to minimize your power usage.
Moreover, if you are watching videos, then you want to make sure it is GPU accelerated and using the builtin hardware codecs rather than relying on the CPU to do the decoding.
I think that 12 hours on Linux on Intel/AMD is a stretch… but 8-10 hours is achievable and realistic (from my experience anyway).
HP Elitebook 840 G5 here, doubled battery time after switching from Windows 10 to Debian 12.
Pretty bad. My gaming laptop gets 2 hours on Arch and 4 on Windows. My work laptop gets 4 hours on Arch compared to 6 hours on Windows. My 2-in-1 laptop from 8 years ago gets about the same, if not more. My 2009 laptop gets like 8 hours, and probably more than Windows would.
Edit: I use auto-cpufreq, but this doesn’t help much. Power-profiles helps a little.
Gaming laptops are a bit worse on Linux. But this isn’t generally applicable.
I have a 2015 ultrabook that still gets 5h+ on battery under Linux. My 2022 gaming laptop required some tweaking but now does 8-10h on a charge as well.
My work laptop doesn’t have a discrete GPU; I bought it explicitly to get better battery life (I really like the gaming laptop for its 120Hz screen and other specs, but the battery life made it a no-go). It gets around 4-5 hours, which is good enough for me, but I’m sure it would get better battery life on Windows.
How did you get better battery life on the gaming laptop, if you don’t mind my asking? It uses a NVIDIA GPU.
I made a script that monitors the power state of the laptop and automatically toggles the following things:
- Limit the CPU boost frequency to something more reasonable using
cpufreq
when not plugged in. - I limit the GPU to 32W when on battery and 42W when charging over USB-C, while giving it the unrestricted 100W when running from the normal power charger. I tried fully turning off the GPU but there’s no measurable benefit in battery life compared to this setup (GPU goes to ~0W when idle anyway).
- I set refresh rate of the display to 60hz on battery (144hz when plugged in)
- I turn of half the cores of my 8 core CPU om battery (this is pretty aggressive, and does not result in better battery life on all platforms - your mileage may vary)
That takes me from 4-5h to ~8-10 and the computer is still very useable.
Mine is an AMD device but Nvidia offers similar toggles through the
nvidia-smi
command.Some good pointers, thanks! I imagine it’s mostly the 120Hz display that’s killing my battery life…which is a shame, but alas, sacrifices need to be made sometimes. I’ll have to give these things a try!
Was it hard to find an AMD dGPU laptop? There are almost none where I’m based.
Yes, it was slim pickings. I tried a couple last year and finally ended up keeping an all-AMD Asus Zephyrus G14.
Others I tried:
- MSI Delta 15: overall best performing of the bunch, returned it because of somewhat substandard machining and build quality. Linux worked perfectly out of the box.
- Medion Erazer Major: Intel Arc laptop. Good performance but couldn’t get the battery life up to good standards
- Lenovo Legion S7 16: just stopped booting after a week
- Asus Zephyrus G14: small, light, excellent quality, but a little bit of tweaking getting everything working
Today I would just preorder a Framework 16.
all-AMD Asus Zephyrus G14
That was what I originally wanted! They were sold-out by the time I needed to buy one, so I went with an ASUS Scar something-something.
Most of the laptops I own are Dell laptops which originally came with Windows, on account of the 5-year repair deal where they repair it wherever you are (making use of IBM’s network to do so). I didn’t get a chance to see how the latest one worked with Windows 11 because I wiped it immediately…
I’ve heard good and bad things about Framework with Linux. I don’t know if I would end up buying it either way, as it seems like it would demand more experience than I have.
I couldn’t find one locally either. Ended up ordering a returned product from Amazon abroad, a friend of mine then shipped it over. The stuff I do to avoid Nvidia…
- Limit the CPU boost frequency to something more reasonable using
Not bad at all. With some tweaking, it is commensurate with other operating systems.
I’ve got a Surface Laptop 3 running Fedora that is always dead after an extended sleep. Actual working battery life is not bad though.
It’s worth knowing as a fellow Surface owner that that is very nonstandard. My Surface Pro 6 (admittedly much newer) lasts days or weeks if I just slap the lid closed and leave it somewhere, I think you might be missing something in the linux-surface github.
To any non-surface owners reading this, it’s a Microsoft problem because the whole laptop is a custom Microsoft product and only has ACPI drivers on Windows, though, there is some open source support with a kernel patch that hasn’t cleared it’s way to mainline support
I pull kernels from the Linux surface repo, so I would expect to have whatever’s latest