// the find
tinfever/FW-Dyson-BMS
(Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System
Replacement firmware for the PIC16LF1847 microcontroller inside Dyson V6/V7 battery packs. Dyson intentionally omitted $0.02 worth of cell-balancing resistors and then programmed the BMS to permanently brick itself when cells go out of balance. This firmware removes that behavior. It's for people with dead batteries who want to fix them instead of buy new ones.
The reverse-engineering work is thorough — full KiCad schematics for multiple PCB variants, high-res PCB photos with trace overlays, and a complete state flow chart. The EEPROM parsing tool is a practical addition: you can dump the fault log and get human-readable timestamps and error codes instead of just counting LED blinks. The LED feedback system is actually better than stock — cell balance indicator on charge connect, 6-level SOC display on trigger release, firmware version check via hold+charge. The README is unusually honest: the author documents every known bug, admits the code is a mess, and explains exactly why cell balancing wasn't implemented despite being the whole point.
The flash process is one-way — no path back to factory firmware, which is a real problem if you need warranty service or want to sell the vacuum. Cell balancing is not implemented, which is the core hardware failure this project exists to fix; the firmware just stops the bricking behavior, it doesn't solve the underlying imbalance problem. Scope is narrow: only V6/V7 with specific PCB numbers are supported, and the author explicitly says they're done with the project and unlikely to expand it. The code quality self-assessment ('I've created a monster') isn't false modesty — no interrupts, complex state transitions that the author admits they're afraid to touch, and no tests of any kind.