[TRACKING] Linux battery life tuning

If the cells are flawed, it’ll happen anyway. The only difference is how long it’ll take.

Yes it’ll be better for sure. In fact the most ideal Lithium usage to make it longest lasting is:

-Not get it above 20C(68F)

-Not let it discharge below 30%

-Not let it stay at 100%
-Don’t let it out in the Sun

The less of above you do, the better it is. But since you bought the thing to use it anyway, the “ideal” scenario is barely using it and that in itself is counterproductive.

The thing greater than keeping it at 40% or 85% is heat. Heat makes everything worse. Anything above 20C. And in a laptop, even idle it’ll be greater than that. So don’t aim your laptop for having the #1 benchmark store.

Lower your TDP settings. Disable your Turbo. Make sure you have power management working properly and CPU reaching Package C8-C10 properly when in idle. Intel/AMD tells your CPU max temp is 105C. That’s simply a lie. All silicon doesn’t like going over 70C long term.

2 Likes

Based on this reply and what it responds to I tuned my Framework Laptop 13 Ryzen AI 5 340 using TLP. I made sure to address the concerns raised by Framework and AMD based on TLP’s FAQ page.

I am on Devuan 6 (Debian 13) with TLP 1.10.2. I made it work with KDE by doing what I posted about here: Issue Comment on [TLP 1.9 Beta] Introducing TLP Profiles Daemon…

I get around 4-6 watts at near idle while browsing. While in s2idle (S0) sleep it uses very little power, I haven’t measured but I could leave it overnight and not worry but I uses suspend-then-hibernate with a delay of 2 hours just in case.

Here is my drop-in tlp config file in /etc/tlp.d/10-framework.conf:

TLP_AUTO_SWITCH=0 # Managed by KDE
TLP_PROFILE_DEFAULT=BAL
#TLP_PROFILE_AC=BAL
#TLP_PROFILE_BAT=BAL
PLATFORM_PROFILE_ON_AC=performance
PLATFORM_PROFILE_ON_BAT=low-power
CPU_DRIVER_OPMODE_ON_AC=active
CPU_DRIVER_OPMODE_ON_BAT=active
CPU_SCALING_GOVERNOR_ON_AC=powersave
CPU_SCALING_GOVERNOR_ON_BAT=powersave

# Important on AMD
CPU_ENERGY_PERF_POLICY_ON_AC=""
CPU_ENERGY_PERF_POLICY_ON_BAT=""
CPU_ENERGY_PERF_POLICY_ON_SAV="" # Theoretically not needed because SAV should fall back to BAT
RUNTIME_PM_ON_AC=""
RUNTIME_PM_ON_BAT=""


CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=1
CPU_BOOST_ON_SAV=0
#NMI_WATCHDOG=0
#DISK_DEVICES="nvme0n1 sda"
#DISK_APM_LEVEL_ON_AC="254 254"
#DISK_APM_LEVEL_ON_BAT="128 128"
AHCI_RUNTIME_PM_ON_AC=on
AHCI_RUNTIME_PM_ON_BAT=auto
RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=auto
RADEON_DPM_PERF_LEVEL_ON_SAV=low
WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on
PCIE_ASPM_ON_AC=default
PCIE_ASPM_ON_BAT=powersupersave
PCIE_ASPM_ON_SAV=powersupersave
USB_EXCLUDE_PHONE=1
USB_ALLOWLIST="32ac:0002" # HDMI Expansion Card
SOUND_POWER_SAVE_ON_AC=10
SOUND_POWER_SAVE_ON_BAT=10

I do have to warn you I’m occasionally having issues suspending and resuming but I’m suspicious of hardware issues as I’ve had less issues after doing things like replugging the touchpad cable and securing the display cable. I suspect poor QC is the main cause. Solved by removing pcie.aspm=forcefrom kernel parameters (grub).

Also, my CPU only reports having C-states C1-C3. I am on Devuan 6 (Debian 13). HWInfo only reports Core C0, C1, and C6 and package C6. Yet it reports a higher discharge rate than Linux and this is Tiny11 with telemetry and stuff disabled with WinUtil.

Try these?

# Important on AMD
CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
CPU_ENERGY_PERF_POLICY_ON_BAT=balance_power
CPU_ENERGY_PERF_POLICY_ON_SAV=power
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto

Does it get better if you change the powersupersave back to default?

PCIE_ASPM_ON_AC=default
PCIE_ASPM_ON_BAT=powersupersave
PCIE_ASPM_ON_SAV=powersupersave

TLP very explicitly says NOT to do that for the same reason Framework says NOT to use TLP.

I’ll try that if I still have issues after first trying to mess with WiFi power saving settings. I believe that’s the culprit of most if not all of my issues.

1 Like

Solved by adding WiFi driver to denylist.

Edit: this significantly increases power usage.

Edit 2: must’ve just been chromium.

1 Like

Thanks for clarifying it

btw, what does cat sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference say when you unplug/plug the AC or adjusting the power slider?

Always power. I suspect this is good the way setting the CPU_SCALING_GOVERNORto powersave no matter what. Yes, that is recommended by TLP and when I go into performance profile I am still able to draw over 27 watts in a CPU burn/stress test.

Darn, it just happened again, no changing WiFi conditions either. I’ll try ASPM default and if it still happens I turn on WiFi power management.

Is it on AC or battery? low-power platform profile can only limit max CPU TDP on battery to 15W, on AC it’s somewhat between 16-25W

Things I’ve tried:

  1. TLP: Denylist the driver and/or disable wifi power saving (and confirm wifi power saving was off with sudo iwconfig).
  2. Manually replaced the firmware for the WiFi card (copied into /lib/firmware): iwlwifi-ty-a0-gf-a0-89.ucode
  3. TLP: Set ASPM to default.

There may be things I forgot. I have not tried a sleep hook that cuts off the WiFi on suspend and powers it on on resume.

PLATFORM_PROFILE_ON_AC=performance

To be clear, I’m on Devuan 6 (Debian 13) using the backports tlp 1.10.2 that has migrated to calling the profiles performance and balanced instead of AC and BAT but all the options have the old names except the new power saving profile as SAV.

You may have been on to something. I had pcie.aspm=force set as a kernel param in grub.

I swapped from ZorinOS_18_core towards POP!_OS about two weeks ago.
Zorin was on my FW13 since beginning of 2026.
Without any measurements applied, I do have the feeling that the battery lasts longer, for sure in sleep mode (lid closed) compared to Zorin.