Skip to content

python3-improv: report secure_boot from U-Boot sec_boot flag (imx93-jaguar-eink) - #44

Merged
ajlennon merged 2 commits into
mainfrom
feature/improv-secure-boot-report
Jul 20, 2026
Merged

python3-improv: report secure_boot from U-Boot sec_boot flag (imx93-jaguar-eink)#44
ajlennon merged 2 commits into
mainfrom
feature/improv-secure-boot-report

Conversation

@ajlennon

Copy link
Copy Markdown
Member

Summary

sec.secure_boot in the Device-Status sec block previously always returned "unknown". This implements a best-effort userspace read.

  • Why not the ELE lifecycle? The authoritative source is the EdgeLock Enclave "get info" lifecycle field (OEM_OPEN / OEM_CLOSED / FIELD_RETURN). This kernel exposes no userspace ELE path — no /dev/ele_mu, no lifecycle nvmem cell; the lifecycle lives behind OP-TEE/secure world. Reading it authoritatively needs a dedicated OP-TEE TA (secure-world plumbing) — kept as a tracked follow-up (roadmap P0-1/P2-1, BLE-BOARD-PROFILE.md §10).
  • What we read instead: U-Boot's sec_boot env flag via fw_printenv, which the NXP boot script uses to gate authenticated boot (auth_os): yesclosed, noopen, otherwise unknown. This reflects the bootloader configuration, not an ELE-attested hardware lifecycle, and (like the whole sec block) is self-reported/untrusted until attestation (P2-1).
  • A fuse/OCOTP byte heuristic is deliberately avoided — the ELE-OCOTP0 shadow has non-zero UID/config words, so byte-level guessing would misreport a fused board.

Test plan

  • fw_printenv -n sec_boot on eink-0167 (root) → nosecure_boot: "open".
  • python3 -m py_compile passes.
  • Hot-patch on eink-0167 and confirm via improv_provision.py info --json that sec.secure_boot reads open over BLE (post-merge OTA re-verify).

Made with Cursor

Alex J Lennon and others added 2 commits July 20, 2026 10:50
…aguar-eink)

sec.secure_boot previously always returned "unknown". This kernel exposes
no userspace ELE lifecycle path (no /dev/ele_mu, no lifecycle nvmem cell;
the ELE "get info" lifecycle sits behind OP-TEE/secure world), so the
authoritative OEM_OPEN/OEM_CLOSED value still needs a dedicated OP-TEE TA
(tracked follow-up, roadmap P0-1/P2-1).

As the best available userspace signal, read U-Boot's `sec_boot` env flag
(via fw_printenv), which the NXP boot script uses to gate authenticated
boot (auth_os): yes => "closed", no => "open", else "unknown". This
reflects the bootloader configuration, not an ELE-attested lifecycle, and
remains self-reported/untrusted until attestation (P2-1). A fuse/OCOTP
byte heuristic is deliberately avoided (the ELE-OCOTP shadow has non-zero
UID/config words). Verified on eink-0167: fw_printenv -n sec_boot => "no"
=> secure_boot "open".

Co-authored-by: Cursor <cursoragent@cursor.com>
@ajlennon
ajlennon merged commit 53924be into main Jul 20, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant