Lenovo Ideapad battery conservation mode on GNU/Linux

Enabling battery conservation mode on a GNU/Linux box.

For the last few weeks I was using Arch Linux as my main OS but I needed 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 in the following links, or just skip to the solutions down below.

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 didn’t test this solution myself because the next two solutions were easier and did work 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 acpi_call; otherwise install acpi_call-dkms.

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. It may be different 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 #

Same as for 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

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 too 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

🏷️ all tags