我最近从 Windows 切换到 Ubuntu,当我发现在 Linux 上无法设置电池阈值时,我有点沮丧。在 Windows 上,我可以选择将充电限制在 60%(笔记本电脑在 60% 时停止充电,在 58% 时恢复充电,以延长电池寿命)。我尝试使用 tlp 设置相同的程序,但它只适用于联想 ThinkPad。我的电脑是华硕 VivoBook S14,我正在运行双启动 Windows 10 - Ubuntu 16.04。
我想知道是否有任何软件可以控制电池充电?或者是否有办法使用 tlp 来设置电池阈值?
答案1
为了在 60% 时停止充电,我使用
echo 60 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
目前我的电池电量为 63%,因此未充电(电源指示灯为白色)。如果我用 70 而不是 60 运行上述命令,则它会再次开始充电(电源指示灯变为红色)。
重新启动计算机后,此设置将丢失。为了使其持久,我添加了
@reboot root echo 60 > /sys/class/power_supply/BAT0/charge_control_end_threshold
到我的/etc/crontab
。
我的笔记本电脑是华硕 Zenbook,运行的是 Ubuntu 20.04 LTS,但也许它也适用于其他品牌/发行版——探索一下你所拥有的/sys/class/power_supply/
。
答案2
我写了一个命令行应用程序这样做。
最简单的方法是从发布页面然后运行
$ ./bat --help
从其所在目录中的终端显示帮助文档。
如果出现错误,则可能与权限有关。以下命令可能会解决问题。
chmod +x ./bat
基本上,跑步
$ ./bat --threshold
将打印出当前阈值。
要设置新的阈值(例如 60%),请运行
./bat --threshold 60
要在重启之间保留当前阈值,请运行
sudo ./bat --persist
注意:持久使用systemd但它与包括 Ubuntu 在内的大多数 Linux 发行版捆绑在一起。
提示:将应用程序放在/usr/local/bin/
这样的目录中$PATH
,您可以从任何地方运行它,而不仅仅是在应用程序所在的目录中。然后上述命令变成,
bat --help
bat --threshold 60
bat --persist
分别。
答案3
我拥有一个华硕 X405UQ随之而来的是电池健康充电控制充电阈值的应用程序。但由于我只使用 Windows 10 玩游戏,因此我设置了我的工作环境并在 Windows 10 上安装了 Ubuntu 18.04 双启动。只要有交流电,我就会插上笔记本电脑,工作时它一直插着。我只在长途旅行时工作时才使用电池,所以我搜索了类似的 Linux 应用程序。我了解到,使这项工作的驱动程序是特定于供应商的,而且华硕没有像 Thinkpads 对 TLP 那样的 Linux 驱动程序支持。(下次我会买 Thinkpads 的)。
但我发现,在重新启动到 Ubuntu 18.04(不关闭电源或关机)之前启动 Windows 并将充电阈值设置为 60% 将使充电阈值保持不变。即使我断开电源适配器并让其耗尽电池电量,再次插入电源也会根据预设阈值将电量充电至 59% 或 79%(它总是比指示的阈值水平短 1%)。如果我关闭笔记本电脑,拔下适配器,打开电源并直接启动到 Ubuntu 而不先进入 Windows,或者如果我使用 Windows 中的电池应用程序将其设置为 100%,它才会恢复到原始状态(充电至 100%)。
我对这个设置很满意,因为它比完全没有阈值控制要好。然而,我的笔记本电脑被送回商店维修(5GHz 频段的 wifi 连接断断续续),当我收到它(恢复到原始出厂默认设置,Ubuntu 被删除)并再次安装 Ubuntu 18.04 时,该功能不再存在。
我尝试更新 Ubuntu 内核,但无济于事。当我尝试升级 BIOS 时,我发现在撰写本文时安装的版本 305 尚未出现在华硕支持页面上(一些论坛说这是 Microsoft 更新造成的),而最新版本只有 304。我尝试从华硕网站下载 WinFlash,但使用 /nodate 技巧降级 BIOS 不起作用。
对我有用的解决方案:
下载华硕 WinFlash 3.0.1并安装它。不要使用最新版本 3.2.5 或更高版本,因为它不再允许 /nodate 选项。我猜最新的 BIOS 更新解决了一些 Spectre 漏洞,他们不希望你降级 BIOS 版本,但电池寿命对我来说更重要。
降级至BIOS 版本 302。您的笔记本电脑型号可能不同,因此请根据您的笔记本电脑型号进行选择。解压缩 BIOS 文件。
在开始菜单上输入“WinFlash”。右键单击 WinFlash 图标并选择“打开文件位置”。这将打开一个 Windows 资源管理器,其中显示开始菜单快捷方式。右键单击 WinFlash 快捷方式并选择属性。在目标路径的最左端,双引号后,添加一个空格,然后输入“/nodate”(不带引号)。最终结果将如下所示:“C:\Program Files (x86)\ASUS\WinFlash\WinFlash.exe”/nodate
使用修改后的快捷方式运行 WinFlash 并选择下载的 BIOS 文件。更新按钮不应再呈灰色。单击更新,之后它会要求您重新启动以便刷新 BIOS。确保您已插入电源或电池电量充足。
笔记本电脑将进入 BIOS 屏幕,您将看到一个进度指示器。在此过程中,我的笔记本电脑重启了两次。我先让它启动到 Windows,然后重新启动它并进入我的 BIOS 设置以禁用安全启动(以允许我的 Ubuntu 18.04 启动)。此时,如果您的阈值水平低于电池当前充电水平,您应该注意到笔记本电脑上的 LED 电源指示灯变成白色而不是琥珀色,表示电池不再充电。即使您在启动到 Ubuntu 之前重新启动了笔记本电脑,这种情况也会持续存在
答案4
tlp
现在适用于(选定的?)华硕型号:
https://linrunner.de/tlp/news.html#how-can-i-use-battery-care-with-my-laptop
“TLP 从一开始就包含联想(和 IBM)ThinkPad 的电池充电阈值。这种情况持续了很长时间。最近 - 随着 1.4 和 1.5 版本的推出 - 增加了众多供应商:华硕、华为、LG、联想(非 ThinkPad 系列)、三星和索尼。”
我已在安装了 Debian 11 和 debian-backports 版本的 tlp 的最新华硕 Vivobook 型号 (M3401QA) 上使用过该命令,该tlp setcharge
命令可以设置电池充电限制,但不能设置起始点。因此,您可以获得想要停止充电的阈值,但不能获得起始/下限阈值。