Lenovo Ideapad battery conservation mode on GNU/Linux
For the last few weeks, I have been using Arch Linux as my main OS, but I have had to boot Windows 10 every day just to enable the battery conservation mode.
Today, I finally found a way to enable battery conservation mode directly from Arch Linux. You may want to read the posts at the following links, or just skip to the solutions down below.
- https://www.linux.org.ru/forum/general/10574293
- https://askubuntu.com/questions/1038471/problem-with-lenovo-battery-threshold
- https://askubuntu.com/questions/385669/lenovo-ideapad-battery-limit
- https://forums.lenovo.com/t5/Other-Linux-Discussions/ideapad-linux-acpi-driver-for-power-managment/td-p/2267447
- https://forums.linuxmint.com/viewtopic.php?f=49&t=286237#p1583578
- https://wiki.archlinux.org/index.php/Laptop/Lenovo#Battery_Conservation_Mode_on_IdeaPad_laptops
Solutions #
Three different solutions were suggested in the posts. The first one, explained
in this forum reply
requires a Windows installation and Lenovo Vantage app installed to enable the battery conservation mode and monitor
which byte actually changed using RWEverything
. I did not personally test this solution because the next two solutions
were easier and worked for me.
acpi_call
solution #
This solution requires the kernel module acpi_call
.
Install kernel module #
As explained in ArchWiki, if you’re running a kernel from
official repositories, you need to install the acpi_call
package; otherwise, install the acpi_call-dkms
package.
pacman -S acpi_call
# Or
pacman -S acpi_call-dkms
Enable battery conservation mode #
The value 3 worked on my Ideapad to enable battery conservation mode. The value may differ for your model. This post suggests that the value 0 may work for some models.
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 3' > /proc/acpi/call
# Or
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 0' > /proc/acpi/call
Disable battery conservation mode #
Just like with the value 3, the value 5 below worked on my model but may not work on yours. The same post suggests that you can try the value 1 to disable the battery conservation mode.
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 5' > /proc/acpi/call
# Or
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 1' > /proc/acpi/call
ideapad_laptop
solution (recommended) #
This solution requires the kernel module ideapad_laptop
to be loaded. The solution is also described in
the ArchWiki.
Is ideapad_laptop
loaded? #
lsmod | grep ideapad_laptop
Find the right path for your model #
ls /sys/bus/platform/drivers/ideapad_acpi
Search for something that looks similar to VPC2004:00
. If you have something different, replace it in the commands
below.
Read battery conservation mode status #
Value 1 means conservation mode is enabled, and value 0 means it’s currently disabled.
cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
Enable battery conservation mode #
echo 1 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
Disable battery conservation mode #
echo 0 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode