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