evidence · 2.7 KiB

README.md

Committed at docs/evidence/nrf9151/service/README.md. This is what grounds the requirements that cite it.

Open raw source

k230-modem on the board (nRF9151 task 3.3)

Evidence class: board-read. First board, landscape profile, system gcgvaz29zb5wk4d1sm8kygcrz13dpkk2-nixos-system-nixos-26.11.20260919.20b1ddd (built from impl/nrf9151-service at “Set the modem UART to 115200 under glibc 2.42 …”). No SIM is fitted (see ../probe/), so the cellular path stops at sim: absent. Captured 2026-10-14 00:57 UTC, holding the board lock.

board-2026-10-14.txt is the whole capture. The commands, as root on the board:

C="runuser -u shell -- k230-modemctl"
grep nrf9151-enable /sys/kernel/debug/gpio; cat /run/k230/modem/state.json
$C power on; $C status
setpriv --reuid=nobody --regid=dialout --clear-groups -- sh -c 'exec 3<>/dev/ttyS3'
$C power off; grep nrf9151-enable /sys/kernel/debug/gpio
journalctl -b -u k230-modem
RequirementObserved
After a fresh boot: enable low, state off`gpio-2 (nrf9151-enable
power on, then status without a SIMReady 1 s after the request; "power":"on","present":true,"sim":"absent","registration":"sim_failure", firmware mfw_nrf91x1_2.0.3, SLM 2.9.0; enable out hi
power off returns the enable line lowAT+CFUN=0 then out lo; "power":"off"
A second process refused /dev/ttyS3uid nobody, gid dialout (the device is root:dialout 0660): Device or resource busy (TIOCEXCL). Root bypasses TIOCEXCL by design, so the test uses an unprivileged opener

The shell user ran k230-modemctl through the control socket, which shows the k230-modem group grant works.

The first deploy failed, and why

The first image (cfc847ae) timed out: the modem never answered AT, and stty -F /dev/ttyS3 read speed 4098 baud afterwards. glibc 2.42 reads speed_t as the plain baud rate, so the Rust libc crate’s legacy B115200 (0o010002 = 4098) set 4098 baud. The read-only probe still worked in the same boot, so the hardware was fine. The fix tries cfsetspeed(115200) and falls back to the constant on older glibc. Commands now also end in CR LF, as the probe’s do. Host transcript tests cannot see a baud rate, which is why they passed.

Limits