Lenovo Ideapad battery conservation mode on GNU/Linux

Have you been struggling to enable battery conservation mode on your Lenovo Ideapad while running GNU/Linux? You’re not alone. For weeks, I found myself booting into Windows 10 daily just to toggle this feature. Today, I’m excited to share a solution that allows you to enable battery conservation mode directly from Arch Linux.

Background #

Battery conservation mode is a feature that limits battery charging to around 55-60% of its capacity. This can significantly extend the overall lifespan of your battery, especially if you frequently use your laptop while plugged in.

After extensive research and testing, I’ve found two effective methods to enable this feature on GNU/Linux. Let’s dive into the solutions.

Solutions #

I’ll present two solutions: one using the acpi_call module and another using the ideapad_laptop module. The second method is recommended for its simplicity and reliability.

acpi_call solution #

This method utilizes the acpi_call kernel module.

Install kernel module #

First, install the appropriate package based on your kernel:

# For kernels from official repositories
pacman -S acpi_call

# For custom kernels
pacman -S acpi_call-dkms

Enable battery conservation mode #

To enable the mode, use one of these commands:

# This worked for my Ideapad
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 3' > /proc/acpi/call

# Try this if the above doesn't work
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 0' > /proc/acpi/call

Note: The correct value (3 or 0) may vary depending on your specific Ideapad model.

Disable battery conservation mode #

To disable the mode, use one of these commands:

# This worked for my Ideapad
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 5' > /proc/acpi/call

# Try this if the above doesn't work
echo '\_SB.PCI0.LPCB.EC0.VPC0.SBMC 1' > /proc/acpi/call

This method uses the ideapad_laptop kernel module, which is often pre-installed on many Linux distributions.

Is ideapad_laptop loaded? #

First, check if the module is loaded:

lsmod | grep ideapad_laptop

If you don’t see any output, you may need to load the module manually or ensure it’s included in your kernel.

Find the right path for your model #

Locate the correct path for your Ideapad model:

ls /sys/bus/platform/drivers/ideapad_acpi

Look for an entry similar to VPC2004:00. Your specific model might have a different identifier.

Read battery conservation mode status #

Check the current status of battery conservation mode:

cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode

A value of 1 indicates the mode is enabled, while 0 means it’s disabled.

Enable battery conservation mode #

To enable the mode:

echo 1 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode

Disable battery conservation mode #

To disable the mode:

echo 0 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode

Conclusion #

With these methods, you should now be able to control the battery conservation mode on your Lenovo Ideapad running GNU/Linux. The ideapad_laptop solution is generally more straightforward and reliable, but the acpi_call method can be a useful alternative if you encounter any issues.

Remember to adjust the commands if your system uses a different identifier than VPC2004:00. If you’re still facing difficulties, don’t hesitate to check the Arch Linux wiki or reach out to the Linux community for further assistance.

Happy computing, and may your battery life be long and prosperous!