Skip to content

Hardware target/board model, supported-hardware updates, and config schema - #470

Open
nicksinas wants to merge 1 commit into
mainfrom
nsinas/hardware-targets-model
Open

Hardware target/board model, supported-hardware updates, and config schema#470
nicksinas wants to merge 1 commit into
mainfrom
nsinas/hardware-targets-model

Conversation

@nicksinas

Copy link
Copy Markdown
Contributor

Split out of #469 so that PR stays changelog-only. This PR is the hardware / target-board model and config-schema work.

Hardware target/board model

  • New Hardware Targets page at /developer-reference/hardware-targets (top of the Development section): target vs board, supported_targets / default_target / default_target_board, resolution precedence, and why avocado-bsp-{{ avocado.target.board }} works the way it does — grounded in the avocado-cli source.
  • ICAM-540 modeled as the jetson-orin-nx target with the icam-540 board (was a standalone target), matching the mic-712-ox pattern.
  • Drop -devkit from Jetson target slugs (jetson-agx-orin, jetson-orin-nano) across hardware data, pages, guides, and the home-page TerminalDemo. generated-targets.json is intentionally not committed (regenerates from the feed at build; the feed drops -devkit shortly).

Supported-hardware updates

  • Jetson AGX Thor → Supported (2026 only) with a hardware page.
  • NXP FRDM i.MX 95 → Supported (2024 + 2026) with a hardware page.
  • NXP list reordered (8MP EVK, FRDM 91, i.MX 93 EVK, FRDM 93, FRDM 95) in the table and side nav; renamed "NXP i.MX 93 FRDM SBC" → "NXP FRDM i.MX 93".
  • Fixed the FRDM i.MX 93 hero (was pointing at the MCX N947 board image).
  • targets.json curated: jetson-orin-nx (tegraflash), imx95-frdm, and SD + eMMC (uuu) provisioning with boot-switch notes across all i.MX targets (Variscite left as-is — it already has specific SW7 steps).

Config schema

  • Replaced the bundled avocado.yaml JSON schema (avocado-config 1.2.0) with the canonical avocado-mcp schema (avocado-yaml 0.2.0) — adds permissions, rootfs, initramfs, kernel, default_runtime, connect — while keeping the git / path extension-source variants.

Testing

scripts/checks.sh passes locally (npm ci, redocly, eslint, prettier --check ., build).

Follow-ups

  • Expand feed population so 2026-only targets (e.g. Thor) appear in the "Any Supported Target" dropdown + package-feed search.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the docs site’s hardware data model (target vs. board), refreshes supported-hardware listings/pages (including new Thor + FRDM i.MX 95 pages), and replaces the bundled avocado.yaml JSON schema with the canonical avocado-yaml schema version.

Changes:

  • Updates hardware target slugs and mappings (notably removing -devkit from Jetson target IDs, and modeling ICAM-540 as a board under jetson-orin-nx).
  • Refreshes supported/under-evaluation hardware data and adds/adjusts hardware docs pages + navigation ordering (NXP reorder, FRDM i.MX 93 hero fix, new Thor/FRDM i.MX 95 pages).
  • Replaces src/schemas/avocado-config.json with the newer canonical schema and adds a new “Hardware Targets” guide page wired into the guides sidebar.

Reviewed changes

