BCLM
BCLM是一个用于读取和写入Mac电脑系统管理控制器(SMC)上的电池充电电量最大值(BCLM)/CHWA值的封装器。它同时支持Intel和Apple silicon芯片。这个项目的灵感来自几种电池管理解决方案,包括Apple自己的电池健康管理。
限制电池最大充电量的目的是延长电池寿命并防止电池损坏。多项研究表明,锂离子电池的最佳充电范围是40%到80%之间,通常被称为40-80法则[1][2][3]。这个项目对那些每天都将Mac长时间连接充电器的人特别有帮助。
安装
安装BCLM最简单的方法是通过brew
。
BCLM是用Swift编写的,编译也很简单。目前,它只能在macOS Catalina(10.15)或更高版本上编译,但可以在OS X Mavericks(10.9)或更高版本上运行。
我们还提供了一个发布版zip文件,其中包含经过签名和公证的二进制文件,适用于那些没有开发工具或使用较旧macOS版本的用户。
通过Brew安装
$ brew tap zackelia/formulae
$ brew install bclm
从源代码安装
$ make build
$ make test
$ sudo make install
从发布版安装
$ unzip bclm.zip
$ sudo mkdir -p /usr/local/bin
$ sudo cp bclm /usr/local/bin
注意:对于较旧版本的macOS,如果遇到以下错误:dyld: Symbol not found
,可能需要安装Swift 5 Runtime Support for Command Line Tools。
使用方法
$ bclm
概述:电池充电电量最大值(BCLM)工具。
用法:bclm <子命令>
选项:
--version 显示版本。
-h, --help 显示帮助信息。
子命令:
read 读取BCLM值。
write 写入BCLM值。
persist 持久化bclm。
unpersist 取消持久化bclm。
使用'bclm help <子命令>'查看详细帮助。
对于Intel机器,在写入值时,macOS会略微超过设定值(约3%)。为了在充满电时显示80%,建议将BCLM值设置为77%。在系统关机或睡眠时充电,充电量可能会超过设定值超过平均3%。
$ sudo bclm write 77
$ bclm read
77
对于Apple silicon机器,只支持80和100两个值,并且需要固件版本≥13.0。
请注意,要写入值,程序必须以root权限运行。读取值时不需要root权限。
持久化
SMC可能会因启动快捷键或其他技术原因而重置。为确保BCLM始终保持在预期值,应该进行持久化。
这将在/Library/LaunchDaemons
中创建一个新的plist文件,并通过launchctl
加载它。它将使用当前的BCLM值进行持久化,并在后续的BCLM写入操作时更新。
$ sudo bclm persist
同样,可以取消持久化,这将卸载服务并删除plist文件。
$ sudo bclm unpersist