uzbek-plus/logs/b10/b10b3/B10B3-TESTC-RESULT.md
q 58dcb3d121 B10: battery charging — PM8916 LBC supervisor v4 (CHARGE/HOLD, FAULT safe clamp to 4.00 V) and persistent B10B-5 cache
- 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
2026-10-04 19:00:27 +03:00

52 lines
5 KiB
Markdown
Raw 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.

# B10B3-TESTC-RESULT — HOLD mechanism (v3 supervisor, RAM only)
Date: 2026-10-03. **Verdict: PASS** (with the observations below). Image `b10/b10b3/out-c/aurora-b10b3c.img` 5ff9dec0 (test-only DTB:
charge 4.10 V, HOLD 4.00 V, full-min 4.05 V, CV 5 min, IBAT_MAX 450 mA, timer 512 min). aboot/cache untouched, eMMC writes = 0, no manual PMIC writes.
## Bench preparation
Class-A reset (USB out, battery out ≈2 min 12 s, battery, USB, no RESET) → B9C, RTC 3 s; read-only snapshot = SBL defaults
(`pre-testC-classA-check.txt`: VDD_MAX 08, IBAT_MAX 00, IBAT_SAFE 0a, CHG_CTRL 90, TCHG 80/1d, 0x105B 09, 0x10EE 00, BOOT_DONE 00, charging 05/02).
Then warm reboot with RESET held (second attempt; first one missed) → lk1st fastboot → `fastboot boot` Test C at 18:20:50 (class B after the clean class A).
## After probe (`c1-probe-state.txt`)
`safety timer 512 min (TCHG_MAX 0x7f), enabled`; `supervisor v3: charge 4100000, hold 4000000, full-min 4050000, cv 5 min, IBAT_MAX code 4`;
INIT → CHARGING at 3.955 V. Registers: BOOT_DONE 80, VDD_MAX 04 (4.10 V), IBAT_MAX 04 (450 mA), TCHG_MAX_EN/TCHG_MAX 80/7f, CHG_CTRL a0,
CHG_FAILED 00, USB RT 03 (valid). VADC/BMS/PMIC temp working. LTE START OK 73.7 s, Wi-Fi AP enabled 78.1 s, NCM ok.
## Timeline (`c1-mon.txt`, 30 s samples; operator: USB meter + DMM soldered to VBAT/GND)
| phase | uptime | VADC VBAT | USB meter | registers |
|---|---|---|---|---|
| CHARGING (CC) | 0–≈1780 s | 3.955 → 4.10 V | 0.358 A steady | CHG_STATUS 05, CHGR RT 01, **USB path 01** (not 02!), VDD_MAX 04 |
| CHARGING (CV at 4.10 V) | ≈1780–2059 s | 4.077–4.100 V | — | CV bit seen (03/05 interleave), supervisor cv_s 0 → 328 s |
| **→ HOLD** | **2059 s** | 4.083 V | — | dmesg `CHARGING -> HOLD (CV time reached, VDD_MAX -> hold level)`; **only VDD_MAX 04 → 00** |
| HOLD phase 1 | 2059–≈3250 s | 4.022 (immediate step −60 mV) → 4.0137 → ≈4.00 V, ≈−1.4 mV/min | **≈0.01 A** | CHG_STATUS 03, CHG_CTRL a0, PMIC 36.7 → 33.8 °C |
| HOLD phase 2 (no extra load) | ≈3250–3850 s | 4.000–4.008 V stable | 0.03–0.08 A | 03, a0, 00 |
| load step 4×CPU (operator request) | ≈3860–4030 s | 3.980–4.001 V | **0.2–0.3 A** (DMM 3.983 / 3.972 V) | PMIC rose to 57.9 °C → load stopped early at 19:27:51 |
| HOLD phase 2 after load | 4040–4372+ s | **4.0014–4.0022 V (±1 mV, 11+ samples)** | 0.07 A, peaks 0.1 A (DMM 3.991 V, "battery stands") | 03, a0, 00; PMIC 37.3 °C |
## Checks
- Automatic CHARGING → HOLD: PASS (5 min CV with VBAT ≥ 4.05 V, single transition, n_hold 1).
- Only the new VDD_MAX was written: PASS. Full diff vs the class-A baseline (CHGR/BAT_IF/USB/MISC): config changes exactly the expected ones
(0x1040 08→00 HOLD, 0x1044 00→04, 0x1045 0a→04, 0x1049 90→a0, 0x1061 1d→7f, 0x1642 00→80 [+0x1643 0b]); status-only 0x1009/0x100b/0x1010.
TCHG_MAX_EN 80 (timer enabled), CHG_FAILED 00, 0x105B 09, 0x10EE 00 unchanged.
- VBAT falls to 4.00 V after HOLD: PASS (phase 1, −1.4 mV/min; VBAT never rose after HOLD).
- USB carries the system on the shelf: PASS — VBAT stable at 4.000–4.002 V for > 10 min with USB input 0.03–0.1 A; a 4×CPU load step was taken
from USB (0.2–0.3 A) with VBAT staying at the shelf.
- 00/01 latch: did not occur (n_latch 0) → the HOLD restart path is implemented but not exercised.
- LTE ping 5/5 via wwan0, Wi-Fi AP aurora-b8f up (Pronto running, 0 crashes), NCM/UDC configured, display (fb0 panel-mipi-dbid, backlight on): PASS.
- eMMC writes = 0 (mmcblk0 write I/Os 0 in every dump).
- PMIC temperature: max 48 °C while charging; **57.9 °C during the extra CPU-load step** (CPU 73 °C next to it + ≈0.3 A through the linear
charger) — close to the 60 °C abort level; load was stopped early. No ALERT in the logged 30-s samples.
## Observations / corrections
1. **USB path 0x1308 = 01 does not mean "not charging":** CC charging at 0.358 A ran with 0x1308 = 01 and CHGR RT 01 (no FAST_CHG_ON).
Only the pair CHG_STATUS 00 + path 01 is the latch; the supervisor already uses the pair.
2. **Board idle consumption on USB is ≈0.03–0.1 A, not 0.15–0.20 A.** The earlier 0.15–0.20 A figures were measured while charging (board +
battery). Corrected expectation for HOLD phase 2: USB input ≈ board load (≈0.03–0.1 A idle, rising with load), VBAT flat at the shelf.
3. HOLD phase 1 indeed has ≈0.01 A USB input while VBAT > shelf (VPH = VBAT, no power path) — as predicted; phase 2 resumes USB supply.
4. Cosmetic: the debugfs `cv_s` keeps counting in HOLD (cv_since not cleared on the transition) — no functional effect; fix in the next build.
5. HOLD-phase durations at the test levels: phase 1 ≈ 20 min for 80 mV; production (4.20 → 4.05 V) will take longer (≈150 mV).
## State after the test
Board left in HOLD on the Test C RAM image (VDD_MAX 4.00 V, timer 512 min enabled, USB carrying the load). Monitor and pull stopped.
LBC registers written by the test survive warm reboots → a class-A reset is required before the next test. Test B not started (needs GO).