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).
3.5 KiB
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
- 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. - Time is set 20–70 s after power-on (= registration time), before ModemManager/bearer. No USB host is involved (only for
fastboot bootof the test image). - 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.
- 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).