- final persistent validation (cold2): autonomous class-A boot from cache c3732515, live cache hash re-read,
CHARGING/FAST, USB remove/insert recovery, LTE/Wi-Fi/NCM/display PASS, 15-min stability PASS -> B10 CLOSED
- README: B7/B8/B9/B10 CLOSED, production profile (4.20 V / 450 mA / HOLD 4.05 V / full-min 4.15 V / CV 60 min /
timer 512 min / FAULT safe clamp 4.00 V) and the four production limitations; NOTES session 38
- current tree cleaned of raw B10 run logs (monitor/dmesg/snapshot/UART excerpt/action logs/register dumps/emulator
outputs); history (58dcb3d) not rewritten
- publication rules: tools/publish-sanitize.py and .gitignore keep B10+ logs to reports (*.md) and *-diff.txt tables
71 lines
7 KiB
Markdown
71 lines
7 KiB
Markdown
# 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_USB` 201.1 s → `NO_USB -> CHARGING` 232.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)
|
||
1. **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).
|
||
2. **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).
|
||
3. No thermal derating (PMIC reached 57.9 °C with charging + 4×CPU in Test C); IBAT_MAX is the identified derating lever, not implemented.
|
||
4. FAST vs non-fast entry condition at probe not fully explained (≈ 3.90–3.93 V after SBL; FAST after a fresh USB insert).
|
||
5. Unreliable battery contact on this board (battery fell out once on 2026-10-04).
|
||
6. Cosmetic: probe banner says "supervisor v3"; DTB model string "RAM boot B10B-3"; debugfs `cv_s` keeps counting in HOLD.
|
||
7. The 60-min CV hold time is a first value, not tuned.
|
||
|
||
## Final persistent validation cold2 (2026-10-04 16:03–16:27 UTC; `cold2/`, `cold2-*`) — PASS → **B10 battery / charger / power management — CLOSED**
|
||
- Class-A power-on (USB off, battery out, battery in, USB on; no RESET/fastboot/EDL): RTC at boot **3 s** (class A), POFF regs 0x80C/0x80D 00.
|
||
Note: from the host timeline the battery was out ≈ ≤ 55 s rather than ≥ 90 s; the RTC reset to 3 s confirms full PMIC power loss (project class-A criterion).
|
||
- Autonomous boot from the persistent cache: **7.2.7-aurora-b10b5**, production DTB; supervisor banner 4.20/4.05/4.15 V, CV 60 min, IBAT code 4,
|
||
`safety timer 512 min (TCHG_MAX 0x7f)`; `INIT -> CHARGING (probe, usb present)`. VDD_MAX 08, IBAT_MAX 04, CHG_CTRL a0, TCHG 80/7f, BOOT_DONE 80,
|
||
CHG_FAILED 00; 0 FAULT; 0 B10B-4/5 strings, debugfs only `state`.
|
||
- VADC VBAT 4.192 V, VPH 4.193 V, USBIN 4.956 V, PMIC 39.8 °C. LTE START OK 72.8 s, ping OK; Wi-Fi AP 77.3 s (hostapd running), MSS + WCNSS running;
|
||
USB NCM 172.16.42.1/24; DISPLAY READY 7.8 s, 0 display errors; no kernel errors (only the known `printk: debug:` line matches "BUG:").
|
||
- **Live cache hash read-only from Linux** (`dd /dev/mmcblk0p25 | sha256sum`): **c37325156a6f4c013982cf01bcb5b2ddb026b0298e9c3ec0be87f57d693464b8**.
|
||
eMMC writes 0 for the whole boot (only reads).
|
||
- USB off ≈ 21 s: `CHARGING -> NO_USB` 309.2 s (board on battery: USBIN 0.33 V; no reset — heartbeat 211 beats, max gap 5.02 s; NO_USB sample shows
|
||
CHG_CTRL a0 / VDD_MAX 08 / IBAT_MAX 04 unchanged = no writes); USB on: `NO_USB -> CHARGING` 330.3 s → RT 21, path 02 (FAST), production registers,
|
||
CHG_FAILED 00. Operator: DMM 4.180 V; meter 0.2 A before, 0.173 A after (battery ≈ 4.18–4.19 V → CV, small current).
|
||
- 15-min stability window (30 s monitor, 34 samples): 0 ALERT, 0 FAULT, 0 latch, CHG_FAILED 00, CHG_CTRL a0 / VDD_MAX 08 / IBAT_MAX 04 in all samples,
|
||
PMIC max 39.7 °C, uptime continuous (1227 s at the end), LTE ping OK, MSS/WCNSS running, backlight on, eMMC w=0.
|
||
|
||
## Roadmap / TODO after B10
|
||
- Router stack (NAT / firewall / DHCP for Wi-Fi clients over LTE, VPN) — README status TODO.
|
||
- Charger follow-ups (not blocking, separate GOs): thermal derating via IBAT_MAX on PMIC temperature; hard-stop below 4.00 V (VDD_MAX+IBAT_MAX min combination test);
|
||
CV-hold time tuning; explain the FAST entry condition at probe; cosmetic banner/model strings.
|
||
- Hardware: secure the battery contact (fell out once).
|
||
- Display UI instead of the kernel console; brightness control.
|