This driver has been developed by NVIDIA Corporation, RidgeRun Engineering and Leopard Imaging Inc. as a collaborative initiative in order to release the first version of the Sony IMX477 sensor driver for the Raspberry Pi HQ camera.
Supports the following Jetson platforms:
- Jetson Xavier NX
- Jetson Nano
In this repository you will find the following structure:
.
├── li-camera-calibration-files
│ └── camera_overrides.isp
├── patches_nano
│ ├── 4.4.1_evm_imx477-v0.1.0.patch
│ └── series
├── patches_nx
│ ├── 4.4.1_nx_imx477-v0.1.0.patch
│ └── series
└── README.md
where:
4.4.1_*_imx477-v0.1.0.patch
is the patch to be applied on the JetPack 4.4.1 sources in order to add support for the IMX477 camera sensor in the Jetson Xavier NX and Jetson Nano.series
is a file containing the patch name in order to apply it by using the quilt tool.camera_overrides.isp
is a file which contains a set of calibration parameters for the Image Signal Processor of the HQ camera.
You can download and install the JetPack 4.4.1 by following the instructions below:
There are two options to install the driver:
This is the easiest and fastest way to install the driver. In order to install the debian packages you just need to perform the following instructions:
In order to apply the patch on the JetPack 4.4.1 sources with Xavier NX and Nano support, you must perform the following instructions:
- JetPack 4.4.1 sources download instructions
- Patch instructions
- Kernel build instructions
- Flash the Jetson
Visit the Custom ISP Configuration page in order to learn how to use the camera_overrides.isp file to configure the ISP.
- 1920x1080 @ 60fps
- 4032x3040 @ 30fps
- Gain
- Exposure
- Framerate
- Group Hold
- 1920x1080
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
- 4032x3040
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
- 1920x1080
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
- 4032x3040
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
- 1920x1080
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
- 4032x3040
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