uzbek-plus/logs/b10/b10b5/B10-RESULT.md
q 4983fe2f76 B10: finalize persistent PM8916 charging
- 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
2026-10-04 19:48:10 +03:00

71 lines
7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.