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).
33 lines
2.9 KiB
Markdown
33 lines
2.9 KiB
Markdown
# B7B — one system clock step 1970 → QMI DMS UTC on the live modem: **PASS**
|
||
|
||
2026-10-02, same boot as R3A/R3B/B7A (uptime ≈ 2925–3130 s). No eMMC write (writes 0), no RTC write, image unchanged, no reboot. Only RAM files in /tmp/b7b
|
||
and one temporary /32 route to ntp1.vniiftri.ru (89.109.251.21), removed afterwards. Script b7/b7b/b7b-run.sh (sha 58ed0d00…), detached on the board.
|
||
|
||
## Time-source checks (b7b-time-source.txt)
|
||
3 DMS samples + 1 NITZ, each bracketed by `adjtimex` µs timestamps. All PASS → VERDICT=GO:
|
||
values present; DMS ≥ image build 2026-10-02T08:09:01Z; year ≥ 2026; < build + 5 y (1980/2017 excluded); 3 samples consistent (spread 0.8 ms); |DMS − NITZ| = 0.54 s < 2.
|
||
Dry runs first (logs dry/): run 1 was stopped by the gate itself, because my parser bug gave DMS = 1980-01-06 → STOP, clock not touched. Fixed, run 2 = GO (dry).
|
||
|
||
## Step (b7b-actions.txt)
|
||
`date -u -s @1790934303` (09:45:03 UTC), started at a local instant chosen so that the new clock lands on a whole DMS second (usleep 1.386 s), rc=0.
|
||
Clock 2929.968714 → 1790934303.002845. No hwclock. adjtimex stays `status 64 (UNSYNC)`, offset 0, so the kernel 11-min RTC sync does not engage.
|
||
RTC since_epoch kept counting from boot (2926 → 2929 → … 3112): **RTC untouched**.
|
||
Right after the step: DMS − clock = +14.5/+14.2/+14.0 ms (date -s exec ran ≈ 12 ms after the target instant).
|
||
|
||
## Stack after the step (b7b-post.txt, b7b-observe.txt, b7b-host-checks.txt)
|
||
- PIDs unchanged pre/post/all of the observation: ModemManager 1655, rmtfs 1056, qmi-proxy 1701, telnetd 615, udevd 1613, dbus 1640, polkitd 1644.
|
||
- 36 samples over 182 s (every 5 s): state BEARER_CONNECTED, wwan0 10.41.212.24/28, **LTE ping 77.88.8.8 36/36 ok**, host 172.16.42.2 up 36/36;
|
||
mm `connected/home`, bearer1 connected=yes in all 13 mmcli samples.
|
||
- lifecycle.log 35 lines before and after (no FAIL/rollback/error). dmesg: only the three `[b7b]` marker lines after the step, no kernel message.
|
||
ModemManager log: no new lines at all after the step. dmesg-errs 0.
|
||
- Host: telnet + ping 172.16.42.1 OK on 15/15 checks during the run.
|
||
|
||
## Residual vs NTP (b7b-ntp-check.txt, ntpd -w query only, ntp1.vniiftri.ru)
|
||
4 replies: offset **+0.2922 / +0.3001 / +0.3002 / +0.2985 s** (RTT 60–75 ms). Best (min delay) = +0.292 s: the system clock is 0.29 s slow.
|
||
That matches B7A: DMS bias −0.280 s plus the ≈ 0.013 s step latency (DMS − clock = +13…14 ms at the end too, so no drift in 200 s).
|
||
Route removed, table identical to before.
|
||
|
||
## Verdict
|
||
PASS on every criterion: the clock is current (2026-10-02, −0.29 s vs VNIIFTRI), the modem stack did not react to the 56-year forward step,
|
||
bearer/wwan0 stayed up, MM/rmtfs were not restarted, LTE ping worked, no new FAIL/rollback/error, residual ≈ 0.3 s as expected.
|
||
Not covered (B7C): DMS validity before registration on a class-A cold boot; ntpd in the image; integrating the step into the boot flow.
|