我的笔记本电脑是Lenovo T400,操作系统是Ubuntu 12.04。
我无法调整电池开始充电和停止充电的阈值。我观察到它目前的启动充电阈值在40%左右,停止充电阈值在60%左右。我忘了是不是我,我用什么程序控制电池在60%时停止充电,在40%时开始充电。
我按照我之前的帖子https://askubuntu.com/questions/58789/how-to-check-charged-percentage-of-battery-and-to-adjust-its-thresholds,但我没有找到/sys/devices/platform/smapi
。我也有/proc/acpi/battery/BAT0/
,但我只有三个文件 alarm
,info
并且state
。
我想调整阈值。所以我想知道该怎么做?
答案1
较新的 Lenovo ThinkPad(例如我的 E540)与 tp_smapi-dkms 不兼容。幸运的是我发现TLP实用程序可以使用不同的模块——例如 tp_smapi 或 thinkpad_acpi DKMS 模块-- 将阈值传达给电池。其他 Lenovo 笔记本电脑可能使用 acpi_call 内核模块与电池通信。
笔记:当内核 5.17 可用时,它将有一个名为 natacpi 的新内核模块,它消除了对 tp_smapi 的需要。此外,最新版本的 TLP 支持一些其他制造商硬件中的收费阈值。
如今,TLP 可通过标准 Ubuntu 或 Debian 存储库获得。 (尽管您可能会受益于使用可用的最新版本TLP网站安装软件包。)
安装 TLP 后,使用配置文件 /etc/default/tlp 中的两行设置电池充电阈值
START_CHARGE_THRESH_BAT0=65
STOP_CHARGE_THRESH_BAT0=80
此示例告诉 TLP 将电池阈值设置为在 65% 时开始充电并在 80% 时停止充电。我发现即使在启动到未安装 TLP 的不同操作系统时,阈值仍然正确存在。 (尽管我认为如果您启动到 Windows 或其他安装了电源管理工具的操作系统,该操作系统可能会覆盖之前设置的充电阈值。)
要暂时使电池充满电,请发出以下终端命令:
$ sudo tlp fullcharge
然后电池将充电至其最大容量,然后恢复到之前的阈值。
笔记:如果您的笔记本电脑不是“ThinkPad”,TLP 可能无法设置您的电池电量。不过最近的版本增加了支持其他品牌和型号。
如果您的供应商为 Windows 提供电源管理实用程序,您可能可以使用某种形式的 Windows 启动来设置电池充电级别,然后重新启动到 Linux。根据我的经验,电池充电阈值设置在系统重新启动后仍然存在。
答案2
你需要安装tp_smapi-dkms
,只需执行
apt-get install tp_smapi-dkms
完成后,用于lsmod | grep tp_smapi
检查模块是否已加载,调整充电阈值,执行以下操作
echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 60 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
添加这些行以/etc/rc.local
在引导时运行它们。
该模块至少可以在 X220 上运行。
答案3
在我的笔记本电脑(Yoga 260)上,我必须获得 acpi-call-dkms,它提供了 acpi_call 内核模块:
sudo apt install tlp acpi-call-dkms
sudo tlp setcharge 40 60 #set the start and stop thresholds to 40% and 60%
输出sudo tlp stat -b
:
--- TLP 1.1 --------------------------------------------
+++ ThinkPad Battery Features
tp-smapi = inactive (unsupported hardware)
tpacpi-bat = active
+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer = SMP
/sys/class/power_supply/BAT0/model_name = 00HW027
/sys/class/power_supply/BAT0/cycle_count = (not supported)
/sys/class/power_supply/BAT0/energy_full_design = 44000 [mWh]
/sys/class/power_supply/BAT0/energy_full = 37970 [mWh]
/sys/class/power_supply/BAT0/energy_now = 18910 [mWh]
/sys/class/power_supply/BAT0/power_now = 0 [mW]
/sys/class/power_supply/BAT0/status = Unknown (threshold effective)
tpacpi-bat.BAT0.startThreshold = 40 [%]
tpacpi-bat.BAT0.stopThreshold = 60 [%]
tpacpi-bat.BAT0.forceDischarge = 0
Charge = 49.8 [%]
Capacity = 86.3 [%]
答案4
对于 LG Gram 笔记本电脑,有一个特定的内核驱动程序,该驱动程序似乎是开箱即用的,至少在 EndeavourOS 中是这样,有关 LG Gram 的特定功能,请参阅内核文档。
特别是,它还提供了“电池保养限制”。引用该页面:
写入
80
/100
设置/sys/devices/platform/lg-laptop/battery_care_limit
电池充电的最大容量。限制充电可减少电池容量随时间的损失。
100
该值在内核启动时重置。
80
因此,例如,您可以使用以下命令手动将限制设置为:
echo '80' | sudo tee /sys/devices/platform/lg-laptop/battery_care_limit
我在我的 LG Gram 16 上进行了测试,它似乎工作得很好:当插入交流电并充电 85% 时,KDE 表示它正在充电,但百分比保持在 85%(“充满时间”被阻止为 1: 41)。
正如上面引用中所述,该值将在内核启动时重置,因此您可能需要再次更改该值。
我想对于更自动化的解决方案,tlp
提供支持也为此。