- What is Camarray
- Common Specs
- Quick Start Guide
- Hardware Setup
- Check the Driver
- Install Arducam IMX477 Stereo Camera Driver
- First Use
- Hardware Connection Instruction
- Trouble Shooting
This Arducam 12MP Synchronized Stereo Camera Bundle Kit is capable of running two 12MP IMX477 Camera Modules simultaneously through a single MIPI CSI-2 camera slot connection on popular embedded systems like Raspberry Pi, Jetson Nano and Jetson Xavier NX. It consists of two 12MP High Quality IMX477 camera module and an Arducam stereo camera HAT. The stereo camera HAT is enabled by ArduChip to disguise the dual-camera connection as a single camera to be accepted by the single-board computers. You can use this bundle to build your stereo camera system for depth-related vision applications or upgrade your IMX219 stereo setup.
What is Camarray
Camarray is a series of embedded stereo cameras and multiple camera solutions from Arducam. Upgraded from Arducam Sync Stereo Camera HAT, the Camarry can disguise up to 4 synched camera modules as a single camera slot connection to embedded systems like the Raspberry Pi, Jetson nano, and Xavier NX. With Arducam camarray, your camera connectivities are no longer limited to the camera connectors on the motherboard or the carrier board. Along with Arducam-provided camera drivers, more flexibility can be added to your multi-camera applications.
1.The Camarray HAT does not support digital pan in half resolution combine and programmable pan speed control.
2.The Camarray HAT is not a crop and a half (halving the horizontal resolution of each camera and halving the field of view) but a compressed half (halving the horizontal resolution of each camera but leaving the field of view unchanged), so it does not need to support scan mode.
IMPORTANT NOTE ON THE IMX477 MIPI LANES
Our IMX477 camera module support 4-lane in hardware, but the 4-lane camera driver requires extra customization. Here is why:
１.Standard Raspberry Pi and Jetson Nano/Xavier NX can’t physically support a 4-lane connection (both of them only have 2-lane CSI connectors). Only the Raspberry Pi Compute Module and some 3rd party Jetson Carrier Boards come with 4-lane hardware support. Therefore, it’s not a general need.
２.Extra works, specifically camera drivers, are required for a 4-lane connection other than the 4-lane physical connector. And the drivers are limited by the performances of the platform itself. For example, 4-lane can’t unlock 4k video on Raspberry Pi because the VideoCore does not currently support it. Jetson Nano is also to some extent limited because of the encoding capabilities. You need to make sure you really need it.
|Shutter Type||Rolling Shutter|
|Image Sensor Format||Type 1/2.3″|
|Color Filter Array||650nm|
|Focus Type||Manual Focus|
|Focusing Range||20cm to infinity (when focused to infinity)|
|Focal Length||6 mm|
|Field of View(FoV)||65° Horizontal|
|Lens Mount||CS Lens|
|IR Sensitivity||Visible light|
|Camera Board Size||38×38 mm|
|HAT Size||65×56 mm|
|Pin No.||Pin Name||Type||Description|
|1||3V3||Power||3.3V power supply|
|2||FSIN||Input||Frame Sync Input|
|3||STB||Output||LED Strobe Output|
|5||3V3||Power||3.3V power supply|
|6||SDA||I/O||SCCB serial interface data I/O|
|7||SCL||Input||SCCB serial interface clock input|
Connector & Cable
|Connector Interface||MIPI CSI-2 15-pin 2-lane|
|Ribbon Cable Length||150mm (22-pin), 300mm(15-22pin),|
|Pin No.||Pin Name||Type||Description|
|2||CAM_D0_N||Output||MIPI Data Lane 0 Negative|
|3||CAM_D0_P||Output||Pixel Data Lane0 Positive|
|5||CAM_D1_N||Output||MIPI Data Lane 1 Negative|
|6||CAM_D1_P||Output||MIPI Data Lane 1 Positive|
|8||CAM_CK_N||Output||MIPI Clock Lane Negative|
|9||CAM_CK_P||Output||MIPI Clock Lane Positive|
|15||CAM_3V3||Power||3.3V Power Input|
|Output Interface||2-lane MIPI serial output|
|Output Formats||8/10-bit RAW|
|Frame Rate||[email protected]*2×3040|
Quick Start Guide
Same operation on Xavier NX.The only difference is the driver package.
Check the Driver
This step is to check if you have other drivers installed. If you are sure that you don’t have other drivers installed, you can skip this step and go to install Arducam IMX477 Stereo Camera Driver.
There is three drivers for Jetson:
- Official IMX219 driver
- Arducam IMX477 driver
- Arducam V4L2 driver
These three drivers are in conflict with each other and only one of the three options is available.
The product is driven by the Arducam IMX477.
1) The Arducam IMX477 driver will automatically overwrite the other drivers and you don’t need to uninstall the other drivers.
2) If you want to use the official IMX219 driver, please type the following command to uninstall Arducam IMX477 driver or Arducam V4L2 driver.
sudo dpkg -r arducam-nvidia-l4t-kernel
2.Check your driver
Execute the following command and see if it responds. If there is no response, the corresponding driver is not installed.
#Check if you have installed Official IMX219 driver
dmesg | grep imx219
#Check if you have installed Arducam IMX477 driver
dmesg | grep imx477
#Check if you have installed Arducam V4L2 driver
dmesg | grep arducam
Install Arducam IMX477 Stereo Camera Driver
1.Check system version
#Check the L4T version
#Check the kernel version
2.Download Arducam driver package
Open the link below:
Depending on the hardware platform and system version currently in use, find the corresponding driver.
Download it and put it under the root directory.
If you can’t find a driver package matching your kernel version, please contact Arducam to update that.
3.Install Arducam driver package
Then type the following command to install the V4L-utils The driver package name (.deb) should be changed according to the actual download.
sudo dpkg -i arducam-nvidia-l4t-kernel_4.9.140-32.4.3-20201012171010_arm64_imx477_stereo.deb
Reboot your system.
Execute the following command after rebooting.
dmesg | grep imx477
Uninstall the Arducam IMX477 driver
sudo dpkg -r arducam-nvidia-l4t-kernel
1.Check whether the camera is detected
2.Preview the camera feed in real time
FRAMERATE=13 # Framerate can go from 2 to 13 for 4032x3040 mode gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),width=4032,height=3040,framerate=$FRAMERATE/1" ! nvvidconv ! "video/x-raw(memory:NVMM),width=1432,height=1080,framerate=$FRAMERATE/1" ! nvoverlaysink
4032×3040 exceeds the system resolution and requires zooming to display.
FRAMERATE=60 # Framerate can go from 2 to 60 for 1920x1080 mode gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink
FRAMERATE=30 # Framerate can go from 2 to 30 for 2592x1944 mode gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),width=2592,height=1944,framerate=$FRAMERATE/1" ! nvvidconv ! "video/x-raw(memory:NVMM),width=1440,height=1080,framerate=$FRAMERATE/1" ! nvoverlaysink
FRAMERATE=40 # Framerate can go from 2 to 40 for 2560x1440 mode gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),width=2560,height=1440,framerate=$FRAMERATE/1" ! nvvidconv ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvoverlaysink
|Resolution||Maximum Frame Rate|
Hardware Connection Instruction
1. Open the connector in the direction of the arrow
2. Insert the ribbon cable into the connector with the contact side facing up
3. Close the connector in the direction of the arrow
4. Open the connector of the HAT in the direction of the arrow
5. Insert the ribbon cable into the connector of the Stereo HAT, with the blue side facing up and the side with contacts down
6. Close the connector in the direction of the arrow
7. Use the same steps to connect another camera
8. Open the MIPI_TX0 connector on the HAT in the direction of the arrow
9. Insert the ribbon cable into the connector with the black side up and the contact side down
10. Close the connector in the direction of the arrow
11. Open the Jetson Nano connector (any one) in the direction of the arrow
12. Insert the ribbon cable into the connector with the contact side facing inward:
13. Close the connector
14. Insert the ribbon cable into the connector with the contact side facing inward
15. (Optional) Use USB to supply power (if you have already performed step 13, you do not need to perform this step)
16. Final picture
17.Start Jetson Nano.
18. Run the camera:
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports
FRAMERATE=60 # Framerate can go from 2 to 60 for 1920×1080 mode
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! “video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1” ! nvvidconv ! nvoverlaysink
Note: On the latest L4T32.5.0, the maximum resolution(4032×3040) is temporarily unavailable, we will adapt it as soon as possible.
Check whether the driver is installed
Run the following command to check whether the driver of imx477 is installed:
dmesg | grep imx477
If the driver is installed correctly, the command will output information with imx477 (Note: The output may not be the same as the picture below):
If the driver is not installed, please refer to this document to install the driver:
Detect HAT and camera via I2C
Run the following command to detect i2c devices:
i2cdetect -r -y 7 # Tip: The I2C bus of the CAM0 interface of Jetson Nano B01 is 7, # and the I2C bus of the CAM1 interface is 8. # The I2C bus of the CAM0 interface of Jetson Xavier NX is 10, # and the I2C bus of the CAM1 interface is 9.
Seeing 24 means that the HAT can be detected.
If you don’t see 24, the following possibilities are possible:
a. There is a problem with the connection between Jetson and the HAT or the cable is broken,
b. HAT is not powered on
Please check the relevant connection at this time
In the previous step, if the I2C of the HAT can be detected normally, then the connection between the HAT and Jetson is correct. If the camera cannot be detected at this time, then the problem is likely to be the connection between the HAT and the camera (maybe the connection Incorrect or broken wire).
If the camera cannot be detected, the result of i2cdetect is similar to the following (the device is not detected at 1a):
Check the dmesg log, the driver cannot detect the camera:
Please check the connection between the camera and the HAT at this time:
Both HAT and camera can detect
Test commands that will be used:
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
If the HAT and camera can be detected, but nothing is displayed when running the test command:
In this case, there may be a problem with one of the cameras, it may be that the cable of one of the cameras is not connected properly or the cable is broken.
At this time, the following errors may appear on the command line:
Similar information appears in the dmesg log:
Note: At this time, a reboot is required to proceed with the next test.
Check if the HAT is working properly
To check whether the HAT program is loaded correctly, you can judge by the light on the HAT. Normally, the green light on the HAT will flash when the camera is powered on for the first time or every time the camera is turned on.
Test channel 0
Run the following command to switch the camera to channel 0:
i2cset -y 7 0x24 0x24 0x01 # Tip: The I2C bus of the CAM0 interface of Jetson Nano B01 is 7, # and the I2C bus of the CAM1 interface is 8. # The I2C bus of the CAM0 interface of Jetson Xavier NX is 10, # and the I2C bus of the CAM1 interface is 9.
After running the above command, run the test command again. If the above error still occurs, the problem may be on channel 0. If it can be displayed normally, the problem may be on channel 1. Continue testing on channel 1.
Test channel 1
First reboot Jetson, after rebooting, execute the following command to switch to channel 1:
i2cset -y 7 0x24 0x24 0x02 # Tip: The I2C bus of the CAM0 interface of Jetson Nano B01 is 7, # and the I2C bus of the CAM1 interface is 8. # The I2C bus of the CAM0 interface of Jetson Xavier NX is 10, # and the I2C bus of the CAM1 interface is 9.
Run the test command after running the channel switching command. If it can be displayed normally, the problem may be on the camera of channel 0, and if it cannot be displayed normally, the problem may be on channel 1.
If the two channels cannot be displayed normally, there are problems with both cameras, and the hardware may be damaged.