HowTo: Preserve Battery Health Activation Steps

Here’s a concise how-to guide for activating “Preserve Battery Health” in Gnome 48 on Framework 16 with Fedora 42 Silverblue; inspired by GNOME 48: Preserve Battery Health - #4 by Guldoman

  1. BIOS Preparation

    • Set battery limit to 100%
    • Disable battery extender
  2. Kernel Module Configuration

    sudo tee /etc/modprobe.d/fw_use_cros_charging.conf <<< "options cros_charge_control probe_with_fwk_charge_control=Y"
    
  3. System Reboot

    sudo systemctl reboot
    
  4. Verify Driver Activation

    journalctl -b0 | grep "Framework charge control detected, preventing load"
    
    • No output indicates successful configuration
  5. Locate Battery Health Option

    • Navigate to Settings → Energy
    • Find “Preserve Battery Health” entry
3 Likes

Used to work like a charm on Laptop 16, but when upgrading to latest BIOS 3.0.7, the battery goes on to charging to 100%, ignoring gnome setting.

Has anybody found the solution ?

have the same Problem, maybe a bug in Bios?

I reverted to BIOS 3.0.5 and problem dissapeared. It looks like a bios Bug.

For the record i use Debian 13 as OS.

Is there currently no workaround for this apart from using framework_tool or downgrading BIOS?

My Setup:

Framework Charge Limit Service - Setup Guide

1. Download and install framework_tool

sudo wget https://github.com/FrameworkComputer/framework-system/releases/latest/download/framework_tool -O /usr/local/bin/framework_tool
sudo chmod +x /usr/local/bin/framework_tool

2. Create systemd service file

Create /etc/systemd/system/framework-charge-limit.service:

sudo nano /etc/systemd/system/framework-charge-limit.service

Add the following content:

[Unit]
Description=Framework Charge Limit Service
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/framework_tool --charge-limit 60
ExecStop=/usr/local/bin/framework_tool --charge-limit 100
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

3. Set SELinux context

sudo semanage fcontext -a -t bin_t '/usr/local/bin/framework_tool'
sudo restorecon -v /usr/local/bin/framework_tool

4. Enable and start the service

sudo systemctl daemon-reload
sudo systemctl enable framework-charge-limit.service
sudo systemctl start framework-charge-limit.service

5. Verify status

sudo systemctl status framework-charge-limit.service

Management commands

# Stop (sets limit to 100)
sudo systemctl stop framework-charge-limit.service

# View logs
sudo journalctl -u framework-charge-limit.service -e

Done! The service will now run at boot and set the charge limit to 60.

But the tool doesn’t seem to be working properly:

Interested in getting this to work as well

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.