uzbek-plus/logs/b7/b7c/B7C-RESULT.md
q 8d7721c775 B7: add network time bootstrap and persistent B7C cache
B7A: QMI DMS time vs VNIIFTRI NTP (DMS = UTC - 0.28 s, sigma 1 ms; NITZ = DMS
truncated to 1 s). B7B: a 1970 -> 2026 date -s step is harmless for the modem
stack. B7C: aurora-modem probes DMS/NITZ along the start flow and steps
CLOCK_REALTIME once at the first valid sample (REG registered/attached), never
RTC; background SNTP check (query only) after START OK. 3/3 class-A cold boots
PASS (residual +0.04/+0.36/+0.84 s), cache 14fe453a written (B7C_WRITE_VERIFIED)
and verified by a normal power-on (V1, +0.26 s).

Also publishes the prerequisite R2 (boot-hang / lk eMMC investigation, T4
telnet baseline that B7C builds on) and R3 (autonomous cold boot, NCM loss)
material, and extends tools/publish-sanitize.py to r2/, r3/, b7/.
Binary images, initramfs, busybox and raw logs stay out (see b7/*/SHA256SUMS).
2026-10-02 20:18:25 +03:00

40 lines
3.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.

# B7C — automatic system time bootstrap from QMI DMS (RAM test image): **PASS 3/3 class-A cold boots**
Image b7/b7c/out/aurora-mm1-b7c.img (d0c4cc00…) = T4 initramfs + overlay (aurora-modem 932c9ff2 with time bootstrap, build-epoch 1790935600,
Alpine busybox-static a6bb1e6e for `ntpd -w`). Booted only by RESET-held power-on + `fastboot boot`. **No cache/eMMC write.**
## Counted class-A cold boots
| run | RTC at Linux boot | first VALID DMS | TIME SET (uptime) | DMS−NITZ | START OK | SNTP residual (clock behind VNIIFTRI) |
|---|---|---|---|---|---|---|
| c5 | 6 s | REG registered/attached | 27.46 s | +0.76 s | 78.8 s | **+0.041 s** |
| c6 | 5 s | REG registered/attached | 24.44 s | +0.31 s | 66.0 s | **+0.356 s** |
| c7 (c7r)* | 34 s | REG registered/attached (after one registration-denied) | 69.64 s | +0.08 s | 122.2 s | **+0.843 s** |
\* c7: first `fastboot boot` failed with a USB write error (rc=1); repeated at once from the same fastboot session (one SBL1 start, single PMIC POR,
RTC counted continuously → class A; the extra ~30 s were spent in lk fastboot).
All three: probes before registration INVALID (year<2026), set once, never backwards, no re-set, START OK, bearer up, LTE ping 3/3, adjtimex status UNSYNC,
RTC untouched, eMMC writes 0, dmesg-errs 0, no FAIL/rollback. SNTP stage ran in background after START OK and did not delay it.
## Findings
1. **DMS before registration = modem uptime counted from 1980-01-06** (3.2 s at QMI_READY, …) in every run (class A and B). It becomes real UTC exactly at
registered/attached. NITZ (`--nas-get-network-time`) can return a bogus **1980-01-06** value before that (c4b, c5, c7). The year/build-floor gate rejected
all of them. TIME_REQUIRE_NITZ=1 costs nothing: DMS and real NITZ become valid at the same moment.
2. Time is set 20–70 s after power-on (= registration time), before ModemManager/bearer. No USB host is involved (only for `fastboot boot` of the test image).
3. Residual vs VNIIFTRI over all 6 boots with data: +0.04, +0.19, +0.36, +0.45, +0.58, +0.84 s (always behind, < 1 s). This matches DMS being set from
whole-second NITZ at registration: a per-boot error in [0, 1) s, not a fixed −0.28 s. Meets the B7C limit (≤ ~1 s). SNTP threshold 1 s → never stepped.
4. Kernel CONFIG_RTC_SYSTOHC=y is harmless as long as nothing clears STA_UNSYNC (date -s does not; ntpd is used only with -w).
## Not counted / incidents (details in cN/)
c1, c2b, c4b: functional PASS, class B. c2: battery fell out ~46 s after power-on (silent reset). c3: 14 s power-off + UART wire off + repeated resets.
c4: three starts in 47 s (no fastboot feedback). Driver bugs found and fixed during the series: wait matched its own telnet echo (c1), "NCM ok" after timeout (c2),
booting a board already in fastboot (c2b); added RTC class print and `now`/`collect` modes.
## Open / for later (not done)
- Sub-second SNTP correction (aligned step like tset) would bring the residual to ~10 ms; currently |offset| < 1 s is only logged.
- Pre-existing B6P quirk: modem.conf ROUTES overrides the route-list file path (file "/77.88.8.8 1.1.1.1"); cleanup works.
- Persistent integration = new cache image + eMMC write: only with a separate GO.
## Persistent cache (2026-10-02)
Written with GO: cache = cache-extlinux-b7c.img 14fe453a (B7C_WRITE_VERIFIED, logs/b7/b7c/W/). First normal power-on V1 (class A, RTC 3 s):
lk "Trying to boot 'b7c'", TIME SET at uptime 21.44 s, START OK 73.9 s, SNTP residual +0.262 s, eMMC writes 0. Details cV1/V1-RESULT.md.
Rollback: b7/b7c/cache/B7C-rollback.sh (→ T4 9d3bc890).