You are not logged in.
Charging much slower on Arch Linux than on Windows (ThinkBook 14 G6+ AHP)
Hi everyone — I'm seeing much slower battery charging on Arch Linux compared to Windows, even when using the laptop's original 100W charger.
System info:
➜ inxi -M
Machine:
Type: Laptop System: LENOVO product: 21LF v: ThinkBook 14 G6+ AHP
serial: <superuser required>
Mobo: LENOVO model: LNVNB161216 v: SDK0T76479 WIN
serial: <superuser required> Firmware: UEFI vendor: LENOVO v: NLCN34WW
date: 11/07/2024
➜ inxi -S
System:
Host: cz Kernel: 6.18.6-arch1-1 arch: x86_64 bits: 64
Desktop: GNOME v: 49.3 Distro: Arch Linux
Additional details:
- Dual-boot setup, using GRUB.
- I usually use GNOME on Wayland.
- Power management: power-profiles-daemon.
When charging, upower reports:
➜ upower -i /org/freedesktop/UPower/devices/battery_BAT1
native-path: BAT1
vendor: ATL
model: L23N4PG1
serial: 1664
power supply: yes
updated: Thursday, January 29, 2026 16:49:38 (2 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: charging
warning-level: none
energy: 56.87 Wh
capacity-level: Normal
energy-rate: 14.707 W
voltage: 16.983 V
time to full: 1.5 hours
percentage: 72%As you can see, the reported charging power is only ~14.7 W, while the charger is a 100 W original unit. Under Windows the battery charges noticeably faster.
Has anyone seen the same behavior? Any ideas where to start debugging (ACPI/firmware, kernel, power management, charger negotiation, etc.) Thanks!
Last edited by martch7th (2026-01-29 09:07:54)
Offline
Dual-boot setup, using GRUB.
3rd link below. Mandatory.
Disable it (it's NOT the BIOS setting!) and reboot windows and linux twice for voodo reasons.
The OS will influence the draw (gnome sucks more power than openbox, idk. whether upower reports a net rate or this is the loading current) but the charge power itself is negotiated by the battery and the charger - probably influenced by the ACPI.
If it's not gnome sucking more power than the charger can compensate (check powertop) and not the fast-start condition (the voodoo thing is only partly a joke!) you could try to lie to the ACPI
acpi_osi=! acpi_osi="Windows 2015"Offline
Can you get the upower output for the charger? Some devices can report how much they are requesting.
As you can see, the reported charging power is only ~14.7 W, while the charger is a 100 W original unit.
Note this will never be identical to the charging speed. My own battery will charge at 30W below 70%, but the closer it gets to 100%, the slower it charges, somewhen it crawls at 5W or so.
Also, get the charging type:
cat /sys/class/power_supply/BAT1/charge_typesUnder Windows the battery charges noticeably faster.
Is this really obvious or are you just doing more fun stuff on windows so that time flies by and it feels shorter?
Last edited by jl2 (2026-01-29 10:28:43)
Why I run Arch? To "BTW I run Arch" the guy one grade younger.
And to let my siblings and cousins laugh at Arsch Linux...
Offline
I am very sure that charging under arch is much slower than charging under windows.
In a 0% battery situation, charging an Arch takes nearly a day, while on Windows it only takes about two hours.
Windows fast startup is also turned off.
ACPI is also installed.
➜ ~ pamac list | grep acpi
acpiOffline
ACPI is also installed.
What's completely irrelevant and not what anybody has ever been talking about.
https://deepl.com/
Disabling windows "fast-start" is not optional and if that's not the rather likely cause, try to lie to the acpi.
Offline
What should I do? Or, how should I debug it?
Last edited by martch7th (2026-01-31 09:50:47)
Offline
Offline
Assume for a moment that which Seth is pursuing is not the issue (probably not a good assumption).
Windows, out of the box, tends to be a bit more optimized for low power on laptops than is Linux. I imagine this to large in part so the manufacturers can tout longer battery lives.
My point being, the power supply needs to do two things, run the computer and charge the battery. In general, the computer takes what it needs, and the leftovers get sent to the battery.
What is windows during those couple hours when charging? if you are not actively using Windows, it could well be in a light sleep mode with the screen off leaving most of the 100W to charge the battery.
What is Arch doing all day while slowly charging? Is it sleeping? Is the screen on? Is the wireless network active? If the computer is using 50W or so, and Windows is not, you might see the charge time double.
On the other hand, if the system really does take 'all day' on Linux, it could be that your system is in trickle charge mode. Such a state could be related to Seth's line of reasoning.
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
The shortest way to ruin a country is to give power to demagogues.— Dionysius of Halicarnassus
---
How to Ask Questions the Smart Way
Offline
In a 0% battery situation, charging an Arch takes nearly a day, while on Windows it only takes about two hours.
You sure?
56.87Wh@14.7W = ~4h
The math ain't mathing.
(Note that charging is fastest below 50%, so at 0-80% should be 2-3h)
@ewaller 14.7W @ 72% is very normal charging speed.
I tried requesting what the laptop is requesting from the charger, to see if yours is right.
@martch7th can you post the output of the commands in the rest of my question (#3)?
Last edited by jl2 (2026-01-31 17:10:30)
Why I run Arch? To "BTW I run Arch" the guy one grade younger.
And to let my siblings and cousins laugh at Arsch Linux...
Offline
@ewaller 14.7W @ 72% is very normal charging speed.
I tried requesting what the laptop is requesting from the charger, to see if yours is right.
Yeah, I was talking in generalities. A lot of the numbers don't make sense, but I kind of locked on 1.5 hour to full from 72% . That would roughly translate to 6 hours from full.
This Asus laptop will charge from 0 to full in an hour when not running and about twice that if I'm using it
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
The shortest way to ruin a country is to give power to demagogues.— Dionysius of Halicarnassus
---
How to Ask Questions the Smart Way
Offline
A lot of the numbers don't make sense, but I kind of locked on 1.5 hour to full from 72% . That would roughly translate to 6 hours from full.
Going slightly OT here - did you know upower corrects the time to full predictions based on past charges?
The corrections don't really make sense for my battery tho - probably because my charging behavior is quite weird on linux. https://paste.c-net.org/ElevateUnderdog https://paste.c-net.org/NervesEmotions
Last edited by jl2 (2026-01-31 18:45:44)
Why I run Arch? To "BTW I run Arch" the guy one grade younger.
And to let my siblings and cousins laugh at Arsch Linux...
Offline
If this is down to the draw that should™ be easy enough to figure by isolating the multi-user.target but I don't buy that.
tail /sys/class/power_supply/BAT*/*but seriously look into the fast-start situation before anything else.
Offline
==> /sys/class/power_supply/BAT1/alarm <==
7860000
==> /sys/class/power_supply/BAT1/capacity <==
96
==> /sys/class/power_supply/BAT1/capacity_level <==
Normal
==> /sys/class/power_supply/BAT1/cycle_count <==
114
==> /sys/class/power_supply/BAT1/device <==
tail: 读取 '/sys/class/power_supply/BAT1/device' 时出错: 是一个目录
==> /sys/class/power_supply/BAT1/energy_full <==
78680000
==> /sys/class/power_supply/BAT1/energy_full_design <==
85000000
==> /sys/class/power_supply/BAT1/energy_now <==
75370000
==> /sys/class/power_supply/BAT1/extensions <==
tail: 读取 '/sys/class/power_supply/BAT1/extensions' 时出错: 是一个目录
==> /sys/class/power_supply/BAT1/hwmon3 <==
tail: 读取 '/sys/class/power_supply/BAT1/hwmon3' 时出错: 是一个目录
==> /sys/class/power_supply/BAT1/manufacturer <==
ATL
==> /sys/class/power_supply/BAT1/model_name <==
L23N4PG1
==> /sys/class/power_supply/BAT1/power <==
tail: 读取 '/sys/class/power_supply/BAT1/power' 时出错: 是一个目录
==> /sys/class/power_supply/BAT1/power_now <==
13640000
==> /sys/class/power_supply/BAT1/present <==
1
==> /sys/class/power_supply/BAT1/serial_number <==
1664
==> /sys/class/power_supply/BAT1/status <==
Discharging
==> /sys/class/power_supply/BAT1/subsystem <==
tail: 读取 '/sys/class/power_supply/BAT1/subsystem' 时出错: 是一个目录
==> /sys/class/power_supply/BAT1/technology <==
Unknown
==> /sys/class/power_supply/BAT1/type <==
Battery
==> /sys/class/power_supply/BAT1/uevent <==
POWER_SUPPLY_POWER_NOW=13640000
POWER_SUPPLY_ENERGY_FULL_DESIGN=85000000
POWER_SUPPLY_ENERGY_FULL=78680000
POWER_SUPPLY_ENERGY_NOW=75370000
POWER_SUPPLY_CAPACITY=96
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_MODEL_NAME=L23N4PG1
POWER_SUPPLY_MANUFACTURER=ATL
POWER_SUPPLY_SERIAL_NUMBER=1664
==> /sys/class/power_supply/BAT1/voltage_min_design <==
15600000
==> /sys/class/power_supply/BAT1/voltage_now <==
16716000Offline
I noticed that the charging speed has increased significantly after installing extra/acpi and extra/acpi_call.
I use the following command to check the charging power:
watch -n 1 'upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state|energy-rate"'It hovers around 58W to 63W, and fluctuations occur very infrequently.
Offline
Insatlling acpi is completely inert, acpi_call installs a kernel module (for the main kernel, if you're on linux-lts or linux-zen etc it's inert as well) that would allow some userspace process to talk to the BIOS and is predominantly used to disable the GPU.
The battery was discharging at 13.64W, so I assume that's what the upower energy-rate actually exposes.
Did that value now *drop*?
Offline
The battery was discharging at 13.64W, so I assume that's what the upower energy-rate actually exposes.
Yes, they should be identical.
Why I run Arch? To "BTW I run Arch" the guy one grade younger.
And to let my siblings and cousins laugh at Arsch Linux...
Offline