Firmware to Emulate Makita Protocol

Implementing the Proprietary Makita 1-Wire Protocol

In the previous part, you created the required hardware to build a Makita “dongle” that translates the proprietary Makita 1-Wire protocol. To make it work, pick a suitable firmware for it.

Overview

Makita batteries use default 1-Wire, but with proprietary timings, so you cannot use default 1-Wire libraries. In 2021, Martin Jansson started to reverse-engineer the Makita protocol:

  • Protocol analysis in 2021:
    Battery Hacking – Initial reverse-engineering work.

  • Firmware extraction & command discovery in 2024:
    Command Set Analysis – Extracted original firmware, identified key commands.

He then open-sourced his findings and created the first open-source firmware: ArduinoOBI. It used an Arduino Uno and implemented the Makita 1-Wire protocol. Today, this firmware also runs on ESP32-C3 SuperMini and Arduino Nano.

It was part of a larger project called OpenBatteryInformation which contains the software that actually talks to the battery through the ArduinoOBI dongle.

Almost all newer developments base on this ground work.

Challenges and Caveats

Deciphering the Makita 1-Wire protocol is only the first challenge. There is another one:

Once you know how to talk to Makita batteries, you still don’t know which commands the battery supports, and how the results are interpreted that you get back from it.

As it turns out, Makita has revised its LXT batteries numerous times and is using a wide variety of boards and controllers. That’s why Martin Janssen maintains a comprehensive wiki with the different battery types that have surfaced so far.

At present, there seem to be at least five fundamentally different LXT battery subtypes. Not all of these are fully reverse-engineered yet, so at present, most LXT batteries are supported, but not all.

Choosing Firmware

In the past years, the community has created a number of firmware options that you can choose from. They all work with numerous cheap microcontrollers:

  1. ArduinoOBI (2024):
    This is the original implementation maintained by Martin Janssen. It requires a separate python script called OpenBatteryInformation which sends the actual battery commands and displays the results in a graphical user interface.

    The ArduinoOBI firmware acts like a pure dongle and implements the Makita timings only. Separate software must send the actual commands, but you can easily use your own scripts written i.e. in Python or PowerShell in place of the original software.

  2. ESP32 Makita BMS Reader (2025):
    Designed for ESP32 microcontrollers only, this firmware takes advantage of its internal web server, combining both the Makita protocol implementation and the command logic inside the microcontroller. No external PC or other dependencies are required.

    Instead, you use your smartphone as the presentation layer and get sophisticated battery information and graphs.

  3. Automatic Makita LXT Battery Unlocker (2026)
    Major rewrite with some improvements. This firmware combines Makita protocol implementation and command logic and primarily targets battery unlocking which is done automatically. It can also lock batteries, and software is included that can be used to display battery information if needed.

This firmware is currently the most sophisticated solution, especially when you want to unlock batteries.

ArduinoOBI

Use this firmware if you want a pure Makita 1-Wire Protocol dongle. Here, you also find the most comprehensive community support as it is the longest-running project.

You can use the provided OpenBatteryInformation python script/executable to display battery information or unlock a locked battery, or write your own scripts using i.e. Python or PowerShell to explore the Makita interface on your own terms.

Should battery unlocking fail, then you may want to switch to Automatic Makita LXT Battery Unlocker. This firmware has been optimized specifically to unlock (and lock) Makita LXT batteries and employes more sophisticated unlock procedures than OpenBatteryInformation.

Automatic Makita LXT Battery Unlocker

This firmware is a major rewrite and cleanup. It is much more complex than the original ArduinoOBI since it implements both the “dongle” part (as in ArduinoOBI) and the logic/command part (as in OpenBatteryInformation).

This firmware can be used stand-alone to unlock locked batteries, and it provides software that runs on various operating systems to display battery information.

If you run this firmware on a RP2040 Zero, you get support for a WS2812 RGB LED that provides simple but effective feedback, turning it in a simple stand-alone handheld device. On other microcontrollers, the LED is currently not supported.

The author has made several enhancements, i.e. more complete unlock procedures, and automatic battery health calculations. That’s why this firmware is also a great starting point for your own developments as it is probably the cleanest, most structured, and most complete implementation as of today.

ESP32 Makita BMS Reader

If you want a generic Makita handheld tool without any dependencies, this firmware uses an ESP32 microcontroller and its internal web server. The firmware includes both the “dongle” and the command logic implementation and uses your smart phone screen as user interface.

That’s a great way of testing and checking Makita batteries without the need to have a PC around.

Slow Website?

This website is very fast, and pages should appear instantly. If this site is slow for you, then your routing may be messed up, and this issue does not only affect done.land, but potentially a few other websites and downloads as well. Here are simple steps to speed up your Internet experience and fix issues with slow websites and downloads..

Comments

Please do leave comments below. I am using utteran.ce, an open-source and ad-free light-weight commenting system.

Here is how your comments are stored

Whenever you leave a comment, a new github issue is created on your behalf.

  • All comments become trackable issues in the Github Issues section, and I (and you) can follow up on them.

  • There is no third-party provider, no disrupting ads, and everything remains transparent inside github.

Github Users Yes, Spammers No

To keep spammers out and comments attributable, all you do is log in using your (free) github account and grant utteranc.es the permission to submit issues on your behalf.

If you don’t have a github account yet, go get yourself one - it’s free and simple.

If for any reason you do not feel comfortable with letting the commenting system submit issues for you, then visit Github Issues directly, i.e. by clicking the red button Submit Issue at the bottom of each page, and submit your issue manually. You control everything.

Discussions

For chit-chat and quick questions, feel free to visit and participate in Discussions. They work much like classic forums or bulletin boards. Just keep in mind: your valued input isn’t equally well trackable there.

  Show on Github    Submit Issue

(content created May 08, 2026)