You are not logged in.
I got my hands on a Lenovo Legion 7 16IRX9 (2024) laptop (Product Specifications Reference). Immediately removed the Windows installation it came with and installed archlinux.
The device has a massive 99.9Wh battery and comes with a 230W charger. To get the most out of the battery for a long time, I was concerned with battery health from day one. I enabled battery conservation mode with the ideapad_laptop module which worked out of the box and caps the battery charge at ~80%. See also archwiki/Lenovo#Battery_conservation_mode.
The Lenovo Legion devices come with a rapid charge feature. I would like to disable this feature, to reduce stress on the battery as it heats up quite dramatically. Unfortunately, ideapad_laptop does not expose the rapid charge feature (yet?). See also kernel/bug?id=216176.
The archwiki suggests ways to disable the rapid charge feature with acpi_call. However, instructions differ from model to model, see also archwiki/search=Rapid+Charge. Unfortunately, the commands presented do not seem to fit my particular model. I tried the following commands so far to verify if rapid charge is enabled:
# echo '\_SB.PC00.LPCB.EC0.QCHO' > /proc/acpi/call
# cat /proc/acpi/call; printf '\n'
Error: AE_NOT_FOUND
# echo '\_SB.PCI0.LPC0.EC0.QCHO' > /proc/acpi/call
# cat /proc/acpi/call; printf '\n'
Error: AE_NOT_FOUND
# echo '\_SB.PCI0.LPC0.EC0.FCGM' > /proc/acpi/call
# cat /proc/acpi/call; printf '\n'
Error: AE_NOT_FOUND
# echo '\_SB.PCI0.LPC0.EC0.QKCM' > /proc/acpi/call
# cat /proc/acpi/call; printf '\n'
Error: AE_NOT_FOUNDSo I wanted to ask if there is a strategy on how to figure out how to find the correct acpi_call command? Did I use acpi_call correctly? Or do I really need to reinstall Windows to use Lenovo Vantage solely to disable rapid charge? I read that the settings are preserved once you somehow manage to deactivate rapid charge. It is a pity that these battery features are not exposed through UEFI/BIOS.
Any help or hint is appreciated! Thank you!
Tomatopaste
Last edited by Tomatopaste (2024-05-28 11:50:05)
Offline
So I wanted to ask if there is a strategy on how to figure out how to find the correct acpi_call command
It all comes down to decompiling ACPI tables and optionally checking with WMI from the Windows for more detailed information.
Or do I really need to reinstall Windows to use Lenovo Vantage solely to disable rapid charge?
If you don't want to bother yourself with debugging, this is a great way to do it.
I read that the settings are preserved once you somehow manage to deactivate rapid charge.
The controller will store these settings if there's any power (battery disconnection/deep discharge will reset conservation mode, rapid charge and others).
There's no problem with how you call the functions, it's just that they're not suitable for your machine. If you really want to try to switch it from linux I can try to help you if you provide an ACPI dump ![]()
Offline
If you really want to try to switch it from linux I can try to help you if you provide an ACPI dump
I would like to make use of your help ![]()
Can you point me towards some resources on how to create such a dump? ACPI is new to me...
Ideally, I would summarize the results in another archwiki page for this specific Lenovo device. In the long run, I think this would be the best solution for me and the community ![]()
Offline
You need to install the acpica package to get the acpidump program, then you can dump ACPI:
# acpidump | curl -F 'file=@-' https://0x0.stOffline
You can find the ACPI dump here: https://0x0.st/XZCb.txt
I was rather unsuccessful so far finding patterns like the ones in the first post.
Offline
Can you try to call
\_SB.PC00.LPCB.EC0.FCGMIt should query whether fast charging mode is enabled (0x1) or not (0x0).
If confirmed, that should do the trick:
\_SB.PC00.LPCB.EC0.VPC0.SBMC 0x07 # enable
\_SB.PC00.LPCB.EC0.VPC0.SBMC 0x08 # disableVerify with the first query afterwards.
Offline
Thank you yataro! These commands work exactly as you described. I enabled and disabled the feature, and verified its status. The battery no longer heats up as before, so I consider this a success!
Out of curiosity, how did you find these queues?
I was looking at the configuration of the Lenovo Yoga 9i among others, which has several power management profiles. The Legion 7 has some power profiles named balance mode/quiet mode/performance mode/custom mode according to the manual. Maybe we can find a way to switch between these modes as well with acpi_call?
Offline
Out of curiosity, how did you find these queues?
You can use iasl to decompile the DSDT table(s) and start looking for patterns. Luckily I have some experience with this, and there are already many successful finds on the internet. Sometimes the methods don't match, and you have to find which method changes the value. But usually the methods are the same from machine to machine, just slightly different device names, like PC00 and PCI0. Knowing these patterns, it is easy to find the right method and its path.
Good reads on this topic:
https://ubuntu.com/blog/debug-dsdt-ssdt … -utilities
https://github.com/dortania/Getting-Started-With-ACPI
https://github.com/ToddMaxey/SmokelessC … FEATURE.md
The Legion 7 has some power profiles named balance mode/quiet mode/performance mode/custom mode according to the manual. Maybe we can find a way to switch between these modes as well with acpi_call?
I did that before
. Sure you can do this with ACPI, but you can just by press Fn + Q buttons on laptop's keyboard.
What's interesting is that it's pretty easy to add all the features for switching rapid charging, performance mode to the built-in `ideapad-laptop` driver. But no one has done it yet.
Also, I've found an interesting project https://github.com/johnfanv2/LenovoLegionLinux . It looks unfinished but I haven't tried it though.
Offline
Sure you can do this with ACPI, but you can just by press Fn + Q buttons on laptop's keyboard.
Ha! And I thought it just changes the LED color and nothing else without Lenovo Vantage. I will play around with the profiles a bit to confirm.
Thank you so much, also for the additional information on how to decompile the DSDT table. I will mark this thread as solved.
Offline
Ha! And I thought it just changes the LED color and nothing else without Lenovo Vantage. I will play around with the profiles a bit to confirm.
From my observations the mode change does nothing but regulate the cooling system
(both Windows and Linux). The laptop will indeed run slower in silent mode (blue) if the CPU starts to throttle because of the heat.
Offline