All Articles

Support Articles

Table of Contents

Battery Thresholds

Charging thresholds allow your System76 laptop to avoid charging the battery until it has dropped below a lower bound (the start threshold), and to stop charging when it reaches an upper bound (the end threshold). This is useful when your laptop is plugged into an AC power adapter for extended periods of time, as it prevents unnecessary micro-charging that would reduce battery longevity.

The default charging profile for System76 laptops with Open Firmware has a start threshold of 90 and a stop threshold of 100. This increases battery longevity while keeping the battery very close to a full charge.

To determine if your laptop has Open Firmware or proprietary firmware, see this article. (If a system has Open Firmware, then it must also have Open EC to work with charging thresholds.) See Charging Thresholds for Open Firmware systems or FlexiCharger for proprietary firmware systems.

Configuring Charging Thresholds (Open Firmware)

Note: This feature is not currently finished. Currently, the thresholds are reset when the EC is reset (which happens when the system is shut down and the power is unplugged). Once the feature is complete, the thresholds will be persistent and a GUI will be available to set them. To work around this limitation in the short term, you can use systemd to set thresholds at boot.

Using the terminal

You can see the thresholds that are currently set using this command:

system76-power charge-thresholds

You can list the available charging profiles using this command:

system76-power charge-thresholds --list-profiles

Then, you can select a profile using one of these commands:

system76-power charge-thresholds --profile full_charge
system76-power charge-thresholds --profile balanced
system76-power charge-thresholds --profile max_lifespan

You can also set custom thresholds without using a profile. For example, this command will set the start threshold to 40 and the end threshold to 80:

system76-power charge-thresholds 40 80

Via sysfs

Charging thresholds are exposed by the firmware through ACPI, and the system76_acpi kernel module makes them available through standard sysfs entries:

  • /sys/class/power_supply/BAT0/charge_control_start_threshold
  • /sys/class/power_supply/BAT0/charge_control_end_threshold

The thresholds can be controlled by reading from and writing to these sysfs files.

At boot

To work around the limitation in open firmware causing the thresholds to be reset when the system is shut down and unplugged, you can set the thresholds at boot via systemd. To do so, create a file called /etc/systemd/system/charge-thresholds.service with the following contents:

[Unit]
Description=Set the charge threshold at startup.
After=default.target

[Service]
Type=simple
ExecStart=system76-power charge-thresholds 40 80

[Install]
WantedBy=default.target

Then, enable the service using this command:

sudo systemctl enable charge-thresholds.service

Finally, start the service using sudo systemctl start charge-thresholds.service or reboot to apply the thresholds.

Configuring FlexiCharger (proprietary firmware)

FlexiCharger is an implementation of charging thresholds in proprietary firmware, made available as a UEFI setting.

To adjust the thresholds, reboot the computer and enter the UEFI setup utility by holding down F2 and selecting Setup Utility. Navigate to Advanced, then Advanced Chipset Control, and set FlexiCharger to Enabled. Two new options will appear where you can set the start and stop thresholds.

Enabling FlexiCharger

Once configured, save and exit the setup utility. The thresholds can be disabled at any time by setting FlexiCharger back to Disabled.

Note: The pang12, pang13 and pang14 do not support FlexiCharging.