Copilot reviewed 26 out of 29 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/src/data/hardware/under-evaluation-nxp.json Removes FRDM i.MX 95 from the “under evaluation” NXP list (now supported).
src/src/data/hardware/under-evaluation-nvidia.json Removes the NVIDIA under-evaluation dataset (Thor is now supported).
src/src/data/hardware/targets.json Renames Jetson target slugs, removes icam-540 as a standalone target, adds jetson-orin-nx + imx95-frdm, and expands i.MX provisioning options (SD + uuu eMMC).
src/src/data/hardware/supported.json Updates supported matrix entries: ICAM-540 target/board model, adds Thor + FRDM i.MX 95, renames/reorders NXP entries, updates Jetson slugs.
src/src/components/UnderEvaluationMatrix/index.js Removes NVIDIA under-evaluation import and related page slug mappings.
src/src/components/TerminalDemo/index.js Updates the homepage TerminalDemo Jetson Orin Nano target slug (-devkit → no suffix).
src/sidebars-guides.js Adds the new hardware-targets guide to the Development section.
src/schemas/avocado-config.json Replaces the old avocado-config schema with the canonical avocado-yaml schema.
src/docs-hardware/under-evaluation/jetson-agx-thor.md Removes the old under-evaluation Thor page.
src/docs-hardware/under-evaluation/frdm-imx-95.md Removes the old under-evaluation FRDM i.MX 95 page.
src/docs-hardware/support-matrix.md Updates “Target vs Board” explanation to link to the new Hardware Targets page.
src/docs-hardware/nxp/imx93-evk/category.json Adjusts NXP sidebar ordering.
src/docs-hardware/nxp/frdm-imx-95/index.mdx Adds the supported hardware page for NXP FRDM i.MX 95.
src/docs-hardware/nxp/frdm-imx-95/category.json Adds the sidebar category for FRDM i.MX 95.
src/docs-hardware/nxp/frdm-imx-93/index.mdx Fixes the FRDM i.MX 93 hero image path.
src/docs-hardware/nxp/frdm-imx-93/category.json Adjusts NXP sidebar ordering / label positioning for FRDM i.MX 93.
src/docs-hardware/nxp/frdm-imx-91/category.json Adjusts NXP sidebar ordering for FRDM i.MX 91.
src/docs-hardware/nvidia/jetson-orin-nano-developer-kit/index.mdx Updates the Jetson Orin Nano target slug (-devkit → no suffix).
src/docs-hardware/nvidia/jetson-agx-thor/index.mdx Adds the supported hardware page for Jetson AGX Thor.
src/docs-hardware/nvidia/jetson-agx-thor/category.json Adds the sidebar category for Jetson AGX Thor.
src/docs-hardware/nvidia/jetson-agx-orin/index.mdx Updates Jetson AGX Orin target slug (-devkit → no suffix) and updates deep links.
src/docs-hardware/advantech/mic-733-ao/index.mdx Updates MIC-733-AO target slug and board-selection guidance to the new model.
src/docs-hardware/advantech/icam-540/index.mdx Updates ICAM-540 to the target/board model and includes example config for both.
src/docs-guides/lockfiles-and-build-stamps.md Updates Jetson Orin Nano target slug in CLI examples.
src/docs-guides/hardware-targets.md Adds the new Hardware Targets conceptual guide (target vs board, precedence, BSP interpolation).
src/docs-guides/getting-started/jetson.md Updates Jetson Orin Nano getting-started commands for the new target slug.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/src/data/hardware/targets.json
@nicksinas
nicksinas force-pushed the nsinas/hardware-targets-model branch from 484e619 to 5d13e81 Compare July 28, 2026 20:19
"hardwareUrl": "/hardware/raspberry-pi/raspberry-pi-zero-2-w"
},
"jetson-orin-nano-devkit": {
"jetson-orin-nano": {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — these slugs aren't in the published feed yet. Checked just now against 2024/edge:

slug repodata
jetson-agx-orin-devkit 200
jetson-agx-orin 404
jetson-orin-nano-devkit 200
jetson-orin-nano 404

avocado init --target jetson-orin-nano succeeds (init doesn't validate against the feed), then avocado install fails on a 404 repo path. MIC-733-AO is collateral — avocado-bsp-mic-733-ao5a1 only exists under jetson-agx-orin-devkit-ext. And support-matrix.md defines Supported as "in the published feed", so those cells assert something currently false.

The change itself is right; it's just ahead of the feed. Suggest gating the merge on the feed publishing the de-suffixed slugs.

Two related notes: generated-targets.json still contains icam-540, jetson-agx-orin-devkit, and jetson-orin-nano-devkit — it wasn't regenerated here. It's also tracked in git, so the PR description's "intentionally not committed" is inaccurate (CI regenerates it via prestart/build.sh, so low practical risk).

"title": "Avocado OS project configuration (avocado.yaml)",
"type": "object",
"additionalProperties": true,
"required": ["distro", "runtimes"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — the "strict superset" framing doesn't hold. Diffed old vs new:

old new
signing_keys array object
root required none ["distro","runtimes"]
runtimes.minProperties none 1
patternProperties 10 0
target enum (21 boards) present removed

Each of the first three rejects a config that previously validated — including the old schema's own documented signing_keys example ([{"my-key":"sha256-…"}]).

Separately this breaks the rendered page: the vendored Deckard renderer walks properties/patternProperties but not object-valued additionalProperties (it has an explicit "complex additionalProperties" unsupported path). Converting every dynamic map to additionalProperties means runtimes.* and extensions.* render as empty nodes, so ~30 documented keys disappear from /developer-reference/avocado-cli/config-schema. extensions.*.scopes and extensions.*.filesystem are gone entirely, and runtimes.*.kernel no longer $refs the kernelConfig def defined in this same file.

Minimum to restore parity: drop the root required and minProperties, let signing_keys accept both shapes, and keep patternProperties for the dynamic maps so they still render.

},
{
"name": "NXP FRDM i.MX 95",
"target": "imx95-frdm",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — imx95-frdm isn't in the 2026 feed: 2026/edge/target/imx95-frdm/repodata/repomd.xml returns 404 (2024 returns 200). The 2026 feed currently only carries jetson-agx-thor, qemuarm64, qemux86-64.

Per the matrix legend ("Supported = in the published feed"), the 2026 cell should be in-progress until it lands. The 2024 cell is correct.

},
{
"name": "NVIDIA Jetson AGX Thor",
"target": "jetson-agx-thor",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — jetson-agx-thor isn't in targets.json (which has only jetson-agx-orin, jetson-orin-nano, jetson-orin-nx), so it can't appear in the Any Supported Target dropdown.

The Supported/2026 status is correct (Thor is in the 2026 feed), but the new hardware page's only CTA points at /getting-started/any-target, where searching for it returns nothing — and unlike the AGX Orin page it can't deep-link an anchor, since none is generated. Needs a targets.json entry; sync-targets.js keeps local slugs even when absent from the 2024 feed.

default_target_board: 'icam-540'
```

The provisioning specifics are below.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two ICAM-540 issues from the remodel (the remodel itself is right — jetson-orin-nx-ext does contain avocado-bsp-icam-540, while icam-540-ext has no BSPs):

  1. The Provision section just below still says avocado provision -r dev + power cycle, but the jetson-orin-nx target this page now sends users to specifies avocado provision -r dev --profile tegraflash with a recovery-mode block (USB-C + Force Recovery, verify via lsusb). Following this page alone, the user never enters recovery mode and provisioning won't find the device.

  2. Dropping the curated icam-540 entry from targets.json regresses the dropdown: icam-540 still returns 200 in the 2024 feed, and sync-targets.js unions feed with local and synthesizes a minimal entry for feed-only slugs. The curated "Advantech ICAM-540" row becomes "Icam 540" with "no guide written yet" and a null hardwareUrl. Worth keeping the curated entry until the feed drops the slug.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 29 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (6)

src/src/data/hardware/targets.json:506

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

src/src/data/hardware/targets.json:549

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

src/src/data/hardware/targets.json:592

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

src/src/data/hardware/targets.json:635

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

src/src/data/hardware/targets.json:933

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

src/src/data/hardware/targets.json:413

  • The top-level provisioning.prerequisites lists option-specific items for both SD and eMMC provisioning, but the UI already renders per-option prerequisites under each tab. As written, the “Prerequisites” section implies you need both an SD card reader and a USB-C cable even if you choose only one provisioning method.

This issue also appears in the following locations of the same file:

  • line 503
  • line 546
  • line 589
  • line 632
  • line 930
      "prerequisites": [
        "microSD card (8GB+) + external SD card reader (for SD provisioning)",
        "USB-C cable (for eMMC provisioning with uuu)"
      ],

…chema

- Add a "Hardware Targets" developer-reference page (target vs board,
  supported_targets/default_target/default_target_board, and the
  avocado-bsp-{{ avocado.target.board }} pattern).
- Model Advantech ICAM-540 as the jetson-orin-nx target with the icam-540 board.
- Drop the -devkit suffix from Jetson target slugs across hardware data, pages,
  and guides.
- Add NVIDIA Jetson AGX Thor as supported (2026 only) with a hardware page.
- Add NXP FRDM i.MX 95 as supported (2024 + 2026); reorder/rename the NXP list;
  fix the FRDM i.MX 93 hero image (was the MCX N947 board).
- Curate targets.json: jetson-orin-nx (tegraflash), imx95-frdm, and SD + eMMC
  (uuu) provisioning with boot-switch notes across i.MX targets.
- Replace the bundled avocado.yaml schema with the canonical avocado-mcp schema
  (adds permissions/rootfs/initramfs/kernel/default_runtime/connect), keeping
  git/path extension sources.
- Rename jetson-orin-nano-devkit -> jetson-orin-nano in TerminalDemo.
Copilot AI review requested due to automatic review settings July 29, 2026 01:44
@nicksinas
nicksinas force-pushed the nsinas/hardware-targets-model branch from 5d13e81 to 5c8d035 Compare July 29, 2026 01:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 29 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (3)

src/docs-hardware/nxp/frdm-imx-95/index.mdx:37

  • In the Overview text the board name is written as "FRDM-i.MX 95"; elsewhere on this page it’s "FRDM i.MX 95". Consider using a single spelling for consistency.
The FRDM-i.MX 95 is NXP's Freedom development board for the i.MX 95 applications
processor family, integrating six Cortex-A55 cores, Cortex-M7 and M33

src/src/data/hardware/targets.json:213

  • Renaming the Jetson slugs here (e.g. jetson-orin-nano-devkitjetson-orin-nano) can break /developer-reference/getting-started/any-target#... deep links and the TargetSelector dropdown unless src/src/data/hardware/generated-targets.json is regenerated/updated too (TargetSelector collects allowed anchors from that file at src/src/components/TargetSelector/index.js:11,25). The currently committed snapshot still contains jetson-orin-nano-devkit (generated-targets.json:501) and does not contain jetson-orin-nano, so links updated in this PR will be invalid in local/offline builds until the snapshot is refreshed.
  "jetson-orin-nano": {
    "name": "NVIDIA Jetson Orin Nano",
    "target": "jetson-orin-nano",

src/docs-hardware/nxp/frdm-imx-95/index.mdx:6

  • Frontmatter description uses the older hyphenated name "FRDM-i.MX 95" while the page title/model uses "FRDM i.MX 95". Aligning the naming avoids inconsistent search results and sidebar/tooling labels.

This issue also appears on line 36 of the same file.

title: 'Production-Ready NXP FRDM i.MX 95 Deployment'
sidebar_position: 0
description: 'Deploy NXP FRDM-i.MX 95 devices in production with Avocado OS. Six Cortex-A55 cores, safety-domain M7/M33, a 2.0 TOPS eIQ Neutron NPU, and M.2 Ara expansion for safety-critical AI and industrial edge.'
hide_title: true

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.

3 participants