Initial commit

This commit is contained in:
2026-08-19 21:35:27 +03:00
commit d719b34e03
40 changed files with 35252 additions and 0 deletions
+202
View File
@@ -0,0 +1,202 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Open Battery Information - diagnose and repair locked battery BMS modules from your browser. Flash firmware to an Arduino Uno and read Makita LXT battery packs with Web Serial, no installs.">
<title>Open Battery Information</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/landing.css">
<script src="js/theme.js"></script>
<script src="js/reveal.js" defer></script>
</head>
<body>
<nav class="navbar">
<a class="brand" href="index.html">Open Battery <span class="accent">Information</span></a>
<button id="nav-toggle" class="nav-toggle" type="button" aria-label="Open navigation menu" aria-expanded="false">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
</button>
<div class="nav-links">
<a href="index.html" class="active">Home</a>
<a href="setup.html">Get started</a>
<a href="firmware/uploader.html">Flash firmware</a>
<a href="obi.html">OBI-1</a>
<a href="download.html">Download</a>
<a class="nav-icon" href="https://github.com/OpenBatteryInformation/openbatteryinformation.github.io" target="_blank" rel="noopener" aria-label="View source on GitHub"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a>
<button id="theme-toggle" class="theme-toggle" type="button" aria-label="Switch to light mode">
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
</div>
</nav>
<header class="hero">
<h1>Diagnose and repair your battery pack <span class="accent">from the browser</span></h1>
<p class="tagline">
Open Battery Information lets you talk to the BMS inside locked or dead
power-tool batteries — no software to install, nothing to set up. Plug in
an Arduino, flash the firmware, and read your battery from
Chrome, Edge, Opera or Firefox.
</p>
<div class="hero-actions">
<a href="setup.html"><button class="primary btn-lg">Get started</button></a>
<a href="obi.html"><button class="btn-lg">Diagnose a battery</button></a>
<a href="download.html"><button class="btn-lg">Get the desktop app</button></a>
</div>
<p class="hero-note">Works in Chrome, Edge, Opera and Firefox on desktop. 100% in your browser — nothing is uploaded anywhere.</p>
</header>
<main>
<section class="section">
<h2>Why Open Battery Information?</h2>
<div class="section-lead">
<p>
This project aims to provide tools and information about various batteries in order to
aid repair. It is very common for manufacturers to lock the BMS when a fault is
detected, to protect the device and the user — an important safety feature. So when is
it a problem? There is always a chance of false triggering of this protection, or the
fault could have been temporary or even repaired. In that case it would be wasteful to
throw out a perfectly good BMS just because its software says it is faulty.
</p>
<p>This is the problem we want to solve.</p>
</div>
<div class="feature-grid">
<div class="feature-card">
<span class="icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="16" height="10" x="2" y="7" rx="2" ry="2"/><line x1="22" x2="22" y1="11" y2="13"/></svg></span>
<h3>Unlock dead batteries</h3>
<p>Read status, charge cycles, and error codes from battery packs whose BMS has locked them out.</p>
</div>
<div class="feature-card">
<span class="icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg></span>
<h3>Web Serial, no drivers</h3>
<p>Talks to your Arduino over the Web Serial API. No drivers, no cables beyond USB, no installs.</p>
</div>
<div class="feature-card">
<span class="icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.077.877.528 1.073 1.01a2.5 2.5 0 1 0 3.259-3.259c-.482-.196-.933-.558-1.01-1.073-.05-.336.062-.676.303-.917l1.525-1.525A2.402 2.402 0 0 1 12 1.998c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.237 3.237c-.464.18-.894.527-.967 1.02Z"/></svg></span>
<h3>Modular design</h3>
<p>Support for more modules and interfaces keeps growing — currently the Makita LXT pack via the Arduino OBI interface.</p>
</div>
<div class="feature-card">
<span class="icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></svg></span>
<h3>Private by design</h3>
<p>Everything runs locally in your browser tab. No accounts, no telemetry, no data leaves your machine.</p>
</div>
</div>
</section>
<section class="section">
<h2>How it works</h2>
<p class="section-sub">Three steps from plug-in to diagnosis.</p>
<div class="steps">
<div class="step">
<span class="step-num"></span>
<h3>Set up the hardware</h3>
<p>Build the Arduino OBI interface and wire it to your battery, following the <a href="setup.html">wiring guide</a>.</p>
</div>
<div class="step">
<span class="step-num"></span>
<h3>Connect the board</h3>
<p>Open OBI-1, pick your Arduino, and press Connect. The board resets and identifies itself automatically.</p>
</div>
<div class="step">
<span class="step-num"></span>
<h3>Read the battery</h3>
<p>Insert a battery, press Read battery, and see cell voltages, temperatures, charge cycles, and status at a glance.</p>
</div>
</div>
</section>
<section class="section">
<h2>What you need</h2>
<p class="section-sub">Check these before you start.</p>
<div class="card">
<ul class="req-list">
<li>
<span class="req-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg></span>
<span><span class="req-title">Chrome, Edge, Opera or Firefox on desktop</span>
<span class="req-detail">Web Serial works in these browsers on desktop (Firefox 151+). Safari isn't supported.</span></span>
</li>
<li>
<span class="req-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg></span>
<span><span class="req-title">An Arduino Uno with a USB cable</span>
<span class="req-detail">A genuine or compatible Uno with the optiboot bootloader. The uploader flashes it automatically.</span></span>
</li>
<li>
<span class="req-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="16" height="10" x="2" y="7" rx="2" ry="2"/><line x1="22" x2="22" y1="11" y2="13"/></svg></span>
<span><span class="req-title">A supported battery</span>
<span class="req-detail">Currently the Makita LXT 18 V packs (BL18xx / BL14xx) are supported via the Arduino OBI interface.</span></span>
</li>
<li>
<span class="req-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span>
<span><span class="req-title">HTTPS or localhost</span>
<span class="req-detail">Secure context is required for Web Serial. GitHub Pages provides HTTPS automatically.</span></span>
</li>
</ul>
</div>
</section>
<section class="section">
<div class="warning">
<h3><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg> Read this before you start</h3>
<p>
This tool reads and, on supported packs, modifies battery BMS data. Batteries store a lot of energy —
always follow the upstream project's wiring guide and work safely. Incorrect wiring or use can damage
the battery or the Arduino.
</p>
<p>
Use this software at your own risk. It is provided as open source (GPL-3.0) with no warranty. It is an
independent project and is not affiliated with or endorsed by Makita.
</p>
<p>See the <a href="https://github.com/mnh-jansson/open-battery-information">upstream open-battery-information project</a> for hardware details and documentation.</p>
</div>
</section>
<section class="section">
<h2>Frequently asked questions</h2>
<p class="section-sub">Quick answers to the questions we hear most.</p>
<details class="faq">
<summary>Is this the same as the desktop app?</summary>
<div class="faq-body">
Functionally, yes — this is a browser port of the
<a href="https://github.com/mnh-jansson/open-battery-information">desktop open-battery-information app</a>.
It uses the same Arduino firmware and the same module/interface architecture, so the hardware setup is identical.
</div>
</details>
<details class="faq">
<summary>Does my battery data leave my computer?</summary>
<div class="faq-body">
No. Everything runs locally in your browser tab. There are no servers, no accounts, and no analytics.
Web Serial simply passes bytes between your browser and the Arduino over USB.
</div>
</details>
<details class="faq">
<summary>Which batteries are supported?</summary>
<div class="faq-body">
The <strong>Makita LXT</strong> module covers 18 V LXT packs (e.g. BL1815, BL1850, BL1860) and their
14.4 V siblings. Other packs can be added as new modules over time.
</div>
</details>
<details class="faq">
<summary>Why do I need to flash firmware first?</summary>
<div class="faq-body">
The Arduino needs the Open Battery Information firmware to talk to the battery BMS. The uploader in this
repo flashes it for you in one click — no Arduino IDE or platformio install required.
</div>
</details>
<details class="faq">
<summary>Can it repair or re-unlock my battery?</summary>
<div class="faq-body">
The tool can read and clear error states on supported packs. Whether a pack can be fully recovered depends
on why it locked up. See the upstream documentation for what is and isn't possible.
</div>
</details>
</section>
</main>
<footer class="site-footer">
<p><strong>Open Battery Information</strong> — an open-source web port of the
<a href="https://github.com/mnh-jansson/open-battery-information">open-battery-information</a> project.</p>
<p>Released under the GPL-3.0 license. Independent project, not affiliated with Makita.</p>
</footer>
</body>
</html>