如何将电池充电限制在 80% 的容量?

ænd*_*rük 121 battery thinkpad laptop lenovo optimization

我刚刚了解到,一些联想笔记本电脑包含一个实用程序,可将电池充电容量限制在 0-80% 以内,以减缓电池寿命的衰减:

截屏

我怎样才能在 Ubuntu 中做到这一点?

aqu*_*erd 97

非常不幸的是,收费阈值是特定于固件和供应商的。

幸运的是,联想ThinkPad用户获得了ThinkWiki 上概述的解决方案。

它基本上说你必须安装和加载tp_smapi内核模块:

sudo apt-get install tp-smapi-dkms
sudo modprobe tp_smapi
Run Code Online (Sandbox Code Playgroud)

并将所需的收费阈值写入以下虚拟文件/sys/devices/platform/smapi

echo 40 | sudo tee /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 80 | sudo tee /sys/devices/platform/smapi/BAT0/stop_charge_thresh
Run Code Online (Sandbox Code Playgroud)

然后它会在达到 80% 时停止充电,只有在低于 40% 时才开始充电。

东芝和其他人可能也有类似的内核模块暴露固件功能的/sys/proc空间,但它是专利问题不太可能。出于同样的原因,可以处理此问题的应用程序要么是特定于 Thinkpad 的,要么只针对少数选定的供应商。

  • @ændrük, `alex@ubuntu:~$ sudo modprobe tp_smapi 致命:插入 tp_smapi (/lib/modules/3.5.0-17-generic/updates/dkms/tp_smapi.ko) 时出错:没有这样的设备`。我错过了什么?如果我没有得到答案,我将提出一个新问题。 (4认同)
  • @Mika 根据 http://linrunner.de/en/tlp/docs/tlp-linux-advanced-power-management.html#installation,T420 似乎需要一个附加的`acpi-call-dkms` 包 (2认同)
  • 它需要一台 ThinkPad 笔记本电脑来使用 TLP 设置这些充电值。TLP 也支持其他笔记本电脑(例如戴尔、惠普),但不支持 linrunner 页面上的常见问题解答中所写的所有功能。有关收费阈值的配置,请参阅:http://linrunner.de/en/tlp/docs/tlp-configuration.html#chargethresholds (2认同)

lio*_*ori 31

现在有一个更好的应用程序可用于 Ubuntu(和其他发行版):

TLP – Linux 高级电源管理

TLP 为您带来 Linux 高级电源管理的好处,而无需了解每一个技术细节。TLP 带有已针对电池寿命进行了优化的默认配置,因此您可能只需安装并忘记它。尽管如此,TLP 是高度可定制的,以满足您的特定要求。

它控制的参数之一是维持电池充电限制。它仍然只适用于 Thinkpad,但考虑到项目的性质——如果其他设备的适当驱动程序可用,它们很可能也会被集成到这个项目中。因此,如果您在几年后阅读此评论,请查看文档,也许您的设备实际上是受支持的。

