最終更新日:2014/03/07
AutoChargeInhibit - MacBook Pro 15 early 2011のバッテリーの充電をソフトウェア制御でオン・オフする
間違っていた…
ここに書いてあった内容は根本的に間違っていました。正しく書き直した内容は次のページです。
AutoInflowDisable - MacBook Pro 15 early 2011のバッテリーの充電をソフトウェア制御でオン・オフする
説明文がある意味間違ってなかったのが幸いか…
でもやっぱり可能か?
AC電源を切るのが«event ASBMExec» {0, 1}
で、ChargeInhibitの«event ASBMExec» {1, 1}
が効果がないかと思ったらそうでもない感じです。
SmartBatteryのソースをもう一度読むとバッテリーの状態はループで随時処理されているようです。いろいろ試している時に«event ASBMExec» {1, 1}
を0.7秒間隔のように短い間隔でループで実行すると完全ではありませんが充電が抑えられるのを確認しました。
0.75秒だと20分に1%ぐらいしかバッテリーが充電されません。また、まれにシステムプロファイラのバッテリーの状態でも満充電でない状態で次のように接続していてるが充電はしていないと表示されることもありました。
AC 充電器の情報:
接続中: はい
ID: 0x0x00
ワット数(W): 85
リビジョン: 0x0000
ファミリー: 0x00xx
シリアル番号: 0x00xxxxxx
充電中: いいえ
メニューのフル充電までの時間はいろいろ変わりまくりますが最大20時間になります。
また、頻繁に計算中になります。
これでいけるなら充電回数が以前より圧倒的に減ります。40%から80%まで40*20分=約13時間かかるとして充放電回数も以前より大幅に抑えられそうです。
で、しばらくテストしました
テスト結果は充電時間メモを見て下さい。間隔を短くすると充電は抑えられますが 充電中にも「完全充電時の容量」が減っていたりしたので、ChargeInhibitしつつ容量の減りが少ない間隔を調べる方向にしました。
ただ、「完全充電時の容量」はスリープ明けなどに大幅に値が変化することがあるのでこの判断が正しいかどうかはさらなるテストが必要だと思います。値が変化していてもそれが通常の低下かAutoChargeInhibit2の悪影響かそれとも他の何が影響して起こっているかは今のところ不明ですので。
AutoChargeInhibit2の動作
- 80%〜100%
- AC切断(DisableInflow)
- ChargeInhibitオフ
- 説明:満充電に近いので充電を切ります
- 80%以上から下がって40〜79%になった
- AC切断(DisableInflow)
- ChargeInhibitオフ
- 説明:満充電から継続して40%までバッテリー駆動で減らします
- 40%以下から上がって41〜80%になった
- AC接続
- ChargeInhibitオン
- 説明:充電しますが通常よりゆっくり充電されます
- 40%以下
- AC接続
- ChargeInhibitオフ
- 説明:次回スリープ時にバッテリーが無くならないように40%までは通常通り充電させます
- スリープに入った
- AC切断(DisableInflow)
- ChargeInhibitオフ
- 説明:スリープ中に過充電にならないようにACを切ります
充電時間メモ
1日1回充電として6〜7時間で40%ぐらいにしたい
6*60/40=360/40=9分で1%充電
7*60/40=420/40=10.5分で1%充電
- 0.75sec - 19日/51~54%
- 約20分で1%充電
- CPU使用率 0.0-0.1%
- 1日でのバッテリー容量の低下は無し
- 0.5sec - 19日/56-62%
- 約40分で1%充電
- CPU使用率 0.0-0.1%
- 0.3sec 20日/42-46%
- 約60分で1%充電
- CPU使用率 0.1-0.2%
- 1時間に1%ぐらいしか増えないので帰宅後6時間付けていたとしても6%しかバッテリーが充電されません。自分はUSBにいろいろ繋いでいるためか半日以上の長時間のスリープ時に最大20%ぐらい消費されるのでその分も充電できないぐらいです。
- 0.6sec 21日/43-48%
- 約30分で1%充電
- CPU使用率 0.0-0.1%
- 0.5、0.3、0.6などでバッテリー充電をかなり抑えるとバッテリーの充放電回数は抑えられますが、バッテリーの最大容量が1日でちょっとずつ減っていました。バッテリーはある程度使用して使ったほうがイイらしいので、ここまで抑えるのはやめて1日1回は40-80になるように調整してみます。
- 1.5sec 21日/41%-48
- 約7分で1%充電
- CPU使用率 0.0-0.1%
- 1.3sec 22日/57-70%
- 約8-10分で1%充電
- CPU使用率 0.0-0.1%
- 最大容量が減っている
- 1.6sec 23日/40-80%
- 3時間50分=230分/40=5.75分/1%
- CPU使用率 0.0-0.1%
- 最大容量に変化無し
- 1.4sec 23日/41-61%
- 2時30分=150/20=7.5分/1%
- CPU使用率 0.0-0.1%
- 最大容量に変化無し
- 1.4sec 24日/41-80%
- 5時間=300/40=7.5分/1%
- CPU使用率 0.0-0.1%
- 最大容量が前日より増えたり元に戻ったりで最終的にちょっと減った(-1)

