如果笔记本电脑已开机并连接到交流电源,有没有办法发出命令告诉它不要给电池充电?
编辑:
如果有办法欺骗系统,让其认为电池已经充满电,那么也许可以停止电池充电。
答案1
在 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 更改为任意值。第一个命令将帮助你选择充电必须达到的水平开始第二个值将让你选择必须充电到什么水平停止。
答案2
您无法使用任何已知的软件接口从用户空间禁用充电。事实上,电池控制/sys/class/power_supply/BAT0
是 ACPI _BIF、_BIX 和 _BST 控制返回的静态和动态读数,这些是只读的。
没有 ACPI 控件允许您禁用电池充电,而且在我曾经使用过的所有常见 x86 移动平台上,电池控件均未公开。通常,这些数据来自电池电量计,并通常由嵌入式控制器使用位拆解 i2c 读取。因此,您实际上几乎没有机会对此进行逆向工程,而且大多数平台都不允许禁用电池充电。
答案3
我可以将阈值设置为 60%,方法是将其设置/sys/class/power_supply/BAT0/charge_control_end_threshold
为60
su。Ubuntu 显示充电图标,但充电量不会超过 60%。电池充电指示灯 LED 也变为白色,表示充电已停止,就像在 Windows 上激活华硕的“电池寿命模式”时的行为一样。此外,该文件在每次启动时都会重置为 100,您可能需要添加一条规则以在启动时将其设置为 60。
来源。我没有足够的声誉来评论这个问题,所以我用自己的经验来回答。请注意,大多数使用此方法的人都有华硕笔记本电脑,而华硕在 Windows 上默认有类似的功能。我非常怀疑这是否会有所不同,但一位使用 Ideapad 的用户说他们找不到该文件。ThinkPad 用户应该尝试使用传输层协议的电池阈值设置。
编辑:注意,这似乎是一种非常肮脏的方法,在某些情况下导致我的机器无法启动。我花了很多次尝试才弄清楚,因为它似乎在某些时候工作,但在睡眠后无法启动。
编辑 2:似乎这个解决方案实际上有很好的记录建筑维基。事实上,他们已经为我在编辑中引用的问题提供了解决方法,请参阅休眠后仍继续存在它提供了解决睡眠问题后黑屏的解决方法。
答案4
在大多数笔记本电脑中,嵌入式控制器负责该功能。我建议你研究一下该ec_sys
模块。
modprobe ec_sys
然后
hexdump -C /sys/kernel/debug/ec/ec0/io
充电和放电时你会看到差异。还有更多有趣的事情要做,例如:
- 使用交流电源(如果已连接)
- 使用电池(即使连接了交流电)
- 充放电
ETC。