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

3.5 KiB
Raw Permalink Blame History

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