我可以使用下面的脚本设置/获取电池充电阈值,以在 85% 时停止电池充电:
echo 85 > /sys/class/power_supply/BAT0/charge_control_end_threshold
cat /sys/class/power_supply/BAT0/charge_control_end_threshold
但是,当我的笔记本电脑关闭时,该设置不会被遵守,并且充电会继续超过阈值。如何让这个设置在关机后生效呢?
值得一提的是,我的笔记本电脑是 ThinkPad E15,并且安装了 Arch Linux 和 Windows 11。当我调查这个问题时,我做了以下事情:
- 启动至 Windows,使用 Lenovo Vantage 软件设置阈值,例如
X%
。- 从 Windows 关闭笔记本电脑的电源。阈
X%
值得到遵守,电池充电不会超过该阈值。 - 启动到Linux,门槛依然是
X%
。cat /sys/class/power_supply/BAT0/charge_control_end_threshold
显示X
. - Linux 运行时会遵守该阈值。
- 从 Linux 关闭笔记本电脑的电源。未遵守阈值,电池充电超出阈值。
- 再次启动至 Windows,Lenovo Vantage 中的阈值仍然显示
X%
。 - 从 Windows 中再次关闭笔记本电脑的电源。该阈值仍然受到遵守,并且电池充电不会超过该阈值。
- 从 Windows 关闭笔记本电脑的电源。阈
- 启动到 Linux,写入
charge_control_end_threshold
设置阈值,例如Y%
。- Linux 运行时会遵守该阈值。
- 从 Linux 关闭笔记本电脑的电源。未遵守阈值,电池充电超出阈值。
- 启动至 Windows,Lenovo Vantage 中的阈值仍然显示
X%
(不是Y%
)。
- 启动至 Windows,设置阈值,然后按住电源按钮约 10 秒强制关闭笔记本电脑电源。
- 未遵守阈值,电池充电超出阈值。
- 启动至 Linux,设置阈值,然后按住电源按钮约 10 秒强制关闭笔记本电脑。
- 未遵守阈值,电池充电超出阈值。
- 启动至 Windows,卸载我能找到的所有 Lenovo Vantage 软件/驱动程序。
- 从 Windows 关闭笔记本电脑的电源。该阈值仍然受到遵守,并且电池充电不会超过该阈值。
我还注意到,当 Windows 关闭笔记本电脑电源时,电源按钮上的 LED 指示灯会闪烁。看起来,当 Windows 关闭笔记本电脑时,它会执行一些额外的操作来保留阈值并使其在笔记本电脑关闭时生效。知道如何找出它的作用并在从 Linux 关闭电源时执行相同的操作吗?