问题描述
如果笔记本电脑已开机并连接到交流电源,是否有办法发出命令,告诉它不要给电池充电?
编辑:\n如果有办法让系统认为电池已充满 100%,则电池充电可能会停止。
最佳办法
在 Thinkpad 设备上,您可以在 Ubuntu 中控制电池充电的开始和停止。在终端中运行以下命令来安装 tp-smapi
:
sudo apt-get install tp-smapi-dkms
sudo modprobe tp_smapi
然后将您想要的收费阈值(您自己的值)写入 /sys/devices/platform/smapi
中的虚拟文件:
echo 10 | sudo tee /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 100 | sudo tee /sys/devices/platform/smapi/BAT0/stop_charge_thresh
在上述命令中,您可以将值 10 和 100 更改为任意值。第一个值将帮助您选择必须在什么级别开始充电,第二个值将让您选择必须在什么级别停止充电。
次佳办法
您无法使用用户空间中的任何已知软件界面禁用充电。事实上,/sys/class/power_supply/BAT0
的电池控制是从 ACPI _BIF、_BIX 和 _BST 控制返回的静态和动态读数,这些是只读的。
没有允许您禁用电池充电的 ACPI 控件,并且在我曾经使用过的所有常见 x86 移动平台上,电池控件都不会暴露。 \n通常,此数据来自电池电量计,并通常由嵌入式控制器使用 bit-banging i2c 读取。因此,您实际上几乎没有机会对此进行逆向工程,并且大多数不允许禁用电池充电。
第三种办法
我可以通过将 /sys/class/power_supply/BAT0/charge_control_end_threshold
设置为 60
as su 将阈值设置为 60%。 Ubuntu 显示充电图标,但充电不会超过 60%。电池充电指示灯 LED 也变成白色,表示充电已停止,就像 Windows 上华硕“电池寿命模式”激活时的行为一样。此外,该文件在每次启动时都会重置为 100,您可能需要添加一条规则以在启动时将其设置为 60。
Source。我没有足够的声誉来评论这个问题,所以我用自己的经历来回答。请注意,大多数使用此方法的人都拥有华硕笔记本电脑,并且华硕默认在 Windows 上具有类似的功能。我非常怀疑这是否会产生影响,但一位使用 Ideapad 的用户表示他们找不到该文件。 ThinkPad 用户应尝试使用 TLP 的电池阈值设置。
编辑:注意,这似乎是一种非常肮脏的方法,导致我的机器在某些情况下无法启动。这花了我很多尝试才弄清楚,因为它似乎在某些时间起作用,并且在睡眠后无法启动。
编辑2:似乎这个解决方案实际上在 Arch Wiki 上有很好的记录。事实上,他们已经为我在编辑中引用的问题提供了解决方法,请参阅休眠后持续部分,其中提供了睡眠后黑屏问题的解决方法。
第四种办法
这高度依赖于硬件。大多数笔记本电脑在硬件级别上不会允许您停止对电池充电。 LION 电池实际上受益于小的充电-充电周期,并且大多数笔记本电脑都会在硬件级别内置该周期。
这意味着电池指示器显示 100%,实际上电池正在放电和充电,以保持其健康。此外,对于大多数笔记本电脑来说,100% 并不是已满。
有些 Windows 笔记本电脑可以选择 “Disable charging”,但这只是镍镉电池的倒退。如今,”setting” 所做的只是启用 “performance” 模式。
如果您正在寻找相同类型的开关,那么我推荐 Jupiter 。它将允许您轻松地在性能模式之间切换,但同样不能直接控制充电。
因为停止充电周期对于当前的电池来说非常糟糕,所以它不是很受欢迎。因为它并不流行,我怀疑您是否会找到一个好的 GUI 工具来完成它。您最好的选择可能是环顾 /sys/class/power_supply/BAT0
等区域,看看能找到什么,但我很确定,您将无法禁用充电。