- 1.5sec 25日/41-80%
- 4.5時間=270/40=6.75分/1%
- CPU使用率 0.0-0.1%
- 最大容量が前日より増えたり元に戻ったりで最終的にちょっと減った(-2)
- 1.6sec 26日/41-80%
- 3時間20分=190/40=4.75分/1%
- CPU使用率 0.0-0.1%
- 最大容量変化なし
- 1.6sec 26日/41-80%
- 3時間45分=215/40=5.375分/1%
- CPU使用率 0.0-0.1%
- 最大容量が増えたり元に戻ったりで最終的にちょっと減った(-3)
- 1.4sec 26日/49-79%
- 4時間50分=260/40=6.5分/1%
- CPU使用率 0.0-0.1%
- 最大容量変化なし(0)
- 1.4sec 26日/41-80%
- 5時間30分=330/40=8.25分/1%
- CPU使用率 0.0-0.1%
- 最大容量変化なし(0)
- 1.4sec 27日〜7日まで
- 最大容量は日々で上下ありますがほぼ変化なしです
- 充放電回数は6回増えました
- ChargeInhibitオフ
- 数分で1%充電
- 40-80%が50分〜60分ぐらい
- CPU使用率 0%
動作確認環境
- MacBook Pro 15 early 2011
- アマゾンで買った上記MacBook Pro用の交換バッテリー(AutoChargeInhibitが原因でバッテリーがダメになったらまた買えばいいじゃん、という気持ちでテストしてます…)
- 10.6.8で2週間ぐらい
- 10.9で30分ぐらい
0.5秒
1.4秒
AutoChargeInhibit2の問題点
- 1秒に何回もバッテリーのモードをChargeInhibitに変更する命令を送っているが、これ自体がバッテリーの負荷になっている可能性もある。実際どうなのかは長期間のテストをしてみないと不明
AutoChargeInhibit2ベータ仕様・注意点
- 充電時間メモに記録がありますが1.4秒がいいのではないかと思ったので1.4秒間隔でChargeInhibitの命令を出しています
- 1.4秒で平日1日1回40〜80%で充放電する感じで、8日で7回充放電回数が増えています。ChargeInhibitしていなかった前回は1日2回の充放電回数が、1日1回と半分になったのでバッテリーの長持ちが期待できます!?
- 充電を止めるならもっと間隔を短くしたらいいのですが、0.5秒などで止めている方がバッテリーの総容量の減りが速かったので、どれぐらいが減りが少ないか自分の使っているバッテリーで調べた結果が1.4秒ですので、他のバッテリーだと違う可能性があります。
- 自分のバッテリーで最適な間隔を調べる場合はログを取って次のAppleScriptの
1.4
を好きな秒数に変えてテストして下さい。
property theChargeInhibitCommand : {{1, 1, 1.4}}
使い方
- 必要に応じてAppleScriptエディタでAutoChargeInhibit2を開いて設定を変更して下さい
- AutoChargeInhibit2RunRoot.appを実行してパスワードを入力して、rootでAutoChargeInhibit2を起動させて下さい
- 動作はAutoChargeInhibit2の動作を読んで下さい
- 10.9だとApp Napを切ったほうが動作が安定するかもしれません。
- 「フル充電の時間」が更新されるまで時間がかかる場合があります。10.9ではなかなか更新されないのでMag Safeを抜き差ししたら更新されたことがありました。
- InflowDisableを停止させて(AC駆動にする)終了する場合はStopInflowDisableRunRoot.appを実行して下さい
- "~/Documents/AutoChargeInhibit2Log.txt"にバッテリーのログが記録されます
セキュリティーリスク
AutoChargeInhibitはMenuBarAppleScriptによって作成されていますが、MenuBarAppleScriptはAppleScriptでかなりいろいろなことができるアプリケーションです。AppleScriptはiTunesをAppleScriptで操作するように外部からも実行できます。
ということはrootで起動しているAutoChargeInhibitをAppleScriptで操作して悪用されると超危険ということになります。このことを理解しておいて下さい。
b2ではファイル操作とコマンドの実行の命令をAppleScriptから実行できなくしたので安全度が上がっていると思います。
ダウンロード
自分で使う為の制御ソフトAutoChargeInhibitはMenuBarAppleScriptで作ってテスト&調整中です。AutoChargeInhibitからは2ヶ月以上、AutoChargeInhibit2で3週間ぐらい使って特に問題無さそうですが隠れたバグがあるとどうなるかわかりません。試してみたい方は「無保証・バグがあってMacが壊れても自己責任」というのをご理解・承諾の上ダウンロード(0円〜、試用したい方は0円でどうぞ。0円だとカード番号は必要ありません。)して下さい。
プログラムがどのように動いているかはAutoInflowDisableのページを読んで下さい。
使ってみた環境、オススメの設定などありましたら掲示板までお願いします。
ダウンロード AutoChargeInhibit2.0.0b2