Skip to content

Quick Start: Jetson Orin Nano and Orin NX Cameras

Follow this guide to connect an Arducam camera, configure its driver, and verify image capture.

These instructions apply to Jetson Orin Nano and Orin NX modules on the NVIDIA Jetson Orin Nano Developer Kit carrier board. Other carrier boards require their own connector pinout and board-specific configuration.

Check compatibility · Connect the camera · Install the driver · Verify capture · Troubleshooting

1. Check Compatibility

Before installing a driver, identify your camera SKU, connection type, carrier board, and system version. Run these commands on the Jetson:

head -n 1 /etc/nv_tegra_release
uname -r
dpkg-query -W -f='${Package}: ${Version}\n' nvidia-l4t-core nvidia-l4t-kernel

Check the camera and exact L4T release in the camera compatibility table. Orin NX and Orin Nano share the same compatibility table. Blank entries indicate unconfirmed support; test builds are marked separately.

JetPack and L4T have different version numbers. For example, JetPack 5.1.1 includes Jetson Linux / L4T 35.3.1. Driver packages must match the applicable L4T release and kernel build.

2. Connect the Camera

Choose the Cable and Port

The reference carrier board has two 22-pin, 0.5 mm-pitch, bottom-contact CSI connectors. CAM0 supports two CSI lanes; CAM1 supports two or four. Camera driver support must also match the selected port.

  • 15-pin camera connector: use a compatible 15-pin to 22-pin conversion cable.
  • 22-pin camera connector: use the 22-pin cable specified for the camera. Confirm its pinout and contact orientation, not just its pin count.

Jetvariety and arducam_4lane: use CAM1

These cameras work only on CAM1, the CSI connector closest to the power barrel jack, on the NVIDIA reference carrier board. For other camera configurations, follow the camera guide and the selected device-tree configuration.

Connect the Ribbon Cable

  1. Shut down the Jetson and disconnect its power supply.
  2. Gently release the CSI connector latch without removing it from the connector.
  3. Insert the cable straight and fully. At the Jetson end, the exposed contacts must face the connector's bottom contacts. Check the camera end separately against its wiring guide.
  4. Hold the cable in place and close the latch evenly. Avoid sharp folds and tension.
  5. Check both ends, reconnect power, and boot the Jetson.

See the NVIDIA hardware layout for connector details.

Orin Nano: cable connection examples

Match the illustrated carrier board and cable to your hardware. Use CAM1 for Jetvariety and arducam_4lane.

Orin Nano connection with a 15-pin to 22-pin cable
15-pin to 22-pin cable
Orin Nano connection with a 22-pin to 22-pin cable
22-pin to 22-pin cable

Orin NX: cable connection examples

Match the illustrated carrier board and cable to your hardware. Use CAM1 for Jetvariety and arducam_4lane.

Orin NX connection with a 15-pin to 22-pin cable
15-pin to 22-pin cable
Orin NX connection with a 22-pin to 22-pin cable
22-pin to 22-pin cable

3. Configure the Camera Driver

Install the tools used in this guide:

sudo apt update
sudo apt install -y v4l-utils wget gstreamer1.0-tools

Choose Your Camera

Use the exact camera variant when selecting a driver. Stereo, GMSL, and V3Link kits can require different drivers from a direct CSI camera using the same sensor.

CameraDriver setupGuide
IMX219 · 8 MPNVIDIA built-in driver; no additional Arducam sensor driver required.IMX219
IMX477 · 12 MP./install_full.sh -m imx477IMX477
IMX519 · 16 MP./install_full.sh -m imx519IMX519
IMX708 · 12 MP./install_full.sh -m imx708IMX708
Jetvariety./install_full.sh -m arducamJetvariety quick start
Four-lane cameras./install_full.sh -m arducam_4lane, when specified by the camera's product guide.Camera-specific setup

For stereo, GMSL, and V3Link kits, follow the kit's installation guide rather than selecting a command by sensor name alone.

IMX219 Setup

IMX219 uses NVIDIA's included driver. Continue to Verify Capture. If the camera is not detected, check its cable and the camera configuration supplied with your system image. The built-in driver still needs a matching device-tree configuration.

Follow any Jetson-IO or overlay instructions specified for your camera and system release, then reboot if the configuration changes.

Install an Arducam Driver

After confirming compatibility, download the installer once:

mkdir -p ~/arducam-camera-setup
cd ~/arducam-camera-setup
wget -O install_full.sh https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
chmod +x install_full.sh

Run only the command for your camera from the table above, in the same directory. For example, for a standard IMX477:

./install_full.sh -m imx477

Wait for installation to finish and follow any camera-specific configuration instructions. Reboot when prompted; if you postpone the reboot, restart before testing.

If no matching package is found, check the Orin NX / Orin Nano release assets against the exact L4T and kernel versions. A package for a different release is not interchangeable.

Jetvariety camera families and product guides

Check the SKU before selecting a driver. Modules using the same sensor may require different drivers, including arducam_4lane.

4. Verify Capture

Identify the Device and Supported Modes

v4l2-ctl --list-devices

Find the camera entry and its /dev/videoN node. Replace /dev/video0 below with the node reported for your camera:

v4l2-ctl -d /dev/video0 --list-formats-ext
v4l2-ctl -d /dev/video0 --get-fmt-video

Use the listed pixel formats, resolutions, and frame intervals when selecting a capture mode. IMX219 modes depend on the installed driver and device tree; 3280 × 2464 is not a universal restriction on all configurations.

Camera identifiers

CAM0/CAM1 identify physical connectors. /dev/videoN identifies a Linux video device. sensor-id identifies an Argus camera index. Their numbers do not necessarily match.

Native Cameras: Test the Argus Capture Path

For IMX219 and compatible IMX477, IMX519, and IMX708 configurations, first check that the NVIDIA source plugin is available:

gst-inspect-1.0 nvarguscamerasrc

Close other camera applications. The following command requests 60 frames without opening a preview window. Use the Argus index for your camera in place of 0 if required:

gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 num-buffers=60 ! \
  'video/x-raw(memory:NVMM),format=NV12' ! \
  fakesink sync=false

Expected result: The pipeline receives frames and finishes with EOS (end of stream), without capture errors. The resolution and frame rate are negotiated automatically. This checks frame delivery; use the camera guide to select a particular mode or evaluate image quality.

For a live preview, run the following from the Jetson's graphical desktop session:

gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 ! \
  'video/x-raw(memory:NVMM),format=NV12' ! \
  nvvidconv ! 'video/x-raw,format=BGRx' ! \
  videoconvert ! autovideosink sync=false

Press Ctrl+C to stop. An SSH session does not automatically provide access to a graphical display. If the preview cannot open, test capture without a display sink first.

See the native camera quick start for recording, focus controls, and camera-specific settings.

Jetvariety and arducam_4lane: Test the V4L2 Capture Path

Use the capture application and pixel-format handling specified for the exact camera. These drivers should not be assumed to support the Argus pipeline above.

For a camera configured for continuous streaming, test its active V4L2 format:

v4l2-ctl -d /dev/video0 \
  --stream-mmap --stream-count=60 --stream-to=/dev/null

Expected result: The command receives 60 frames and exits without an error. Apply any required format or trigger settings from the camera guide before testing. Stop the test before opening another capture application.

Use the Jetvariety quick start for the appropriate viewer. RAW Bayer, monochrome, and YUV output require different display handling.

5. Troubleshooting

  • No camera device: Power off before reseating the cable. Check its orientation, port, driver, device-tree configuration, and whether the required reboot was completed.
  • No matching driver package: Check the camera variant, carrier board, exact L4T release, and kernel package version. Keep the installer's complete output.
  • Device found but capture fails: Close other camera applications. Check the active format, trigger configuration, and whether the camera uses Argus or V4L2.
  • No preview window: Check the graphical session and installed display plugins. Test frame delivery independently of the preview.
  • Incorrect colors: Check the pixel format, Bayer conversion, and tuning for the exact module and lens. A color difference alone does not identify the cause.

For support, provide the camera SKU, Jetson module, carrier-board model, CSI port, exact command, and full error message. Include the version output from Step 1 and capture these diagnostics immediately after the failure:

v4l2-ctl --list-devices
sudo dmesg | tail -n 120

Capture Examples: JetPack 5.1.1 / L4T 35.3.1

These examples show IMX219 and IMX477 setups for the indicated release. Use the compatibility table and camera guide for your installed version. Device numbers and available modes can differ.

Hardware and software configuration
Hardware and software configuration for the capture examples
IMX219: connection, modes, and preview

The CAM0 comparisons show results with and without the demonstrated ISP tuning parameters. This comparison does not establish that ISP processing itself was disabled.

IMX219: Camera connection
Camera connection
IMX219: Supported modes
Supported modes
IMX219: CAM0: with ISP tuning parameters
CAM0: with ISP tuning parameters
IMX219: CAM0: without the demonstrated ISP tuning parameters
CAM0: without the demonstrated ISP tuning parameters
IMX219: CAM1: preview
CAM1: preview
IMX477: connection, modes, and preview

The CAM0 comparisons show results with and without the demonstrated ISP tuning parameters. This comparison does not establish that ISP processing itself was disabled.

IMX477: Camera connection
Camera connection
IMX477: Supported modes
Supported modes
IMX477: CAM0: with ISP tuning parameters
CAM0: with ISP tuning parameters
IMX477: CAM0: without the demonstrated ISP tuning parameters
CAM0: without the demonstrated ISP tuning parameters
IMX477: CAM1: preview
CAM1: preview