My laptop is Lenovo T400, and OS is Ubuntu 12.04.

I have not been able to adjust the thresholds for battery starting charging and stopping charging. I observed that its current starting charging threshold is about 40%, and stopping charging threshold is about 60%. I forgot if it was me and which program I used to control the battery to stop charging at 60% and start charging at 40%.

I followed my previous post https://askubuntu.com/questions/58789/how-to-check-charged-percentage-of-battery-and-to-adjust-its-thresholds, but I don't find /sys/devices/platform/smapi. Also I have /proc/acpi/battery/BAT0/, but I have only three files alarm, info and state.

I want to adjust the thresholds. So I wonder how to do that?

  • Try modprobe tp_smapi as root, and then see if the files under /sys/devices/platform/smapi are there. – Renan Sep 18 '12 at 17:18
  • @Renan: the module is not found FATAL: Module tp_smapi not found.. – Tim Sep 18 '12 at 17:44
  • 1
    Install tp_smapi according to the instructions there: thinkwiki.org/wiki/… then try again. – Renan Sep 18 '12 at 17:46
  • @Renan: Is tp_smapi only for Lenovo laptops? Are battery charging management modules different for different brands of laptops? – Tim Sep 19 '12 at 1:54
  • Some Lenovo laptops have specific features which tp_smapi gives you access to. I don't know about other brands, but they probably have similar tools (I have a Dell laptop and I see that I have a dell_laptop and dell_wmi module, for example; I never explored it to see what it does) – Renan Sep 19 '12 at 2:17

You need to install tp_smapi-dkms, just do

apt-get install tp_smapi-dkms

When finished, use lsmod | grep tp_smapi to check if module is loaded, to adjust the charge thresholds, do something like this

echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 60 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

Add these lines to /etc/rc.local to run them at boot.

This module works at least on X220.

  • For anybody getting permission denied even with sudo privileges, try echo 60 | sudo tee /sys/devices/platform/smapi/BAT0/stop_charge_thresh. – Andrey Kaipov Jan 21 '16 at 5:36

Newer Lenovo ThinkPads (such as my E540) are not compatible with tp_smapi-dkms. Fortunately I found that the TLP utility can use either of two different modules -- the tp_smapi OR the thinkpad_acpi DKMS modules -- to communicate the thresholds to the battery.

Nowadays TLP is available via standard Ubuntu or Debian repositories. (Though you may benefit from the latest version available using TLP website to install the packages.)

After installing TLP, set the battery charge thresholds using two lines in the configuration file /etc/default/tlp


This example tells TLP to set the battery thresholds to start charging at 65% and stop charging at 80%. I find that the thresholds persist correctly even when booting into a different OS that doesn't have TLP installed. (Though I presume if you booted into Windows or another OS that DOES have power management tools installed, that OS might overwrite the previously set charge thresholds.)

To TEMPORARILY bring the battery to a full charge, issue the following terminal command:

 $ sudo tlp fullcharge

The battery will then charge to its maximum capacity, and revert to the previous thresholds afterwards.

Note: If your laptop is not a "ThinkPad," TLP probably cannot set your battery charge levels. If your vendor supplies a power management utility for Windows, you can probably boot using some form of Windows to set the battery charge levels and then reboot into linux. In my experience, the battery charge threshold settings persist after system reboots.

  • This only works for ThinkPads, what about other models? – Akronix Nov 25 '18 at 18:20
  • @Akronix I believe TLP can be installed on several different kinds of laptop, and depending upon the hardware, firmware, and architecture, relies upon different libraries. I only recently became more aware of the different libraries because my relatively modern Lenovo uses TLP slightly differently than older ThinkPads. – Tommy Trussell Dec 3 '18 at 23:30
  • However, it does not work in my G-Series Lenovo – Akronix Jan 20 at 12:27
  • @Akronix I had to look ... my ThinkPad is an E540. By following the menus at support.lenovo.com I determined that mine is known as an "Edge Series Thinkpad." I had to explore many sites before I got almost all of the hardware working as I wanted (I gave up on the fingerprint sensor, for example). – Tommy Trussell Jan 27 at 21:46
  • 1
    @Akronix yeah, I have never booted Windows on mine. I probably still have the disks, but I've tried to stay "pure." Unfortunately Lenovo has apparently quietly quit supporting linux even on my model, even though I bought it BECAUSE it was "certified" for Ubuntu and Red Hat. – Tommy Trussell Jan 31 at 15:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.