Hi,
Logging a finding from a few weeks of using a Mudi 7 (E5800) with last firmware:
When I unplug the charger from a freshly-charged unit and let it sit on battery, the LCD on the case and the web UI both stay at 100 % for what looks like 1–3 hours, then drop fairly quickly to track the actual charge. During that window, the kernel fuel-gauge driver in /sys/class/power_supply/<battery>/capacity correctly decreases (I measured 100 → 88 % over 1 h 37 min under ~1.5 W load).
So the cell IS losing charge, the chip on the board knows it, but the MCU layer that feeds the LCD and the web UI smooths it to "still 100 %" until enough has passed. Voltage / current / temperature numbers all agree with the fuel-gauge that it's a real discharge — not a sensor glitch.
Couple of questions for GL.iNet (and the wider community in case anyone has already dug into this):
-
Is the headroom hold intentional? I assume yes — most users probably appreciate that "freshly charged" stays at 100 for a while instead of instantly flipping to 98. Just want to confirm before filing a bug.
-
What's the trigger that releases the hold? A fixed timer, a
voltage_nowthreshold, or a delta between the MCU's estimate and the fuel-gauge? -
Is there a documented way to read the unsmoothed value from outside the kernel sysfs path? I'd love a field on
ubus call mcu status(something likecharge_percent_raw) so third-party tools don't have to special-case the sysfs path that differs across firmware generations.
Sharing this writeup in case other people noticed the same discrepancy and were wondering whether their battery was sick. It isn't — it's just the MCU being polite at the top of the curve. The cell behaves exactly as advertised; only the displayed percentage lags.
Sample logs:
MCU=100% sysfs=100% V=4.392 I= -45 mA <- unplug
MCU=100% sysfs= 99% V=4.378 I= -432 mA
MCU=100% sysfs= 97% V=4.350 I= -451 mA
MCU=100% sysfs= 94% V=4.305 I= -460 mA
...
MCU=100% sysfs= 88% V=4.220 I= -461 mA <- T+1h37m
For anyone interested in the raw value: my companion app exposes both readings and a toggle to flip between them.




