How to save your Macbook Pro (Intel) battery from self-destruction

Raymond Lo, PhD
2 min readFeb 24, 2023

--

If you are still using your old Macbook (e.g. MacBook Pro Retina, 15-inch, Mid 2015 or earlier), this tool will significantly reduce the wear on your battery.

I came across this yesterday. And the idea is very simple. Do not let it charge to 100%. It’s a feature that’s found in most new laptops these days. With this tool, now you can do the same and cap your Macbook battery charged at maybe 80%. That way you will now have the sweet spot and keeping your old laptop to be alive as long as possible.

(Below is a trimmed instruction from GitHub)

BCLM

BCLM is a wrapper to read and write battery charge level max (BCLM) values to the System Management Controller (SMC) on Mac computers. This project was inspired by several battery management solutions, including Apple’s own battery health management.

The purpose of limiting the battery’s max charge is to prolong battery health and to prevent damage to the battery. Various sources show that the optimal charge range for operation of lithium-ion batteries is between 40% and 80%, commonly referred to as the 40–80 rule [1][2][3]. This project is especially helpful to people who leave their Macs on the charger all day, every day.

Installation

The easiest method to install BCLM is through brew.

$ brew tap zackelia/formulae
$ brew install bclm

Usage

$ sudo bclm write 77
$ bclm read
77

Note that in order to write values, the program must be run as root. This is not required for reading values. When writing values, macOS charges slightly beyond the set value (~3%). In order to display 80% when fully charged, it is recommended to set the BCLM value to 77%.

Persistence

The SMC can be reset by a startup shortcut or various other technical reasons. To ensure that the BCLM is always at its intended value, it should be persisted.

This will create a new plist in /Library/LaunchDaemons and load it via launchctl. It will persist with the current BCLM value and will update on subsequent BCLM writes.

$ sudo bclm persist

Likewise, it can be unpersisted which will unload the plist.

$ sudo bclm unpersist

And this will just keep my dying Macbook Pro battery with random shutdown under control now. ;)

Cheers!

--

--

Raymond Lo, PhD

@Intel - OpenVINO AI Software Evangelist. ex-Google, ex-Samsung, and ex-Meta (Augmented Reality) executive. Ph.D. in Computer Engineer — U of T.