- LBC supervisor v1..v4 (linux/patches/b10b3-lbc-supervisor-v3.patch + b10/b10b3/lbc-v3-to-v4-fault-clamp.diff): CHARGING 4.20 V/450 mA -> HOLD 4.05 V after 60 min CV -> battery -> new cycle on USB insert; FAULT = VDD_MAX 4.00 V clamp - RAM tests C/B/D/D2/D3/D4 (safety timer only ends fast charge), B10B-4 actuator audit (VDD_MAX works, USB_SUSP does not), B10B-5 FAULT clamp regression, production run, warm reboot via PON reboot reason - cache = B10B-5 c3732515 (HW EDL write, readback + full partition verify), class-A persistent validation - test-only hooks/images are not part of the production kernel; images with the AP PSK are not published
4.5 KiB
B10-RESULT — battery charging: PERSISTENT, validated. B10 CLOSED.
Date: 2026-10-04. The eMMC cache is now B10B-5 c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8 (B10_CACHE_WRITE_VERIFIED).
It replaces B9C b9ce13c9; the B9C image is kept as rollback (b10/b10b5/B10-rollback.sh, HW EDL).
What is in it
B9C userspace/init/display/network (initramfs ac518e27, cmdline unchanged) + kernel 7.2.7-aurora-b10b5 (charger supervisor v4 = v3 CHARGE → HOLD →
battery → CHARGE + FAULT safe clamp to 4.00 V) + production DTB e47762d1 (charge 4.20 V, HOLD 4.05 V, full-min 4.15 V, CV 60 min, IBAT_MAX 450 mA,
safety timer 512 min). No test/debug hooks. Design: logs/b10/b10b3/B10B3-DESIGN.md §8 (8.14–8.17); evidence: B10B3-RESULT.md (state machine),
B10B3-TESTD4-RESULT.md (timer), B10B4-RESULT.md (actuators), B10B5-RESULT.md (clamp + production RAM smoke), b10/b10b3/cache-v4 (candidate).
Write (HW EDL, b10/b10b5/B10-write.sh 295ed53b = B9C-write.sh with only image/hashes/aboot 15208dbb/paths changed)
Operator: USB off → battery out/in → D+ → GND, USB, release → 9008. Gates: loader, candidate, rollback image + B9C readback backup, 9008, identity,
cache geometry 0x4118c000+0x8000000, GPT == A3, boot e9579f33, aboot 15208dbb, live cache == B9C b9ce13c9 (saved as W/pre-cache.bin).
Write cache only → readback c3732515 == candidate (CACHE_MATCH) → GPT p/b, tzbak, boot, aboot, sbl1 rpm tz hyp recovery modemst1 modemst2 fsg fsc
persist == A3, modem system userdata == A4pre → B10_CACHE_WRITE_VERIFIED (W-console.txt, W-SHA256SUMS, 480s logs/b10/b10b5/W/).
Persistent validation (cold1: USB off, battery out ≥ 90 s, battery in, USB on — no RESET, no fastboot; cold1/, cold1-*)
- class A (RTC 3 s); autonomous lk1st → lk2nd extlinux → 7.2.7-aurora-b10b5, production DTB (model "JZ08AU Aurora (RAM boot B10B-3)"), B9C cmdline.
safety timer 512 min (TCHG_MAX 0x7f), enabled; supervisor 4.20/4.05/4.15 V, CV 60 min, IBAT code 4;INIT -> CHARGING (probe, usb present).- VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, TCHG 80/7f, BOOT_DONE 80, CHG_FAILED 00; debugfs only
state; 0 B10B-4/B10B-5 strings; 0 FAULT. - VADC VBAT 4.189 V, VPH 4.188 V, USBIN 4.952 V, PMIC 39.4 °C.
- LTE START OK 75.0 s, ping 4/4; Wi-Fi AP enabled 79.2 s, MSS + WCNSS running; DISPLAY READY 7.4 s, 0 errors; NCM OK; eMMC writes 0.
- USB off ≥ 10 s / on:
CHARGING -> NO_USB201.1 s →NO_USB -> CHARGING232.8 s → FAST (RT 21, path 02), production registers, USB 0.27 A. - 15-min regression window (30 s monitor, 32 samples): 0 ALERT, 0 FAULT, 0 latch, CHG_FAILED 00, PMIC max 39.7 °C, no reset, LTE/Wi-Fi/display OK at the end.
(The single dmesg match for "BUG:" is
printk: debug: ignoring loglevel setting.— present in every boot, not an error.) Board left running on the persistent cache, CHARGING (FAST).
Final hashes
| item | sha256 |
|---|---|
| live cache (readback) | c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8 |
| /Image.gz-dtb in cache | b0ea04666c4ab979067fe9c0015bda0e9c8ac742678321e57b18e841c9c69f95 (Image.gz 96b71ec3, Image 8c8bfccb) |
| DTB | e47762d1dcd0af6e2acb711fa47ecc13769cd6bcb81259ce50635e8b18b6514a |
| initramfs | ac518e27e2957ad5e4515969b9a3808024e11ef8d1a79433a899a67dbc644558 |
| boot (emmc1) / aboot (lk1st-b9l) | e9579f33… / 15208dbb… (unchanged) |
| rollback cache B9C | b9ce13c9f48e36a5054c0ae3c39dc3f184b1fc2eea1d57d4b8bd8e9ae800a37b |
| driver source | b10/b10b3/pm8916_lbc-v4.c (= upstream + linux/patches/b10b3-lbc-supervisor-v3.patch + b10/b10b3/lbc-v3-to-v4-fault-clamp.diff) |
Known production limitations (accepted, documented)
- FAULT safe clamp to 4.00 V is not a charge disconnect: with VBAT < 4.00 V the charger may still charge up to 4.00 V; no hard stop at any VBAT was found (USB_SUSP does not cut the input; VDD_MAX + IBAT_MAX minimum combination untested).
- Safety timer is not a charge stop: it only ends the fast-charge state (path 02 → 01), current continues, CHG_FAILED is not set (Test D4).
- No thermal derating (PMIC reached 57.9 °C with charging + 4×CPU in Test C); IBAT_MAX is the identified derating lever, not implemented.
- FAST vs non-fast entry condition at probe not fully explained (≈ 3.90–3.93 V after SBL; FAST after a fresh USB insert).
- Unreliable battery contact on this board (battery fell out once on 2026-10-04).
- Cosmetic: probe banner says "supervisor v3"; DTB model string "RAM boot B10B-3"; debugfs
cv_skeeps counting in HOLD. - The 60-min CV hold time is a first value, not tuned.