How can I stop charging my battery at 60%?

Kernel 5.4 did bring the ability to set the battery percentage under which charging will trigger.

The change in asus-wmi added a charge_control_end_threshold in sysfs.

You can manually set the charge_control_end_threshold to 60 in /sys/class/power_supply/BAT0/charge_control_end_threshold as su to test if it works on your laptop. You should unplug your device and let the battery discharge a little and then plug your device, if system doesn't charge your battery when it's over 60% then you're good. but it will regenerate every time you reboot.

A simple udev rule can be made:

KERNEL=="BAT0", SUBSYSTEM=="power_supply", ATTR{charge_control_end_threshold}="80"

Within /etc/udev/rules.d

Read the udev arch wiki for more info.


TLP – Linux Advanced Power Management TLP brings you the benefits of advanced power management for Linux without the need to understand every technical detail. TLP comes with a default configuration already optimized for battery life, so you may just install and forget it. Nevertheless TLP is highly customizable to fulfil your specific requirements.

Taken from this topic How can I limit battery charging to 80% capacity? but here you can found about ThinkPad laptops too Ubuntu package can found here: Ubuntu Package


I wrote a command line application that does this.

The easiest way to get started is download the app from the releases page and run

$ ./bat --help

from the terminal in the directory where it is located which should show the help documentation.

If there's an error, it might have to do with permissions. The following command might solve the problem.

chmod +x ./bat

Basically, running

$ ./bat --threshold

will print out the current threshold.

To set a new threshold, say 60%, run

./bat --threshold 60

To persist the current threshold between restarts, run

sudo ./bat --persist

Note: Persisting uses systemd under the hood but this is bundled with most Linux distributions including Ubuntu.

Tip: Putting the app in a directory like /usr/local/bin/ that is in the $PATH will enable you to run it from anywhere and not just in the directory the app is in. Then the above commands become,

bat --help
bat --threshold 60
bat --persist

respectively.