Identify Your Model
First, identify which IMX477 camera you purchased before proceeding with the setups below. Currently, all Arducam IMX477 cameras for Jetson share the same drivers to work, but their hardware assembly may vary.
12MP IMX477 Camera for Jetson , Jetson Cameras
Arducam High Quality Camera, 12.3MP 1/2.3 Inch IMX477 HQ Camera Module with 6mm CS-Mount Lens for Jetson Nano,Xavier NX
Buy NowCheck Raspberry Pi version SKU: B0240
- Note: For the new version(R32 4.4), please refer to the following link: https://github.com/ArduCAM/MIPI_Camera/releases/tag/v0.0.2
- Get Clearer Images: This camera adopts 1/2.3″ 12.3 Megapixel IMX477 sensor for sharp image, max. still resolution 4056(H) x 3040(V).
…
12MP IMX477 Camera for Jetson , Jetson Cameras
Arducam Complete High Quality Camera Bundle, 12.3MP 1/2.3 Inch IMX477 HQ Camera Module with 6mm CS-Mount Lens, Metal Enclosure, Tripod and HDMI Extension Adapter for Jetson Nano, Xavier NX
Buy NowCheck Raspberry Pi version SKU: B0241
New version with ISP features, upgrade from B0243.
Note: For the new version(R32 4.4), please refer to the following link: https://github.com/ArduCAM/MIPI_Camera/releases/tag/v0.0.2
For PC /laptop, you could purchase the HQ UVC camera module B0280 (with 6mm CS Mount …
B0249 | B0250 | B0251 |
---|---|---|
Standard size board camera | Camera with metal enclosure and HDMI adapter | Compact size board camera |
Hardware Setup
For B0249 and B0251
- Locate the camera connector (CSI). It’s on the side of the carrier board, opposite to the GPIO pins.
- Pull up on the plastic edges of the camera port. Do it gently to avoid pulling it off.

- Push in the camera ribbon. Make sure the contacts are facing the heatsinks. Do not bend the flex cable, and make sure it’s firmly inserted into the bottom of the connector.



- Push the plastic connector down. Do it while holding the flex cable until the connector is back in place.
For B0250
The hardware assembly of B0250 is different from the other two because a CSI-HDMI adapter is involved. Here is what you should know about this model before assembling:
- The HDMI cable and adapter included are only used to extend the MIPI CSI signal.
- As it’s still a MIPI CSI camera, the connection ultimately goes to the CSI camera connector of Jetson.
Connect the B0250 to your Jetson in the following steps:
- Locate the camera connector (CSI). It’s on the side of the carrier board, opposite to the GPIO pins.
- Pull up on the plastic edges of the camera port. Do it gently to avoid pulling it off.

- Find the HDMI Adapter Board. It’s included in your kit.

- Push the camera ribbon of the HDMI Adapter Board into the camera connector. Make sure the contacts are facing the heatsinks. Do not bend the flex cable, and make sure it’s firmly inserted into the bottom of the connector.



- Push the plastic connector down. Do it while holding the flex cable until the connector is back in place.
- Use the HDMI cable to connect the HDMI adapter board to the HDMI connector in the back of the camera enclosure.

Driver Setup
Please refer to the DOC: IMX477 – How to install the Driver.
First Use
Open your Terminal, and run the corresponding commands.
Display
- 1920×1080
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=60 # Framerate can go from 2 to 60 for 1920x1080 mode gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink
- 4032×3040
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=30 # Framerate can go from 2 to 30 for 4032x3040 mode gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=4032,height=3040,framerate=$FRAMERATE/1" ! nvvidconv ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvoverlaysink
MP4 recording
- 1920×1080
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=60 # Framerate can go from 2 to 60 for 1920x1080 mode 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
- 4032×3040
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=30 # Framerate can go from 2 to 30 for 4032x3040 mode gst-launch-1.0 -e nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=4032,height=3040,framerate=$FRAMERATE/1" ! nvv4l2h264enc ! h264parse ! mp4mux ! filesink location=rpi_v3_imx477_cam$SENSOR_ID.mp4
JPEG snapshots
- 1920×1080
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=60 # Framerate can go from 2 to 60 for 1920x1080 mode NUMBER_OF_SNAPSHOTS=20 gst-launch-1.0 -e nvarguscamerasrc num-buffers=$NUMBER_OF_SNAPSHOTS sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvjpegenc ! multifilesink location=%03d_rpi_v3_imx477_cam$SENSOR_ID.jpeg
- 4032×3040
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=30 # Framerate can go from 2 to 30 for 4032x3040 mode NUMBER_OF_SNAPSHOTS=20 gst-launch-1.0 -e nvarguscamerasrc num-buffers=$NUMBER_OF_SNAPSHOTS sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=4032,height=3040,framerate=$FRAMERATE/1" ! nvjpegenc ! multifilesink location=%03d_rpi_v3_imx477_cam$SENSOR_ID.jpeg
Use two cameras at the same time
- 1920×1080
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=60 # Framerate can go from 2 to 60 for 1920x1080 mode gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nveglglessink
- 4032×3040
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports FRAMERATE=30 # Framerate can go from 2 to 30 for 4032x3040 mode gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=4032,height=3040,framerate=$FRAMERATE/1" ! nvvidconv ! nveglglessink