jetson-customize-mgbe
Enable Jetson Thor 25G/10G/1G MGBE QSFP via kernel-DT overlay. Do NOT use for UPHY lane allocation or ODMDATA edits.
- License 许可
- Apache-2.0
- 最近更新
- 2026-07-17
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- jetson-customize-mgbe
- license
- Apache-2.0
- version
- 0.0.1
- metadata
- { "tags": [ "bsp", "phase-2", "io", "mgbe", "ethernet" ], "author": "Jetson Team", "domain": "meta", "permissions": { "shell": [ "dtc", "fdtoverlay", "cpp", "git" ], "file_read": [ "{workspace}/target-platform/", "{source.root_path}/", "{bsp_image.root_path}/Linux_for_Tegra/", "{documents.root_path}/" ], "file_write": [ "{workspace}/target-platform/", "{source.root_path}/bsp_sources/hardware/nvidia/" ] }, "data-classification": "public" }
- description
- Enable Jetson Thor 25G/10G/1G MGBE QSFP via kernel-DT overlay. Do NOT use for UPHY lane allocation or ODMDATA edits.
02 资源文件 7
- 资产文件assets/questions.json5.7 KB
- 参考文档BENCHMARK.md3.7 KB
- 参考文档evals/evals.json6.2 KB
- 参考文档references/procedure.md13.6 KB
- 参考文档references/questions.json5.7 KB
- 参考文档skill-card.md3.6 KB
- 其他skill.oms.sig5.2 KB
03 SKILL.md 正文
Customize MGBE / 25G QSFP
Overview
Thor T264 exposes mgbe0..mgbe3. On a custom carrier, the 25G QSFP cage
(or 10G / 1G fiber path) is wired to one of them through SerDes — with
or without an external MDIO PHY in front of the cage. This skill
renders the kernel-DT overlay that pairs the BPMP allocation with
kernel-side status="okay" + PHY plumbing on &mgbeN.
Out of scope:
- UPHY lane allocation — owned by
/jetson-customize-uphy. Refuse if the chosenuphy1-config-Ndoesn't allocate the target MGBE. - All ODMDATA tokens (
mgbeN-speed-*, sub-nodemgbeN_status=*) — owned by/jetson-customize-uphyin its single atomic ODMDATA commit. This skill MUST NOT touchODMDATA=.
Output is one commit to the composite custom overlay .dts in 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 25G", "configure QSFP", "set MGBE PHY mode", "wire MGBE to QSFP", or asks to bring up a 10G / 1G fiber path.
- Cold boot succeeds but
ip link show mgbe<N>reportsstate DOWNorNO-CARRIERon the configured controller, OR the controller never appears at all. jetson-customize-uphyran withuphy1-config-8(or another config allocating MGBE) and you now need to bring up the per-controller side.
Prerequisites:
- Active profile selected with
reference_devkit:(Thor) +custom_carrier:blocks. <source.root_path>/Linux_for_Tegra/.gitexists (/jetson-init-source)./jetson-derive-carrierhas run — carrier flash-conf fork is in the overlay tracker./jetson-customize-uphychose a UPHY config that allocates the target MGBE controller's lanes (uphy1-config-8on Thor for MGBE0..3 25G).- Source-of-truth docs registered or supplied at prompt: Adaptation Guide, Module Design Guide, SoC TRM.
- When
custom_carrier:is present, bothdocuments.custom_carrier_schematicANDdocuments.custom_carrier_pinmux_xlsare REQUIRED. Refuse the run if either is missing — MGBE routing on a custom carrier cannot be guessed. Reference-devkit-only profiles skip this check. dtcon PATH.
Procedure
See references/procedure.md for the full step-by-step procedure (Steps 1–8). Summary:
- Resolve active target + documents. Validate active profile, custom_carrier, overlay tracker; locate the relevant Adaptation Guide chapter and pinmap.
- Per-controller question loop. AskUserQuestion driven by
questions.json(controller, phy_mode, attach kind, I²C bus/addr, reset GPIO, compatible_list). - Derive max-speed from phy_mode. Decompile the BPMP DTB to pick sub-node vs top-level token grammar; cite the inspection in notes.
- Verify HSIO pins + auto-fix. Run
pin_verifier.pyfor MDC/MDIO/RESET/INT; surface mismatches and route to/jetson-customize-pinmux. - (no ODMDATA edits.) MGBE ODMDATA tokens are emitted by
/jetson-customize-uphy. Step 5 only records the BPMP DTB token-form inspection (sub-node vs top-level) innotes[]for audit. - Append composite-overlay fragments. Write one fragment per controller into the composite custom overlay
.dts; obey the/* custom-bsp: mgbe:mgbe... */marker contract; run the cpp/dtc/fdtoverlay pre-flight. - (Reserved.) Sibling-skill ordering / cross-cutting validation.
- Run-state sidecar + summary + next-step chain. Write
<profile-stem>.jetson-customize-mgbe.jsonand emit the one-line + table summary, then drive the downstream chain via sequentialAskUserQuestionprompts perreferences/procedure.mdStep 8. Never substitute a printed "Next step: …" line for the prompts.
Gotchas
- Stock Thor BPMP DTB has no
/mgbe/mgbe@Nsubtree — onlymgbe<N>-speedunder/uphy. Themgbe<N>_status=disabledsub-node token is silently rejected on these releases; the whole ODMDATA line is then dropped at flash time. Always decompile BPMP DTB (Step 3) before emitting; use the top-level dashed form (mgbe<N>-speed-delto remove,mgbe<N>-speed-25Gto set) when the sub-node isn't there. Same wrong-form failure surface asjetson-customize-uphy. mdiochild needs both#address-cells = <1>AND#size-cells = <0>whenphy_attach_kind=="phy". Missing either → kernel rejectsphy@<addr>reg property at probe; MGBE never comes up.- Overlay root
compatiblemust intersect live DT compatible. UEFI plugin-manager filters by compatible match. A mismatched overlay is silently skipped — flash succeeds, MGBE stays disabled, no error in dmesg. Always sanity-check against/proc/device-tree/compatibleon a booted reference DUT. OVERLAY_DTB_FILEordering isjetson-build-source's problem, not this skill's. This skill never touches the carrier flash conf. The composite custom overlay is registered (by/jetson-build-sourceStep 5.0a) AFTER the platform*-dynamic.dtbo, which is the correct ordering. If you find yourself appendingOVERLAY_DTB_FILE+=in this skill, you're duplicating ownership — stop, and let the build skill do it.- UPHY lane allocation is
jetson-customize-uphy's job. If the chosenuphy1-config-Ndoesn't allocate lanes for the target MGBE controller, BL31 SError (fmon_update_config: detected fault 0x80) on cold boot. Always run/jetson-customize-uphyfirst; cite the chosenuphy1-config-Nin this skill's run-summarynotes[]. - Don't disable a stock-okay controller via ODMDATA alone. Same
rule as
jetson-customize-uphy:mgbe<N>_status=disabledfor a controller that's already disabled in BPMP DTB is a no-op the parser may treat as ambiguous → drops the rest of the ODMDATA line. Disable via the kernel-DT overlay (status="disabled") only. - Don't touch the upstream BSP at
<bsp_image.root_path>. All edits land in the overlay tracker /bsp_sourcesmono-repo under the pristine + customization commit pattern. - JSON sidecar is structured state, not authoritative. Same
caveat as
jetson-customize-uphy: ODMDATA + overlay.dts+ two git commits are the device-facing outputs; the sidecar is for tooling and idempotency only.
References
questions.json— Q-1..Q-8 prompt schema consumed by Step 2.../../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 (batched pristine + customization commit).../jetson-customize-uphy/SKILL.md— sibling skill that owns UPHY lane allocation. Must run before this skill to setuphy1-config-Nfor MGBE-allocated configurations.../jetson-customize-pinmux/SKILL.md— sibling skill invoked by Step 4 (with operator confirmation) to fix pin SFIO mismatches.../jetson-derive-carrier/SKILL.md— must run first; produces the carrier flash-conf fork edited in Step 5 and the carrier base overlay this skill orders after.../jetson-init-source/SKILL.md— produces the overlay tracker + bsp_sources repo this skill commits into.
04 同仓库更多 Skills
webapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
web-artifacts-builder
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
vueuse-functions
Apply VueUse composables where appropriate to build concise, maintainable Vue.js / Nuxt features.
vue-testing-best-practices
Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.
vue-router-best-practices
Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.
vue-best-practices
MUST be used for Vue.js tasks. Strongly recommends Composition API with `<script setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.