FW13 12th gen: charge limit won't cycle correctly between defined values
Opened this issue · 0 comments
Device Information
System Model or SKU
Please select one of the following
- Framework Laptop 13 (11th Gen Intel® Core™)
- Framework Laptop 13 (12th Gen Intel® Core™)
- Framework Laptop 13 (13th Gen Intel® Core™)
- Framework Laptop 13 (AMD Ryzen™ 7040 Series)
- Framework Laptop 13 (Intel® Core™ Ultra Series 1)
- Framework Laptop 16 (AMD Ryzen™ 7040 Series)
BIOS VERSION
3.18
DIY Edition information
Memory: 2x Corsair CMSX32GX4M2A3200C22 (16GB)
Storage: WD_BLACK SN850X 1000GB
Describe the bug
When setting up an upper charge limit (e.g. 60%), the system constantly cycles between 59% and 60% and shows "charging" while on 60% in the gnome menu. This behaviour happens when using the kernel parameter (see context), used to set the charging limit. framework_tool (instead of the kernel parameter) shows the same behaviour, holding the charge constantly at 60%.
Output from framework_tool (while I set the limit through the gnome-extension, using the kernel parameter):
> sudo framework_tool --driver cros-ec --charge-limit
Minimum 0%, Maximum 95%
Nevertheless, the system will not charge beyond 60%.
Output from framework_tool (while I set the limit through the gnome-extension, using framework_tool, no kernel parameter):
> sudo framework_tool --driver cros-ec --charge-limit
Minimum 0%, Maximum 60%
The system will not charge beyond 60%.
Steps To Reproduce
Kernel Parameter:
- Install mentioned gnome-extension (for easier limit definition)
sudo grubby --update-kernel=ALL --args="cros_charge-control.probe_with_fwk_charge_control=1"- Reboot
- Choose a charge limit profile from the extension
- Produce some load (so the battery drains power)
framework_tool:
sudo grubby --update-kernel=ALL --remove-args="cros_charge-control.probe_with_fwk_charge_control=1"- Reboot
- Install mentioned gnome-extension (for easier limit definition)
- Clone and build framework_tool, create a symlink to /usr/bin/ (so the extension can use it)
- Select a charge limit profile from the extension
- Produce some load (so the battery drains power)
You can also skip the gnome extension and use cat /sys/class/power_supply/BAT1/charge_control_start_threshold and cat /sys/class/power_supply/BAT1/charge_control_stop_threshold (with kernel parameter) or sudo framework_tool --driver cros-ec --charge-limit 60 (without kernel parameter) directly.
Expected behaviour
With Kernel Parameter:
As I can define a lower limit and an upper limit, the battery should discharge to the lower limit before charging to the upper limit again.
On framewok_tool:
According to https://community.frame.work/t/framework-laptop-13-12th-gen-intel-core-bios-3-18-release-beta/71888 , when I set my charge limit to 60%, it should cycle between 55% and 60%
Operating System (please complete the following information):
- OS/Distribution: Fedora 42
- Kernel: Linux framework 6.15.4-200.fc42.x86_64
- framework_tool:
Version: 0.4.5
Built At: Thu, 10 Jul 2025 15:38:04 +0000
Git Commit: 7c17569044b12e99ecc02ae6ea61ce5ab517ab09
Git Dirty: false
Additional context
I'm using https://extensions.gnome.org/extension/5724/battery-health-charging/ to steer my battery from within the gnome menu. It works natively in case the kernel parameter cros_charge-control.probe_with_fwk_charge_control=1 is set (providing a lower and upper threshold for the battery, like populated by the kernel itself, see steps to reproduce) or through the framework_tool if the kernel won't provide battery controls natively.
Battery Extender is disabled in the BIOS, and the original charge limit was set to 95% in the bios itself.