Structured, observable, compliant firmware — by architecture.
EmbedIQ is an open-source firmware framework for embedded and edge systems. It gives development teams a consistent component model above the RTOS — Function Blocks, typed messages, explicit state machines, and automatic traceability — where compliance evidence is generated by the architecture itself, not added afterward.
The result: behavior that is reusable, testable, portable, and audit-ready by default, with zero developer instrumentation code required.
RTOS gives primitives, not structure.
Every team rebuilds the application layer differently — callbacks, shared globals, semaphores — under delivery pressure.
Coupling is invisible until it fails.
Direct cross-module calls, shared state, and timing assumptions create hidden dependencies that break under change.
Compliance evidence is retrofitted.
Safety, security, and audit requirements arrive late. Adding traceability after-the-fact is expensive, incomplete, and not verifiable.
Real blocks. Real boundaries. Real contracts.
Every chip below is a real Functional Block from a production deployment shared with permission. FBs communicate exclusively through the typed Message Bus — no direct calls, no shared state. The Observatory captures every event automatically. The .iqtrace output is the compliance evidence record. Open-source examples live in the repo: examples/thermostat and examples/gateway.
Endpoint router & dispatcher
FSM engine (table-driven)
Boot phase sequencing
Compile-time enforcement
What EmbedIQ delivers by default
Safety and compliance evidence in traditional firmware is retrofitted at the end of a project. In EmbedIQ, the structured component model is the evidence generator. Every FB lifecycle event, every message, every FSM transition, every fault is captured in a tamper-evident, hash-chained audit record — not because a developer remembered to log it, but because the architecture produces nothing else.
What EmbedIQ claims, and does not. EmbedIQ is a framework that enables compliance — it is not itself a certified product. No certification body has assessed EmbedIQ. What follows is an honest map of which standard requirements the architecture is designed to support, the levels currently targeted, and the levels that are explicitly out of scope. The certification of any system built on EmbedIQ is the responsibility of that system's owner.
Deterministic Execution Trace
The complete causal chain — from hardware interrupt through driver FB, message bus, application FSM, to output — is in the .iqtrace file. Timestamped, sequenced, verifiable. Supports IEC 61508 / ISO 26262 behavioral evidence requirements.
Tamper-Evident Audit Trail
HASH_CHAIN TLV links every event record to the previous one. A single altered record breaks the chain. ECDSA-P256 session signing (Phase 3) adds device-level non-repudiation. The .iqtrace format is open, Apache 2.0, usable offline.
Explicit FSM per Component
Every FB with non-trivial behavior uses a flat, table-driven FSM. States, transitions, guards, and actions are visible in one place — not scattered conditional logic. FSM transitions are auto-captured by Observatory. Directly satisfies IEC 61508 "structured programming" requirements.
Zero Shared State
FBs do not share globals or call each other directly. The typed Message Bus is the only inter-component boundary. This is a compile-time enforced rule. Eliminates an entire class of safety-relevant coupling failures.
Layer Contracts
Compile-time enforced boundaries between Application, Service, Driver, HAL, and OSAL layers. Layer swaps (RTOS migration, hardware platform change) do not break application code. Contract violations are build errors, not runtime surprises.
safety_class per Function Block
Every FB declares a safety classification at registration. AI-authored code in safety-classified FBs triggers a mandatory human security review gate at CI. The classification is captured in every Observatory session record and in the CycloneDX SBOM.
MISRA C:2023 Advisory
Core headers (core/include/) are written to MISRA C:2023 advisory compliance: no implicit integer conversions, no VLAs, no dynamic allocation in framework code, no recursion in the engine, default cases on all switches. Project-level enforcement via Cppcheck, LDRA, or PC-lint Plus is the application's choice — the architectural properties keep findings low.
SBOM — CycloneDX + SPDX
CycloneDX v1.5 is the primary SBOM format — lists every FB with safety_class, vendored libraries, and license IDs. SPDX 2.3 supported via Protobom translation. ML-BOM extension for AI-using FBs satisfies EU AI Act Annex IV technical-documentation requirements. Required by EU CRA, recommended by NIST SSDF.
EU AI Act Logging
AI inference events live today in the SYSTEM band: AI_INFERENCE_START (0x17), AI_INFERENCE_END (0x18), AI_CONFIDENCE_THRESHOLD (0x1A) — supports Art.12 logging and Art.13 explainability. The dedicated fb_compliance_log Service FB (Apache 2.0, on the open-source roadmap) consolidates inference invocations, input hashes, and output decisions into a tamper-evident audit trail.
| Standard / Requirement | How EmbedIQ Addresses It | Mechanism | Status |
|---|---|---|---|
| IEC 61508 — Functional Safety Behavioural evidence, structured programming |
Deterministic .iqtrace of every FB lifecycle + FSM transition. Explicit flat FSMs replace scattered conditionals. Zero shared state by architecture. Targeted: SIL 1, SIL 2. SIL 3/4 not targeted (requires formal verification toolchain beyond EmbedIQ's scope). | Observatory · FSM engine · .iqtrace | SIL 1 / 2 |
| ISO 26262 — Automotive Safety ASIL-relevant traceability |
Same .iqtrace evidence foundation as IEC 61508. Layer contracts enforce architectural separation of concerns. safety_class field per FB enables ASIL tracking. Targeted: ASIL A, ASIL B. ASIL C/D not targeted (requires AUTOSAR binding outside v1 scope). | safety_class · layer contracts · .iqtrace | ASIL A / B |
| IEC 62443 — Industrial Cybersecurity Security event logging, credential isolation |
SECURITY_INCIDENT (0x61) and AUTH_EVENT (0x62) Observatory events on every policy violation. HASH_CHAIN tamper-evident log satisfies SL 1/2 audit-log requirements today. Targeted: SL 1, SL 2. SL 3+ requires per-event device signing, addressed by TRACE_SIGNATURE TLV in Phase 3. | SEC track · obs events · HASH_CHAIN | SL 1 / 2 |
| MISRA C:2023 Code quality stance for safety-critical C |
Core headers are written to MISRA C:2023 advisory compliance — no implicit conversions, no VLAs, no dynamic allocation in framework code, no recursion in the engine, default cases on all switches. Per-project enforcement (Cppcheck / LDRA / PC-lint Plus) is the application's choice; framework architecture keeps findings low. | core/include/ · CODING_RULES.md | Advisory |
| DO-178C — Avionics Software Structural coverage, trace evidence |
FB component isolation enables MC/DC coverage measurement per unit. .iqtrace provides requirements-to-runtime trace evidence. Explicit FSMs make structural coverage analysis tractable. Targeted: DAL C, DAL D. DAL A/B not targeted (formal methods + full MC/DC tooling outside scope). | FB isolation · .iqtrace · FSM tables | DAL C / D |
| EU AI Act AI decision audit trail, logging |
AI inference events live in SYSTEM band today: AI_INFERENCE_START (0x17), AI_INFERENCE_END (0x18), AI_CONFIDENCE_THRESHOLD (0x1A) — supports Art.12 logging and Art.13 explainability. fb_compliance_log Service FB consolidates these into a dedicated audit trail (Apache 2.0, on roadmap). | SYSTEM band events · fb_compliance_log | Phase 1 live |
| CycloneDX SBOM Software supply chain transparency |
CycloneDX v1.5 is the primary SBOM format. SPDX 2.3 supported via Protobom translation. Lists every FB with safety_class, vendored third-party libraries, license IDs. ML-BOM extension for AI-using FBs. Required by EU CRA; recommended by NIST SSDF. | CycloneDX v1.5 · SPDX 2.3 · ML-BOM | Available |
| Tamper-Evident Trace Signing Non-repudiable audit record |
Tier 1 — SHA-256 HASH_CHAIN TLV (0x0005) links every event batch to the previous one, on every device, zero RAM overhead — available today. Tier 2 — TRACE_SIGNATURE TLV (0x0009) adds device-key-signed non-repudiation for SL 3+ environments; format reserved, signing infrastructure ships in Phase 3 (P2-SIGN-01 through 05). | HASH_CHAIN TLV · TRACE_SIGNATURE TLV | Tier 1 live · Tier 2 P3 |
Greenfield · EmbedIQ Agent · Offline Ingest
EmbedIQ is designed for new firmware where the full framework is adopted from day one. For teams with existing deployed systems, two additional paths bring .iqtrace observability without a full rewrite. All three produce the same open .iqtrace format — but with explicit, encoded trust levels so every downstream tool knows exactly how much confidence to place in each event. Greenfield is shipping today; the EmbedIQ Agent (brownfield) and Offline Ingest are on the open-source roadmap.
Full EmbedIQ Framework
Adopt EmbedIQ from the start. The framework generates .iqtrace automatically. Every event is deterministic, framework-verified, and structurally correct by construction.
EmbedIQ Agent
An open-source Linux daemon that attaches to any existing system — no framework adoption, no code changes required. Captures live events and writes verifiable, real-time .iqtrace.
Upload Any Log File
Upload an existing log file from any system. The open-source ingestion library (published by Studio team) converts it to .iqtrace for exploration, debugging, and migration evaluation.
Architecture choices and what they solve
| Architecture Choice | Problem Solved | Effect |
|---|---|---|
| Function Blocks FB per concern |
Rebuild · Coupling | Each concern owns its state. No shared globals. Independently testable. safety_class declared at registration. |
| Typed Message Bus async · schema-enforced |
Coupling · Compliance | All inter-component interaction is observable, schema-validated, hash-chained, and replayable. Every message is evidence. |
| Flat FSMs table-driven · auto-traced |
Coupling · Safety evidence | Non-trivial behavior is an explicit table. FSM transitions are auto-captured in Observatory. IEC 61508 "structured programming" satisfied. |
| Layer Contracts HAL · OSAL · Message |
Rebuild · Portability | RTOS, HAL, libraries, and application code evolve independently. Contract violations are compile errors. |
| Observatory zero dev code |
Compliance · Debugging | Runtime behavior captured by the framework — not by developer memory or printf discipline. Compliance evidence as a by-product of operation. |
| Open .iqtrace Apache 2.0 · TLV · HASH_CHAIN |
Evidence portability | The audit format is open, portable, and usable outside commercial tooling. Trust levels and provenance encoded per-event. Offline verifiable. |
| OSAL + HAL Observation XOBS-1 · XOBS-2 |
Cross-layer root cause | OSAL faults (0x66) and HAL faults (0x67) captured at abstraction boundaries. Root causes below the FB layer are visible — not just symptoms at the application layer. |
How the ecosystem stays trustworthy
The trust and data layer is Apache 2.0 — permanently open. Developers, ecosystems, and regulators can inspect, adopt, and extend it without commercial dependency. The commercial layer turns open trace data into understanding, workflow, and compliance evidence packages.
Apache 2.0 Open Foundation
The runtime, trace format, CLI, and brownfield tooling are permanently open. The principle: the trust layer has to be open for ecosystem adoption — anything else turns the audit record into a vendor dependency.
- EmbedIQ core runtime and framework engine — available
- Observatory runtime — auto-capture, buffer, flush, HASH_CHAIN — available
- Open .iqtrace format specification (v1.1) — available
- All Driver FBs and Service FBs, including fb_cloud_mqtt, fb_ota, fb_provisioning, fb_secure_boot, fb_fleet_diag, fb_compliance_log
- embediq obs CLI — decode, stats, filter, export, tail — available
- Project-management CLI (init, add, build) — roadmap
- EmbedIQ Agent (Brownfield Sidecar, Mode A) — roadmap
- Log ingestion library + integrity / validation / provenance CLI — roadmap
EmbedIQ Studio — Intelligence Layer
Commercial. Turns open .iqtrace data into visual analysis, AI-assisted diagnosis, and compliance evidence packages. Does not own or restrict the .iqtrace format or data.
- Visual timeline replay and cross-layer correlation
- AI-assisted failure diagnosis and anomaly detection
- Cross-run and cross-subsystem diff analysis
- Code / requirement / test / trace gap analysis
- Compliance evidence package generation (IEC 61508, ISO 26262)
- Team collaboration and domain knowledge packs
- Fleet analytics — .iqtrace stream join across N devices
One binary, two command families
The embediq CLI covers the full developer workflow. "git for behaviour + grep for execution + top for embedded events" — the open-source developer interface to the .iqtrace ecosystem before Studio is needed. Console output throughout, CI-pipeline friendly. Available today: the embediq obs family — decode, stats, filter, export, tail. The remaining commands ship across Phase 2 (project management + brownfield) and Phase 3 (hardware flash/monitor).
Firmware Commands
Trace + Brownfield Commands
Why this exists
Embedded teams already have RTOSes, drivers, libraries, and cloud platforms. What remains underspecified is the application behavior layer: how product logic is composed, how components interact, how state changes, and how runtime behavior becomes auditable evidence.
EmbedIQ fixes that layer by making structure explicit — Function Blocks, typed messages, layer contracts, flat FSMs, and Observatory traces. The result is not only better debugging. It is a foundation for portability, reuse, safety evidence, compliance, and AI-assisted development.
EmbedIQ standardizes application behavior above them — and makes every behavioral decision a traceable, auditable, open record.