CUBE SUGAR CONTAINER

技術系のこと書きます。

batt で MacBook のバッテリー充電を制御する

リチウムイオンバッテリーは、充電量が 0% か 100% に近い状態で使い続けると劣化しやすいことが知られている。 また、充放電のサイクルが増えると少しずつではあるが着実に劣化していく。 リチウムイオンバッテリーが劣化すると、製品の設計上の容量よりも電気を蓄える力が落ちて駆動時間が短くなる。

したがって、MacBook のバッテリーの寿命を延ばすためには、次のような状態にしたい。

  • バッテリーが劣化しにくい充電量を維持する
    • 特定の充電量に到達したら充電を停止する
  • バッテリーの充放電サイクルを増やさない
    • 使うときは充電ケーブルから給電し続ける (バッテリーの出力を使わない)

しかし、残念ながら上記は macOS の標準的な機能では実現することが難しい。

なお、現在の macOS にも標準で「バッテリー充電の最適化」という機能はある。 この機能を有効にすると、たまに充電が 80% でしばらく止まることがある。 しかし、この機能を使ったとしてもユーザが明示的に充電を制御することはできない。 充電ケーブルをつないだままにしていると、そのうち充電量が 100% になってしまう。

そこで、今回は batt というアプリケーションを紹介する。 このアプリケーションを使うと MacBook で明示的にバッテリーの充電を制御できるようになる。

github.com

なお、類似のアプリケーションとしては battery 1 というのもある。

使った環境は次のとおり。

$ sw_vers 
ProductName:        macOS
ProductVersion:     15.7.1
BuildVersion:       24G231
$ batt version
v0.5.3 9c9e5e3ef4b1edd93d050aaddd5f9b91ddb6c1ac

もくじ

下準備

まず、Homebrew を使って batt をインストールする。

$ brew install batt

batt のサービスを起動する。 このとき管理者権限が必要なので sudo(8) をつける。

$ sudo brew services start batt

サービスが起動すると batt コマンドが使えるようになる。

$ batt status       
Charging status:
  Allow charging: ✔ (refreshes can take up to 2 minutes)
    Your Mac will charge, but you are not plugged in yet.
  Use power adapter: ✔
    Your Mac will use power from the wall (to operate or charge), if it is plugged in.

Battery status:
  Current charge: 57%
  State: discharging
  Full capacity: 4556 mAh
  Charge rate: -9.8 W
  Voltage: 11.65 V

Battery configuration:
  Upper limit: 80%
  Lower limit: 78%
  Prevent idle-sleep when charging: ✔
  Disable charging before sleep if charge limit is enabled: ✔
  Prevent system-sleep when charging: ✘
  Allow non-root users to access the daemon: ✘
  Control MagSafe LED: ✘

バッテリーの充電量に上限を設ける

まずは、最も一般的なユースケースと考えられるバッテリーの充電量に上限を設定する方法について。 これには batt limit コマンドを使う。 何処まで充電するかをパーセンテージで引数に指定する。

$ batt limit 70

実行すると、次のように充電量の上限が反映される。

$ batt status        
Charging status:
  Allow charging: ✔ (refreshes can take up to 2 minutes)
    Your Mac will charge, but you are not plugged in yet.
  Use power adapter: ✔
    Your Mac will use power from the wall (to operate or charge), if it is plugged in.

Battery status:
  Current charge: 57%
  State: discharging
  Full capacity: 4558 mAh
  Charge rate: -3.3 W
  Voltage: 11.70 V

Battery configuration:
  Upper limit: 70%
  Lower limit: 68%
  Prevent idle-sleep when charging: ✔
  Disable charging before sleep if charge limit is enabled: ✔
  Prevent system-sleep when charging: ✘
  Allow non-root users to access the daemon: ✘
  Control MagSafe LED: ✘

なお、電源が切れている状態では制限が効かない点には注意が必要になる。

バッテリーの充電を一時的に停止する

その他に、一時的にバッテリーの充電を停止することもできる。 これには batt adapter コマンドを使う。

まず、デフォルトではアダプタが有効になっている。 現在の状況は batt adapter status コマンドで確認できる。

$ batt adapter status
INFO[2025-10-13T17:24:37+09:00] power adapter is enabled

ここで、batt adapter disable を実行すると、充電が停止する。

$ batt adapter disable
INFO[2025-10-13T17:26:34+09:00] daemon responded: "ok"                       
INFO[2025-10-13T17:26:34+09:00] successfully disabled power adapter

確認すると、次のようにアダプタが無効になっている。

$ batt adapter status 
INFO[2025-10-13T17:26:56+09:00] power adapter is disabled

batt adapter enable コマンドを実行すると、充電が再開する。

$ batt adapter enable
INFO[2025-10-13T17:27:08+09:00] daemon responded: "ok"                       
INFO[2025-10-13T17:27:08+09:00] successfully enabled power adapter

batt による制御を停止する

また、batt による制御を止めたいときは次のように batt disable すれば良い。

$ batt disable

いじょう。