Ubuntu 软件包在官方存储库中可用。

  • 好消息(尤其是@w-sky):TLP ≥1.4 还可以为**华硕、华为、LG、其他联想和三星**笔记本电脑设置电池充电限制([来源](https://linrunner.de /tlp/usage/tlp.html#battery-care))。 (5认同)
  • @KasunSiyambalapitiya,截至目前,`tlp` 只是它用于此目的的两个工具的前端,[Tp smapi](http://www.thinkwiki.org/wiki/Tp_smapi) 和 [tpacpi-bat]( https://github.com/teleshoes/tpacpi-bat)。只要您的模型至少得到其中一个支持,它就应该可以工作(或提交错误)。你的似乎没有列在他们支持的任何一个硬件页面上,但是[快速谷歌搜索显示](https://github.com/teleshoes/tpacpi-bat/pull/93/files) 后者可能工作。 (2认同)
  • 在这里找到了在华硕笔记本电脑上使用充电控制的指南:https://www.linuxuprising.com/2021/02/how-to-limit-battery-charging-set.html (2认同)

小智 19

  1. 安装 TLP
    sudo add-apt-repository ppa:linrunner/tlp
    sudo apt update
    sudo apt install tlp
    
    # Check what package needed for battery:
    sudo tlp-stat -b
    
    # If acpi_call is recommended
    sudo apt install acpi-call-dkms
    
    # If smapi is recommended
    sudo apt install tp-smapi-dkms
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开TLP的配置文件
    sudo gedit /etc/tlp.conf
    
    Run Code Online (Sandbox Code Playgroud)
  3. 找到有关电池设置的行,删除注释的前导 #,然后插入您想要的值
    START_CHARGE_THRESH_BAT0=75
    STOP_CHARGE_THRESH_BAT0=80
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新启动tlp
    sudo tlp start
    
    Run Code Online (Sandbox Code Playgroud)
  5. 检查配置状态
    sudo tlp-stat -b
    
    Run Code Online (Sandbox Code Playgroud)

  • 适用于运行 Ubuntu 21.10 的 Thinkpad L490 在步骤 3 之后运行此命令以在重新启动后启用该服务``systemctl enable tlp.service``` (3认同)

Fre*_*oen 18

接受的答案不适用于我的新联想 T440s。显然是固件变了。在http://www.thinkwiki.org/wiki/Tpacpi-bat之后,我做了

git clone https://github.com/teleshoes/tpacpi-bat.git
cd tpacpi-bat/
./install.pl
sudo ./tpacpi-bat -s ST 1 15 # load internal battery when below 15%
sudo ./tpacpi-bat -s SP 1 95 # stop charging at 95%
sudo ./tpacpi-bat -g ST 2 # when is external battery loaded?
Run Code Online (Sandbox Code Playgroud)

作为参考,我在 debian 测试中做了这个,但我确信它在 ubuntu 中也能正常工作。


eos*_*ere 11

在运行 Windows 8.1 的 Toshiba R830 上,我安装了 Toshiba Power Saver 应用程序以将电池电量限制为 80%

当我在 Linux(Ubuntu、Mint 等)上启动时,最大电量仍限制为 80%。

因此,东芝节电器似乎将其配置存储到bios中。

唯一的缺点是,如果我想带着充满电的电池旅行,我必须重新启动 Windows 并更改节电配置。

  • 您好,Elder Geek,这是与 bios 相关的,因此适用于双引导配置中的任何操作系统。此 Toshiba bios 配置无法通过 bios 菜单访问,而只能通过仅在 Windows 上运行的节电应用程序访问。 (13认同)
  • Mint 的结果显然与 Ubuntu 相关。 (3认同)
  • 我在 linovo Yoga 3 11 英寸上也是如此。 (2认同)

Aja*_*ayC 8

我有一台华硕笔记本电脑,我从网上找到的方法如下。这种方法可能已经是上面提到的一些应用程序的一部分,但将其放在这里以供参考。

  1. 创建一个像这样命名的服务文件battery_charge_threshold.service
    [Unit]
    Description=Set the battery charge threshold
    After=multi-user.target
    
    [Service]
    Type=oneshot
    ExecStart=/bin/bash -c 'echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold'
    
    [Install]
    WantedBy=multi-user.target
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将文件移动到此位置/etc/systemd/system
  3. 运行以下命令。
    sudo chmod 644 /etc/systemd/system/battery-charge-threshold.service
    sudo systemctl daemon-reload
    sudo systemctl enable battery-charge-threshold.service
    
    Run Code Online (Sandbox Code Playgroud)

执行此操作后,80% 的充电阈值(根据服务文件)将在重新启动之间保持不变。如果电流水平高于 80%,它也会停止对电池充电。希望这可以帮助。我已经使用了近 1.5 年,没有任何问题。


Rob*_*sak 7

在我的 Dell XPS 上,我smbios-utils使用sudo apt install smbios-utils. 该软件包提供了一个名为 的命令smbios-battery-ctl。看起来基于电池电量的充电控制自 Ubuntu 20.04 以来就已经可用。完整的详细信息在联机帮助页中,但对于基本的 80% 设置,我认为这会起作用:

sudo smbios-battery-ctl --set-custom-charge-interval 75 80
sudo smbios-battery-ctl --set-charging-mode=custom
Run Code Online (Sandbox Code Playgroud)

当电量低于75%时开始充电,达到80%时停止充电。

要将设置改回:

sudo smbios-battery-ctl --set-charging-mode=adaptive
Run Code Online (Sandbox Code Playgroud)


小智 6

您是否检查过笔记本电脑的 BIOS 设置是否有此功能?我的笔记本电脑有一个 Windows 应用程序以及 BIOS 中的“电池寿命延长器”设置,以实现此功能。

  • BIOS 设置屏幕中没有此类设置。 (3认同)