CUBE SUGAR CONTAINER

技術系のこと書きます。

battery で Apple Silicon な MacBook のバッテリー充電に上限を設ける

リチウムイオン電池を使ったバッテリーは、一般的に残量が 0% や 100% の付近にあると劣化が進みやすい。 また、充電サイクルの回数が増える毎に、少しずつではあるが着実に劣化していく。 バッテリーが劣化すると、設計上の容量よりも電気を蓄える力が落ちて機器の稼働時間の短縮につながる。

最近の macOS には、バッテリーの寿命を延ばす目的で「バッテリー充電の最適化」という機能がある。 これは、機器の使われ方をデバイスが学習して、なるべく残量が 100% の状態を維持し続けないようにするもの。 この機能を有効にしていると、たまに充電が 80% 前後でしばらく止まることがある。 しかし、この機能を使ってもユーザが明示的に充電を止めることはできない。

そこで、今回は battery というアプリケーションを紹介する。 このアプリケーションを使うと Apple Silicon な MacBook で明示的にバッテリーの充電に上限を設定できる。

github.com

充電中に指定したバッテリーの残量まで到達すると、充電が自動で停止してそれ以上は増えない。 また、充電が停止している間も動作用の電源はケーブルから供給され続ける。 そのため、バッテリーの充電サイクルがむやみに増加することもない。 結果として、バッテリーの寿命を伸ばせる可能性がある。

もくじ

下準備

battery のインストール方法はいくつかある。 その中でも Homebrew からインストールするのが、おそらく一番カンタンだと思う。

$ brew install --cask battery

battery を実行する

battery は CUI と GUI の両方のアプリケーションがある。

GUI で実行する

GUI のアプリケーションは /Applications 以下にインストールされる。

$ open /Applications/battery.app

アプリケーションを起動すると、ツールバーにバッテリーのアイコンが現れる。 この状態で、自動でバッテリーの充電に 80% の上限が設定される。 設定は SMC (System Management Controller) に書き込まれるため、マシンを再起動しても設定はそのままになるようだ。

CUI で実行する

CUI に関しては battery というコマンドがインストールされる。 このコマンドで充電される上限を設定することもできる。 というより GUI は、この CUI の単なるラッパーのようだ。

たとえば battery status コマンドでバッテリーの充電状態を確認できたりもする。 以下は 80% に到達したことで充電が停止した際のログ。

$ battery status
10/15/23-17:19:32 - Battery at 80% (attached; remaining), smc charging disabled
10/15/23-17:19:32 - Your battery is currently being maintained at 80%

上限の数値を変更したいときは battery maintain サブコマンドを使う。

$ battery maintain 70

上記を実行すると GUI で実行しているアプリの表示も変わるはず。

ちなみに上記のコマンドは、内部的に smc-command という実装を使っているようだ。 これは Mac の SMC に対して特定のキー・バリューを書き込むもの。

github.com

なお、SMC に書き込みをするとファンの回転数の制御などもできる。 そのため、上記のリポジトリには「使い方によってはマシンに不可逆なダメージを与えうるので何があっても自己責任だよ」という注意書きがある。

まとめ

今回は battery というアプリケーションを使って Apple Silicon な MacBook のバッテリー充電に上限を設定する方法を書いた。