mirror of
https://github.com/ALLFATHER-BV/wadamesh.git
synced 2026-09-26 18:07:56 +00:00
@D-Melhede saw a P4 claim 71% and then die, with Meck-P4 reading 11% on the same pack; a full charge never quite reached 100%; and "calibrate 100% here" made it permanently worse. @wb6zsu watched it read 51%, then 100% the instant USB went in. All of that is one cause. The P4 carries a BQ27220 fuel gauge, which coulomb-counts against its learned pack profile and therefore knows the actual state of charge, but we only ever read its Voltage() register and pushed that through the generic 3.30-4.20 V linear curve. Terminal voltage is charger-driven, so it pins at 100% the moment USB is connected however empty the pack is, sits under 100% on a rested full pack, and calibrating "full" while charging captures a charger rail as the reference and bakes the error in for good. The old comment conceded the limit in as many words: "the real cell % isn't observable here". On this board it is. Now reads StateOfCharge() and uses it directly, falling back to the voltage curve only when the gauge does not answer or reports out of range, so a dead gauge is no worse than today rather than a made-up number. The register is REG 0x2C, taken from LilyGo's own SensorLib (GaugeBQ27220.hpp "StateOfCharge; // % - REG2C") rather than from memory, since guessing a register here would produce confident nonsense. Does NOT address the charging/LED half of that report: whether the pack charges correctly and what drives the red/green LED is the BQ25896 charger, which we still do not talk to. Tracked separately in the issue. P4 builds; T-Deck and V4 unaffected (the gauge path is board-gated). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>