>- Per-controller PCIe enable / disable / lanes / link-speed for a Jetson Thor or Orin custom carrier via ODMDATA + kernel-DT overlay. Do NOT use for UPHY lane allocation or endpoint-mode bring-up.
npx skills add https://github.com/NVIDIA/skills --skill jetson-customize-pcie
PCIe on Tegra264 (Thor, [email protected]) and Tegra234 (Orin,
[email protected]) is split across multiple controllers that share the
UPHY lane pool with USB3 / MGBE / UFS. Each controller's runtime
behavior is determined by two surfaces, both required:
| Surface | Target | Authoritative for |
|---|---|---|
| ODMDATA pcie@N_status=… (+ pcie@N_max-link-speed, pcie@N_pcie-mode, pcie@N_clk-scheme, pcie-cN-endpoint-enable) | /pcie/pcie@N in BPMP DTB | UPHY lane power, refclk gating, controller-side power rails |
| Kernel-DT overlay on &pcieN | /bus@0/pcie@<addr> in kernel DTB | Kernel probe, lane width, link speed, RC/EP mode |
Skipping the kernel overlay on a disable lets the kernel probe a
powered-down PHY (link timeouts in dmesg). Skipping the ODMDATA token
on a disable leaves BPMP holding the PHY hot.
Agentic, not table-driven — no controller table, no
questions.json. Every controller, lane width, schematic-routed
receptacle, and authoritative DT node address is discovered at runtime
from the docs + DTB + carrier pinmap.
The output is a kernel-DT overlay commit only. Per-controller
fragment@N blocks are appended to the composite custom overlay
.dts per
../../references/bsp-customization-kernel-dtb.md
and committed to the bsp_sources/ hardware repo.
/jetson-build-source compiles the composite to .dtbo and owns its
Makefile + flash-conf registration.
This skill MUST NOT edit ODMDATA="...". All ODMDATA tokens
(pcie@N_status=…, pcie@N_max-link-speed, pcie@N_pcie-mode,
pcie@N_clk-scheme, pcie-cN-endpoint-enable, plus the
uphyX-config-N surface tokens and UPHY_CONFIG="" clear) are
emitted by /jetson-customize-uphy in a single atomic commit on the
carrier flash-conf fork. The allocation table this skill consumes
from the UPHY sidecar already tells the operator which controllers
are okay / disabled / per-lane sized; this skill only translates
that table into kernel-DT overlay fragments and verifies that the
overlay agrees with the ODMDATA already committed by customize-uphy
(consistency check in Step 8 — disagreement is reported, not silently
fixed).
num-lanes", "change PCIe link speed", or asks to flip a
pcie@N_status token.
flash, OR the link trains at the wrong width / speed.
jetson-customize-uphy ran and re-allocated lanes across PCIe controllers(e.g. switched from uphy0-config-7 to uphy0-config-6 enabling
PCIe C3); the per-controller side now needs to be brought up.
jetson-customize-mgbe reports the QSFP path is wired but the kerneldoesn't probe its PCIe-side companion (rare; XFI configurations).
Prerequisites:
reference_devkit: + custom_carrier: blocks.<source.root_path>/Linux_for_Tegra/.git exists(/jetson-init-source).
/jetson-derive-carrier has run — carrier flash-conf fork is inthe overlay tracker.
/jetson-customize-uphy has run — its JSON sidecar at<workspace>/target-platform/<profile-stem>.jetson-customize-uphy.json
drives the per-controller enable decision.
Guide, Module Design Guide, SoC TRM.
custom_carrier: is present, bothdocuments.custom_carrier_schematic AND
documents.custom_carrier_pinmux_xls are REQUIRED.** Refuse the run
if either is missing — routing on a custom carrier cannot be guessed.
Reference-devkit-only profiles skip this check.
dtc on PATH.Full step-by-step walkthrough lives in
references/procedure.md. High-level flow:
<carrier-pinmap>, <ref-dtb>, <uphy-state>). Refuse if
<uphy-state> is missing.
<ref-dtb> and grepping the schematic for PEX<N>_* net labels.
AskUserQuestion (multiSelect) — which controllers to customize.pin_verifier.pyfor PE<N>_CLKREQ_L, PE<N>_RST_L, optional PE<N>_WAKE_L.
enable from <uphy-state>,lanes / speed from Adaptation Guide, mode hard-pinned to
"rc") → mandatory confirm-or-customize gate.
fragment@N blocks (marker/* custom-bsp: pcie:pcie@<addr> */) to the composite custom
overlay .dts in bsp_sources/. Pre-flight dtc + fdtoverlay.
Commit via the workflow's preview gate.
Do not edit ODMDATA — /jetson-customize-uphy already emitted
pcie@N_status=…, pcie@N_max-link-speed, pcie@N_pcie-mode,
pcie@N_clk-scheme, and pcie-cN-endpoint-enable in its single
atomic ODMDATA commit. This skill only translates the per-controller
plan into kernel-DT overlay fragments.
row, **stop and ask the user how to recover the two commits.
Never run git reset --hard autonomously.**
<workspace>/target-platform/<profile-stem>.jetson-customize-pcie.json
+ summary, then drive the downstream next-step chain via sequential
AskUserQuestion prompts per references/procedure.md Step 9.
Never substitute a printed "Next step: …" line for the prompts.
operator passes mode_override="ep" in Step 5c.
enable is derived, not asked. UPHY-allocated controllers aremandatorily okay; non-allocated are mandatorily disabled.
Linux_for_Tegra/ +bsp_sources/ only.
build. /jetson-build-source is authoritative.
/jetson-build-source Step 5.0a.
<uphy-state> missing → run /jetson-customize-uphy first.dmesg | grep pcie;re-verify ODMDATA pcie@<N>_status=okay and the overlay fragment
agree (Step 8 table in
references/procedure.md).
<uphy-state> allocates the expected lane count; the kernel
fragment's num-lanes must match.
compatible mismatch → fix the composite root, not thefragment. UEFI plugin-manager silently skips on mismatch.
auto-git reset --hard. See gotchas.
references/gotchas.md (RC pinning, node-
address sourcing, stock-disabled controllers, intra-file handoff
with jetson-customize-uphy).
references/procedure.md — full nine-step procedure (topology diff, plan derivation, overlay append,
ODMDATA cross-check, sidecar).
references/gotchas.md — failure modes+ invariants (RC pinning, address sourcing, BPMP handoff).
../../scripts/pin_verifier.py— shared HSIO pin verifier (Step 4).
../../references/platform_template.yaml— documents: block consumed by Step 1.
../../context/bsp-customization-workflow.md— overlay edit protocol + commit message preview gate.
../../references/bsp-customization-kernel-dtb.md— composite overlay filename / skeleton / append protocol.
../jetson-customize-uphy/SKILL.md— sibling skill that owns UPHY lane allocation; its sidecar drives
the per-controller enable decision.
../jetson-customize-pinmux/SKILL.md— sibling skill invoked by Step 4 (with operator confirmation) to
fix HSIO pin SFIO mismatches.
../jetson-customize-mgbe/SKILL.md— sibling for MGBE controllers; shares the two-surface (ODMDATA
+ overlay) pattern.
../jetson-derive-carrier/SKILL.md— must run first; produces the carrier flash-conf fork edited in
Step 6.
../jetson-init-source/SKILL.md— produces the overlay tracker + bsp_sources repo this skill
commits into.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take nvidia/jetson-customize-pcie from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.