/jetson-customize-camera
Enable MIPI/GMSL camera sensors on a Jetson Thor or Orin custom carrier by rendering a kernel-DT overlay from the in-tree sensor DTSI. Do NOT use for UPHY lane allocation or ODMDATA edits.
$ npx -y skills add NVIDIA/skills --skill jetson-customize-camera --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/jetson-customize-camera
Context preview
The summary Claude sees to decide when to auto-load this skill.
Enable MIPI/GMSL camera sensors on a Jetson Thor or Orin custom carrier by rendering a kernel-DT overlay from the in-tree sensor DTSI. Do NOT use for UPHY lane allocation or ODMDATA edits.
SKILL.md
jetson-customize-camera.SKILL.mdname: jetson-customize-camera
description: >-
Enable MIPI/GMSL camera sensors on a Jetson Thor or Orin custom
carrier by rendering a kernel-DT overlay from the in-tree sensor
DTSI. Do NOT use for UPHY lane allocation or ODMDATA edits.
version: 0.0.1
license: "Apache-2.0"
metadata:
data-classification: public
author: "Jetson Team"
tags:
- bsp
- phase-2
- io
- camera
- csi
domain: metaCustomize camera (CSI / MIPI / GMSL sensor bring-up)
Overview
Tegra264 (Thor) and Tegra234 (Orin) expose a single `tegra-capture-vi` controller fronted by NVCSI and a fixed set of CSI ports. Camera bring-up is:
1. **Sensor selection** — picked from the set NVIDIA ships in-tree `.dtsi` references for on the active platform. 2. **Carrier + module support check** — verified against the Camera Development Guide, Adaptation Guide §Camera, carrier schematic, Module TRM, and carrier pinmap. 3. **Wiring** — derived from the in-tree `tegra<soc>-camera-<sensor>*.dtsi` when one exists (**the DTSI IS the wiring source of truth**); captured per-sensor from the user when the sensor is custom. 4. **Kernel-DT overlay** — cpp-expand the in-tree DTSI, extract its `fragment@N` body, append into the composite custom overlay `.dts` for the active target (per [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md)), verify the composite with `fdtoverlay`. `/jetson-build-source` compiles the composite and owns the carrier conf's `OVERLAY_DTB_FILE+=` registration.
**Agentic, not table-driven** — sensor list is built at runtime by globbing in-tree per-sensor dtbos. No `_THOR_CAMERAS` dict, no `questions.json`, no Python renderer in the question path.
**No ODMDATA edit** — cameras don't consume UPHY lanes (CSI is a separate PHY pool). The skill emits only a kernel-DT overlay; the ODMDATA line in the carrier conf is untouched by this skill.
The output is **one commit**:
- Camera `fragment@N` block (plus `jetson-header-name` on the
composite root if not already present) appended to the composite custom overlay `.dts` per [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md) → committed to the `bsp_sources/` hardware repo. `/jetson-build-source` compiles the composite to `.dtbo` and owns its Makefile + flash-conf registration.
When to invoke
- The user says "enable camera", "configure CSI", "wire a Hawk /
Owl / IMX sensor", "MIPI camera", "GMSL camera", or asks to bring up `tegra-capture-vi` / NVCSI on a custom carrier.
- Flash boots but `v4l2-ctl --list-devices` shows no
`tegra-capture-vi` channels, OR sensor enumeration on a fresh daughter-card needs to be confirmed.
- A sensor was previously enabled and the user wants to add another
(multi-sensor bring-up).
**Prerequisites:**
- Active profile with `reference_devkit:` + `custom_carrier:` blocks.
- `<source.root_path>/Linux_for_Tegra/.git` exists
(`/jetson-init-source`).
- `/jetson-derive-carrier` has run — the carrier flash-conf fork is
in the overlay tracker.
- `<source.root_path>/bsp_sources/hardware/nvidia/<chip-dir>/nv-public/overlay/`
exists and contains the in-tree per-sensor `.dtsi` files (sourced by `/jetson-init-source`'s Branch A archive extract).
- `<source.root_path>/bsp_sources/kernel/kernel-noble/include/dt-bindings/`
contains the macro headers cpp needs (`source_sync.sh` may need to run if Branch B was used — see Step 5a.i below).
- Source-of-truth docs registered or supplied at prompt:
Camera Development Guide (in `bsp_developer_guide` mirror or separate path), Adaptation Guide §Camera, carrier schematic, SoC TRM, Module Design Guide.
- `dtc`, `cpp`, `fdtoverlay` on PATH.
Procedure
Detailed step-by-step procedure (Steps 1–7, with all tables, code blocks, and gates) lives in [`references/procedure.md`](references/procedure.md). Summary:
1. **Step 1** — Resolve active target + open source-of-truth docs. 2. **Step 2** — Enumerate supported sensors by globbing in-tree per-platform camera dtbos; classify as DPHY-direct / GMSL / custom. Never invent sensors. 3. **Step 3 / 3a** — Cross-check carrier + module support against DTSI, Camera Development Guide, Adaptation Guide §Camera, SoC TRM, Module Design Guide, schematic, and carrier pinmap. Render the wiring table FIRST, then issue the confirm-or-customize gate. 4. **Step 4** (custom path only) — Batched per-sensor wiring questions auto-filled from the carrier pinmap. 5. **Step 5** — Append exactly ONE `/* custom-bsp: camera:<sensor> */` fragment to the composite custom overlay `.dts` (see [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md)). Clone path cpp-expands the in-tree DTSI; custom path splices Step-4 answers + mode tables in-place. Idempotently set `jetson-header-name` on the composite root. Verify with `dtc` + `fdtoverlay` (pre-compile single-fragment gate; post-compile deep-tree uniqueness gate). Commit via the workflow's commit-message preview gate. 6. **Step 6** — Verify ancillary CAM pin SFIOs (`cam_i2c_*`, `extperiph<m>_clk`, reset/PWDN/PWR_EN GPIOs) via `pin_verifier.py`; route mismatches to `/jetson-customize-pinmux`. 7. **Step 7** — Atomic-write run-state JSON sidecar at `<workspace>/target-platform/<profile-stem>.jetson-customize-camera.json` and emit the headline, then drive the downstream next-step chain via sequential `AskUserQuestion` prompts per `references/procedure.md` Step 7. **The chain is a documented workflow gate, not a clarifying question — auto-mode does NOT exempt it.** Never substitute a printed "Next step: …" line for the prompts.
Gotchas
- **Dual-fragment trap.** Contribute exactly ONE camera-tagged
`fragment@N` to the composite. A second one carrying status overrides triggers dtc deep-merge → duplicate sibling subtrees (e.g. two
Read more
name: jetson-customize-camera
description: >-
Enable MIPI/GMSL camera sensors on a Jetson Thor or Orin custom
carrier by rendering a kernel-DT overlay from the in-tree sensor
DTSI. Do NOT use for UPHY lane allocation or ODMDATA edits.
version: 0.0.1
license: "Apache-2.0"
metadata:
data-classification: public
author: "Jetson Team"
tags:
- bsp
- phase-2
- io
- camera
- csi
domain: metaCustomize camera (CSI / MIPI / GMSL sensor bring-up)
Overview
Tegra264 (Thor) and Tegra234 (Orin) expose a single `tegra-capture-vi` controller fronted by NVCSI and a fixed set of CSI ports. Camera bring-up is:
1. **Sensor selection** — picked from the set NVIDIA ships in-tree `.dtsi` references for on the active platform. 2. **Carrier + module support check** — verified against the Camera Development Guide, Adaptation Guide §Camera, carrier schematic, Module TRM, and carrier pinmap. 3. **Wiring** — derived from the in-tree `tegra<soc>-camera-<sensor>*.dtsi` when one exists (**the DTSI IS the wiring source of truth**); captured per-sensor from the user when the sensor is custom. 4. **Kernel-DT overlay** — cpp-expand the in-tree DTSI, extract its `fragment@N` body, append into the composite custom overlay `.dts` for the active target (per [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md)), verify the composite with `fdtoverlay`. `/jetson-build-source` compiles the composite and owns the carrier conf's `OVERLAY_DTB_FILE+=` registration.
**Agentic, not table-driven** — sensor list is built at runtime by globbing in-tree per-sensor dtbos. No `_THOR_CAMERAS` dict, no `questions.json`, no Python renderer in the question path.
**No ODMDATA edit** — cameras don't consume UPHY lanes (CSI is a separate PHY pool). The skill emits only a kernel-DT overlay; the ODMDATA line in the carrier conf is untouched by this skill.
The output is **one commit**:
- Camera `fragment@N` block (plus `jetson-header-name` on the
composite root if not already present) appended to the composite custom overlay `.dts` per [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md) → committed to the `bsp_sources/` hardware repo. `/jetson-build-source` compiles the composite to `.dtbo` and owns its Makefile + flash-conf registration.
When to invoke
- The user says "enable camera", "configure CSI", "wire a Hawk /
Owl / IMX sensor", "MIPI camera", "GMSL camera", or asks to bring up `tegra-capture-vi` / NVCSI on a custom carrier.
- Flash boots but `v4l2-ctl --list-devices` shows no
`tegra-capture-vi` channels, OR sensor enumeration on a fresh daughter-card needs to be confirmed.
- A sensor was previously enabled and the user wants to add another
(multi-sensor bring-up).
**Prerequisites:**
- Active profile with `reference_devkit:` + `custom_carrier:` blocks.
- `<source.root_path>/Linux_for_Tegra/.git` exists
(`/jetson-init-source`).
- `/jetson-derive-carrier` has run — the carrier flash-conf fork is
in the overlay tracker.
- `<source.root_path>/bsp_sources/hardware/nvidia/<chip-dir>/nv-public/overlay/`
exists and contains the in-tree per-sensor `.dtsi` files (sourced by `/jetson-init-source`'s Branch A archive extract).
- `<source.root_path>/bsp_sources/kernel/kernel-noble/include/dt-bindings/`
contains the macro headers cpp needs (`source_sync.sh` may need to run if Branch B was used — see Step 5a.i below).
- Source-of-truth docs registered or supplied at prompt:
Camera Development Guide (in `bsp_developer_guide` mirror or separate path), Adaptation Guide §Camera, carrier schematic, SoC TRM, Module Design Guide.
- `dtc`, `cpp`, `fdtoverlay` on PATH.
Procedure
Detailed step-by-step procedure (Steps 1–7, with all tables, code blocks, and gates) lives in [`references/procedure.md`](references/procedure.md). Summary:
1. **Step 1** — Resolve active target + open source-of-truth docs. 2. **Step 2** — Enumerate supported sensors by globbing in-tree per-platform camera dtbos; classify as DPHY-direct / GMSL / custom. Never invent sensors. 3. **Step 3 / 3a** — Cross-check carrier + module support against DTSI, Camera Development Guide, Adaptation Guide §Camera, SoC TRM, Module Design Guide, schematic, and carrier pinmap. Render the wiring table FIRST, then issue the confirm-or-customize gate. 4. **Step 4** (custom path only) — Batched per-sensor wiring questions auto-filled from the carrier pinmap. 5. **Step 5** — Append exactly ONE `/* custom-bsp: camera:<sensor> */` fragment to the composite custom overlay `.dts` (see [`../../references/bsp-customization-kernel-dtb.md`](../../references/bsp-customization-kernel-dtb.md)). Clone path cpp-expands the in-tree DTSI; custom path splices Step-4 answers + mode tables in-place. Idempotently set `jetson-header-name` on the composite root. Verify with `dtc` + `fdtoverlay` (pre-compile single-fragment gate; post-compile deep-tree uniqueness gate). Commit via the workflow's commit-message preview gate. 6. **Step 6** — Verify ancillary CAM pin SFIOs (`cam_i2c_*`, `extperiph<m>_clk`, reset/PWDN/PWR_EN GPIOs) via `pin_verifier.py`; route mismatches to `/jetson-customize-pinmux`. 7. **Step 7** — Atomic-write run-state JSON sidecar at `<workspace>/target-platform/<profile-stem>.jetson-customize-camera.json` and emit the headline, then drive the downstream next-step chain via sequential `AskUserQuestion` prompts per `references/procedure.md` Step 7. **The chain is a documented workflow gate, not a clarifying question — auto-mode does NOT exempt it.** Never substitute a printed "Next step: …" line for the prompts.
Gotchas
- **Dual-fragment trap.** Contribute exactly ONE camera-tagged
`fragment@N` to the composite. A second one carrying status overrides triggers dtc deep-merge → duplicate sibling subtrees (e.g. two
Official, NVIDIA-verified Agent Skills for Claude Code, Codex, and other coding agents.
Other skills on nvidia-skills.
- /nvidia-skill-finder
Use for NVIDIA-related requests where an NVIDIA skill might help, even if the user did not ask for a skill. Trigger on NVIDIA products, hardware, software, SDKs, GPUs, Jetson/JetPack/L4T/BSP/SDK Manager/driver/flashing/setup, CUDA, NIM, NeMo, Omniverse/OpenUSD/SimReady,
Open skill - /accelerated-computing-cudf
Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV/Parquet I/O, nullable semantics, and multi-GPU DataFrame workloads.
Open skill - /aiq-deploy
Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.
Open skill - /aiq-research
Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.
Open skill - /amc-run-sample-calibration
Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.
Open skill - /amc-run-video-calibration
Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP/live streams, use amc-run-rtsp-calibration instead.
Open skill

