Controlling the battery charging threshold on Asus laptop with Ubuntu 20.04

From kernel 5.4+ there is an ability to control charging of the laptop battery. In the /sys/class/power_supply/BAT0/ are some variables useful for battery monitoring and controlling.

ls /sys/class/power_supply/BAT0/
alarm device@ manufacturer serial_number uevent capacity energy_full model_name status voltage_min_design
capacity_level energy_full_design power/ subsystem@ voltage_now charge_control_end_threshold energy_now power_now technology cycle_count hwmon2/ present type

One of those variables is charge_control_end_threshold, it is just an integer number indicating when to stop charging.


cat /sys/class/power_supply/BAT0/charge_control_end_threshold

we can see actual value of treshold.

Simply whit writing into a variable, we can control when charging stops:

echo 70 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold

Whit this command, treshold is set to 70% and charging will stop on 69%.

Just for convenience, I’ve been made this bash script: /usr/bin/tresho

echo $1 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold

And now just type on command prompt: tresho 50 or whatever value you want.

Set this variable during system startup, for making it permanent

Create the following systemd service: etc/systemd/system/tresho.service




And this bash script: /usr/bin/

echo '70' | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold

Then activate the service:

sudo service tresho start

Alternate solution

For adjusting battery charging threshold on system startup  create the following systemd service:

Description=Set the battery charge threshold

ExecStart=/bin/bash -c 'echo 70 > /sys/class/power_supply/BAT0/charge_control_end_threshold'


and then enable it.

Warning: As of systemd 246, activation of this unit may cause to infinite restart of service above.



Create this unit file and enable it. The service above should be disabled since the path unit activating it.

External links: