Quick Start Guide¶
Platform Compatibility
This guide is designed for setting up Arducam cameras on NVIDIA Jetson Nano, Xavier NX, Orin Nano, and Orin NX.
For AGX Orin, please refer to the AGX Orin Quick Start Guide.
1. Hardware Connection¶
Please select your Jetson platform below to view the specific connection instructions and diagrams.
Step-by-step Connection:
-
Locate the CSI port: Find the camera connector on the carrier board, opposite the GPIO pins.
-
Open the connector: Gently pull up the plastic edges of the port to avoid damaging it.
-
Insert the ribbon cable: Ensure the silver contacts are facing downward toward the carrier board (PCB). Push the cable firmly into the bottom of the connector without bending it.
-
Lock it in place: Push the plastic connector down while holding the cable steady.
Connection Diagrams:
Step-by-step Connection:
-
Locate the CSI port: Find the camera connector on the carrier board, opposite the GPIO pins.
-
Open the connector: Gently pull up the plastic edges of the port to avoid damaging it.
-
Insert the ribbon cable: Ensure the silver contacts are facing inward toward the heatsink. Push it firmly into the bottom of the connector. Do not bend the flex cable.
-
Lock it in place: Push the plastic connector down while holding the cable steady.
Reference Images:
2. Software Setup¶
Crucial Prerequisites
To successfully install the camera driver on your Jetson, please ensure the following:
- Use the Official Developer Kit: You must use the official NVIDIA carrier board. Third-party carrier boards are not supported and will cause driver installation failures.
- Check JetPack Version: Ensure your current JetPack version is on our Supported JetPack List.
Driver Installation¶
Choose your camera model below. The installation script will automatically configure the driver for your specific sensor.
✅ Plug and Play!
The IMX219 camera module is natively supported by the NVIDIA Jetson platform. You do not need to install any additional drivers. Simply connect the hardware and you are ready to go.
Run the following commands in your terminal to download and install the driver for the IMX477:
cd ~
wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
chmod +x install_full.sh
./install_full.sh -m imx477
Run the following commands in your terminal to download and install the driver for the IMX708:
cd ~
wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
chmod +x install_full.sh
./install_full.sh -m imx708
Run the following commands in your terminal to download and install the driver for the IMX519:
cd ~
wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
chmod +x install_full.sh
./install_full.sh -m imx519
Autofocus Feature
If you want to explore and test the autofocus capabilities of the IMX519, check out our Jetson IMX519 Focus Example repository.
Use GStreamer to Access the Camera¶
1. Check Supported Pixel Formats¶
Before running GStreamer pipelines, you can check the supported formats and resolutions of your camera using the following command:
v4l2-ctl --list-formats-ext
2. Camera Operations¶
Running via SSH
If you are accessing the Jetson board remotely via SSH, you must set the display environment variable before executing any visual commands:
export DISPLAY=:0
To preview the camera feed, you can use the following GStreamer command. Replace <width> and <height> with your desired resolution (e.g., 1920 and 1080 for 1080p):
SENSOR_ID=0
FRAMERATE=30
gst-launch-1.0 nvarguscamerasrc sensor_id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1,format=NV12" ! nvvidconv flip-method=0 ! "video/x-raw,width=960,height=720" ! nvvidconv ! nvegltransform ! nveglglessink -e
Record video from the camera and save it locally.
1. General Case (Standard H.264 Pipeline)
For all L4T versions older than 39.2.0, or when your target resolution is less than 4096, use the standard H.264 pipeline below. You can simply modify the width, height, and framerate values to match your specific needs.
SENSOR_ID=0
FRAMERATE=30
gst-launch-1.0 -e nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvv4l2h264enc ! h264parse ! mp4mux ! filesink location=rpi_v3_imx477_cam$SENSOR_ID.mp4
2. Special Case (H.265 Pipeline)
For L4T 39.2.0+ and Resolution ≥ 4096
If you are using L4T 39.2.0 or newer AND your target resolution is 4096 or higher, you must use the H.265 pipeline to record video.
SENSOR_ID=0
FRAMERATE=14
gst-launch-1.0 -e nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=4608,height=2592,framerate=$FRAMERATE/1" ! nvv4l2h265enc ! h265parse ! matroskamux ! filesink location=imx708_full.mkv
Set up a local video stream from the Jetson to another client device.
1. Start Server (On Jetson Board) Choose the appropriate command based on your L4T version to start the streaming server.
For Older L4T Versions (Before 39.2.0):
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=GRAY8,width=2560,height=800 ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc profile=high cabac-entropy-coding=true insert-sps-pps=true iframeinterval=60 ! 'video/x-h264, level=(string)4.2, stream-format=(string)byte-stream' ! tcpserversink host=0.0.0.0 port=5001 -v
For L4T 39.2.0 and Newer:
Resolution Matters
For L4T 39.2.0+, the pipeline changes depending on your target resolution.
-
Standard Resolution (< 4096):
SENSOR_ID=0 FRAMERATE=55 gst-launch-1.0 -e -v nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),format=(string)NV12,width=(int)2304,height=(int)1296,framerate=(fraction)$FRAMERATE/1" ! nvv4l2h264enc profile=4 disable-cabac=false insert-sps-pps=true iframeinterval=60 idrinterval=60 bitrate=8000000 ! h264parse config-interval=-1 ! "video/x-h264,stream-format=(string)byte-stream,alignment=(string)au" ! tcpserversink host=0.0.0.0 port=5001 sync=false sync-method=next-keyframe -
High Resolution (≥ 4096):
SENSOR_ID=0 FRAMERATE=14 gst-launch-1.0 -e -v nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),format=(string)NV12,width=(int)4608,height=(int)2592,framerate=(fraction)$FRAMERATE/1" ! nvv4l2h265enc insert-sps-pps=true iframeinterval=60 idrinterval=60 bitrate=8000000 ! h265parse config-interval=-1 ! "video/x-h265,stream-format=(string)byte-stream,alignment=(string)au" ! tcpserversink host=0.0.0.0 port=5001 sync=false sync-method=next-keyframe
2. Start Client (On Receiving Device)
Conda Environment Conflict
If you are running a Conda virtual environment on your Client machine, please deactivate it first. Alternatively, install the required GStreamer library within Conda by running: conda install gst-libav -c conda-forge
Run one of the following commands to receive and display the video stream:
Option A: Standard display with FPS info
gst-launch-1.0 -v tcpclientsrc host=0.0.0.0 port=5001 ! decodebin ! fpsdisplaysink sync=false text-overlay=false
Option B: Auto video sink
Display Issues?
If the autovideosink fails to pop up a window, try replacing it with ximagesink, xvimagesink, glimagesink, or d3dvideosink (Windows).
gst-launch-1.0 -ve tcpclientsrc host=0.0.0.0 port=5001 ! decodebin ! autovideosink







