How to Set Battery Charge Limit in Ubuntu 22.04 & 24.04
This is a step by step beginner’s guide shows how to configure your Ubuntu laptop to limit the maximum battery charge level.
For those who keep laptop plugged in for long term, it’s better to set battery charge limit to reduce the battery wear by constantly trickle charging.
Linux Kernel supports battery charge threshold, and there’s a merge request to provide graphical UI options in Gnome Control Center. Until GNOME officially support this feature, you can follow this tutorial to do the job step by step.
Step 1: Check if your laptop supports charge threshold
Most modern laptops support charge limiting, but old machines may NOT. In my case, the cheap HP laptop does not support it, but ThinkPad does.
Ctrl+Alt+T on keyboard to open up a terminal window. Then run command:
It will list the device names including your battery, usually BAT0, BAT1, BATC, BATT, etc.
In my case, its
BAT0. To tell if it supports battery charge limit, run:
BAT0 in last command accordingly. And, it will output following 2 files telling that its support the feature!
Step 2: Set Battery Charge Start & Maximum Limit Level
To set the charge limit, simply set the value number (from
100) of the 2 key files listed above.
For example, set the battery start charging level to 80. So, when power supply is plugged in, it only starts charging when battery is lower than 80%.
sudo sh -c "echo 80 > /sys/class/power_supply/BAT0/charge_control_start_threshold"
Here you need to replace
BAT0 according to last step, and change value 80 as you want.
To set maximum battery charging limit, run command:
sudo sh -c "echo 88 > /sys/class/power_supply/BAT0/charge_control_end_threshold"
Here I set to stop battery charging when reaching level 88%. Also, change the number and
The changes apply immediately after running the commands above. You can verify by checking the battery icon status in system tray, or run command below to tell if it’s charging:
Step 3: Create Battery Charge Threshold Service (Optional)
The previous steps works in my ThinkPad even after reboot. If NOT for you, then create a systemd service to make it permanent.
To create a service to automatically set maximum battery charge limit on startup, do:
1. First, press
Ctrl+Alt+T on keyboard to open terminal. When it opens, run command:
sudo nano /etc/systemd/system/battery-charge-end-threshold.service
This command creates a service file and edit via the
nano command line text editor. You can replace
gedit for Ubuntu 22.04, or
gnome-text-editor for Ubuntu 24.04. Though,
nano works in most desktop environments.
When the file opens, paste following lines:
[Unit] Description=Set Battery Charge Maximum Limit After=multi-user.target StartLimitBurst=0 [Service] Type=oneshot Restart=on-failure ExecStart=/bin/bash -c 'echo 90 > /sys/class/power_supply/BAT0/charge_control_end_threshold' [Install] WantedBy=multi-user.target
BAT0 according to step 1, and change number
90 as you want. Finally, press ctrs+s to save file, and ctrl+x to exit.
2. After created the service file, run the following commands one by one to enable & start it.
systemctl enable battery-charge-end-threshold.service
systemctl start battery-charge-end-threshold.service
If you also want to create a service to set battery start charging level, re-do the last steps, but replace the service name, as well as level number and
charge_control_start_threshold in file content.
Set Battery Charge Limit via TLP (Another Way)
The popular TLP power saving tool also has the feature to set charge threshold for laptop users. Though, you still need the battery support. Meaning the
charge_control_end_threshold files must exist under /sys/class/power_supply/BAT*.
1. First, press
Ctrl+Alt+T on keyboard to open terminal. Then, run command to install TLP:
sudo apt install tlp
For the latest version, see the official Docs.
2. Then, edit the config file by running command:
sudo nano /etc/tlp.conf
Also, you may replace
nano text editor according to your desktop environment. When file opens, find out the following 2 lines (use Ctrl+W in nano), un-comment (remove # at the beginning), and change the number as you want.
systemctl enable tlp.service
systemctl start tlp.service
systemctl status tlp.service to verify the service status. For more about the TLP power saving tool, see its website.
To uninstall TLP, open terminal (Ctrl+Alt+T) and run command:
sudo apt remove tlp tlp-*
To remove the manually created startup service, run commands below one by one to stop, disable and remove the service file.
systemctl stop battery-charge-end-threshold.service
systemctl disable battery-charge-end-threshold.service
sudo rm /etc/systemd/system/battery-charge-end-threshold.service
Finally, you may reset the start and end charging threshold via commands (also replace
sudo sh -c "echo 0 > /sys/class/power_supply/BAT0/charge_control_start_threshold"
sudo sh -c "echo 100 > /sys/class/power_supply/BAT0/charge_control_end_threshold"