All skills
nvidia avatar

/jetson-customize-camera

@87053a0
by NVIDIA Corporationnvidia/skills3.5k stars
427

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.

Use this Skill: https://skilld.dev/gh/nvidia/skills/jetson-customize-camera

This session only. Nothing lands on disk.

referencescsi-dt-bindings.md

≈922 tokens on demand. Your agent reads this file only when SKILL.md points to it.

NVIDIA tegra-capture-vi / tegra-camera-platform binding cheat-sheet

Reference: <L4T_DIR>/kernel/dtb/tegra264-overlay-cus_carr_k-camera.dts (shipped) and <L4T_DIR>/kernel/dtb/tegra264-p3971-camera-e3333-overlay.dtbo.

Overlay header

/dts-v1/;
/plugin/;

/ {
    overlay-name = "Carrier <name> CSI base";
    fragment@0 {
        target-path = "/";
        board_config { ids = "<carrier-id>"; sw-modules = "kernel"; };
        __overlay__ { … };
    };
};

board_config.ids is matched against the platform's board-id at boot — this is what the L4T loader uses to decide whether to apply the overlay. Use the same short carrier name /jetson-custom-bsp chose.

tegra-capture-vi

tegra-capture-vi {
    status = "okay";
    num-channels = <N>;       /* total ports below */
    ports {
        status = "okay";
        #address-cells = <1>;
        #size-cells = <0>;
        port@<idx> {
            reg = <idx>;
            status = "okay";
            <label>: endpoint {
                port-index = <idx>;       /* MIPI brick index 0..7 = A..H */
                bus-width  = <2 | 4>;     /* 2 = independent brick, 4 = paired (A+B / C+D / E+F / G+H) */
                vc-id = <0>;              /* virtual-channel id; usually 0 */
                remote-endpoint = <&<sensor-side label>>;
            };
        };
    };
};

For paired 4-lane ports the port@<idx> uses the primary brick's index (the one that owns the clock) — eg the A+B paired port is port@0 with bus-width=4, and there is no port@1.

tegra-camera-platform

tegra-camera-platform {
    status = "okay";
    compatible = "nvidia, tegra-camera-platform";
    num_csi_lanes = <N>;          /* sum of bus-widths */
    max_lane_speed = <1500000>;
    min_bits_per_pixel = <10>;
    vi_peak_byte_per_pixel = <2>;
    vi_bw_margin_pct = <25>;
    isp_peak_byte_per_pixel = <5>;
    isp_bw_margin_pct = <25>;
    modules {
        status = "okay";
        module<i> {
            status = "okay";
            badge = "<carrier>_port_<idx>_<sensor>";
            position = "front" | "rear" | "topleft" | …;
            orientation = "0".."3";
            drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                /* sysfs-device-tree filled in by sensor overlay */
            };
        };
    };
};

modules/module<i> is one entry per logical port (not per lane). The sensor-specific overlay extends each module<i> with the actual drivernode0.devname, sensor mode tables, and the i2c@…/sensor@… binding.

Reference label convention

The skill emits these labels on the VI side:

carrier_vi_in_a: endpoint { port-index = <0>; bus-width = <2>; … };
carrier_vi_in_b: endpoint { port-index = <1>; bus-width = <2>; … };
…

The companion sensor overlay must define matching outbound endpoints:

carrier_csi_out_a: endpoint { remote-endpoint = <&carrier_vi_in_a>; };

If you change the prefix (carrier_), change it on both sides.

Common pitfalls

  • num-channels must equal the count of port@N entries under ports, not the lane count. 4 paired-mode 4-lane ports = 4 channels.
  • port-index must equal the brick number (A=0…H=7). Mismatch = MIPI cal works for the wrong PHY and the port comes up dark.
  • bus-width must be 2 or 4, not 1 or 8. Tegra MIPI is 2-lane minimum, 4-lane maximum per port.
  • The base CSI overlay must come before the sensor overlay in OVERLAY_DTB_FILE so VI ports come up first; otherwise the sensor overlay's remote-endpoint references resolve to phandle 0xFFFFFFFF and the binding fails silently at probe time.

Source: SKILL.md on GitHub

1 warning3mo3 checks · Risk SAFE
  • Gen Agent Trust Hub3mo

    The jetson-customize-camera skill is a specialized engineering utility from NVIDIA for configuring MIPI/GMSL camera sensors on Jetson platforms. It automates the generation of Device Tree Overlays by using standard Linux development tools like the Device Tree Compiler (dtc), C Preprocessor (cpp), and Git. The analysis confirms that the skill performs legitimate technical tasks within a local development environment and shows no evidence of malicious patterns, data exfiltration, or unauthorized privilege escalation.

  • Socket3mo

    No alerts

  • Snyk3mo

    Risk: MEDIUM · 1 issue

Signed by skilld at 87053a0. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 1 hour ago.

Activeupdated 3 months ago
version
0.0.1
Other metadata
metadata
{
  "data-classification": "public",
  "author": "Jetson Team",
  "tags": [
    "bsp",
    "phase-2",
    "io",
    "camera",
    "csi"
  ],
  "domain": "meta"
}

README badge

README badge for nvidia/skills/jetson-customize-camera