1. Home
  2. Docs
  3. Jetson Cameras
  4. Native Jetson Cameras – IMX219/IMX477
  5. IMX477 – 12MP High Quality Camera

IMX477 – 12MP High Quality Camera

1. Introduction

Arducam IMX477 camera board now is natively supported by the Jetson Nano and Xavier NX board with the ISP features and [email protected] video performance by the Nvidia and its third party RidgeRun. Unlike the Raspberry pi HQ camera needs hardware modification to work with this driver and lost the warranty as well, Arducam IMX477 HQ camera works like a charm. Arducam provide precompiled driver installation package for easy setup, IMX477 driver code can be found from NVIDIA-Jetson-IMX477-RPIV3.

2. Install IMX477 driver

2.1 Check the Kernel Version

The driver package should match with your current kernel version, then you have to check your kernel version before downloading the corresponding driver package. Using cat /etc/nv_tegra_release command to determine the L4T release number. Using uname -a command to determine the kernel number. From the example below, it is Kernel 4.9.140 L4T-32.3.1.

Check Version

2.2 Download IMX477 driver

Download the Arducam camera driver package for Jetson Nano from github repository. Please download the corresponding package mentioned above. There are separate driver folder for Jetson Nano and Jetson Xavier NX, use whichever match your target board.

sudo dpkg -i xxx.deb

Note

For this new IMX477 camera driver, please remove Jetvariety board if you have, and connect IMX477 camera board directly to Jetson Nano or Xavier NX board.

2.3 Uninstallation

If you want to roll back to the original Jetson Nano IMX219 camera driver, just run the following command to uninstall the Arducam driver, a reboot is also required.

​sudo dpkg -r arducam-nvidia-l4t-kernel

3. Supported features

3.1 Resolutions and framerates

  • 1920×1080 @ 60fps
  • 4032×3040 @ 30fps

3.2 Controls

  • Gain
  • Exposure
  • Framerate
  • Group Hold

4. Example pipelines

4.1 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

4.2 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

4.3 JPEG sna pshots

  • 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

4.4 Use two cameras at 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

Was this article helpful to you? Yes 1 No