Introduction
This Arducam 2MP*2 Stereo Camera MIPI Module is a stereo camera module with two synchronized monochrome global shutter OV2311 image sensors (2×2MP). It directly connects to the MIPI CSI-2 connectors of Raspberry Pi and Jetson Nano, and runs with a V4L2 camera driver on those platforms. It offers better flexibility to be integrated into your own hardware design or run with your own algorithm on embedded systems for applications like depth sensing, 3d mapping, SLAM, etc.
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.
NOTE
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.
Common Specs
Image sensor
Sensor Model | OV2311 |
Shutter Type | Global Shutter |
Active Pixels | 1600*2×1300 |
Resolution | 2MP*2 |
Image Sensor Format | Type 1/2.9″ |
Pixel Size | 3μm×3μm |
Color Filter Array | None(Monochrome) |

Lens Assembly
Interchangeability | YES |
F/NO | 2.8 |
Focus Type | Manual Focus |
Focusing Range | 30cm to infinity (when focused to infinity) |
Effective Focal Length(EFL) | 2.8 mm |
Field of View(FoV) | 83° Horizontal |
Lens Mount | M12 Lens |
IR Sensitivity | No IR filter (sensitive to IR light) |

Camera Board
Camera Board Size | 105×24 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 |
4 | GND | Ground | Ground |
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 |
8 | GND | Ground | Ground |
Connector & Cable
Connector Interface | MIPI CSI-2 15-pin 2-lane |
Ribbon Cable Length | 150mm (15-pin), 150mm (15-22pin) |
Mating connector type | SFW15R-2STE1LF |
Pin # | Name | Description |
---|---|---|
1 | GND | Ground |
2 | CAM_D0_N | MIPI Data Lane 0 Negative |
3 | CAM_D0_P | MIPI Data Lane 0 Positive |
4 | GND | Ground |
5 | CAM_D1_N | MIPI Data Lane 1 Negative |
6 | CAM_D1_P | MIPI Data Lane 1 Positive |
7 | GND | Ground |
8 | CAM_CK_N | MIPI Clock Lane Negative |
9 | CAM_CK_P | MIPI Clock Lane Positive |
10 | GND | Ground |
11 | CAM_IO0 | Power Enable |
12 | CAM_IO1 | LED Indicator |
13 | CAM_SCL | I2C SCL |
14 | CAM_SDA | I2C SDA |
15 | CAM_3V3 | 3.3V Power Input |
Driver Performance (With Official V4L2 Driver)
Video Format | GERY(8-bit)/Y10P(10-bit) |
Output Interface | 2-lane MIPI serial output |
Output Formats | 8/10-bit BW RAW |
Frame rate (adjustable: 5fps~50fps)
Raspberry Pi | Jetson Nano | |
RAW8(GREY) | [email protected]×1300 | [email protected]×1300 |
RAW10(Y10P) | [email protected]×1300 | [email protected]×1300 |
Quick Start Guide
NOTE
Same operation on Xavier NX. The only difference is the driver package.
Hardware Setup

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 V4L2.
1.Driver type
There is three drivers for Jetson:
- Official IMX219 driver
- Arducam IMX477 driver
- Arducam V4L2 driver
NOTE
These three drivers are in conflict with each other and only one of the three options is available.
1) The Arducam IMX477 driver and Arducam V4L2 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
3) Installing the Arducam IMX477 driver is the same process as installing the Arducam V4L2 driver, only the driver package (.deb) is different.
The product is driven by the Arducam V4L2.
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 V4L2 driver
Please go to this page for detailed instruction.
First Use
1.Install V4L2 python module
for Python3.x:
wget https://bootstrap.pypa.io/get-pip.py

After you type the following command and press【Enter】, it will take several minutes to finish downloading.
sudo python3 get-pip.py


sudo pip3 install v4l2-fix

NOTE
The V4L2 of Python3.x has a known bug that requires a manual fix, and the following error occurs when you import the v4l2 module into Python3.x:

You can refer to this link to fix this bug:
https://bugs.launchpad.net/python-v4l2/+bug/1664158
2.Download the demo code
git clone https://github.com/ArduCAM/MIPI_Camera.git


3.Check whether the camera is detected
ls /dev/video0

4.Check the video format supported
v4l2-ctl --list-formats-ext
5.Display images in real time
If accessing Jetson via remote software (e.g., MobaXterm), the following command (executed only once) is required to display the image.
export DISPLAY=:0.0
Enter program directory:
cd MIPI_Camera/Jetson/Jetvariety/example/
OV2311 currently supports the following commands:
#RAW8
python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps
#RAW10
python3 arducam_displayer.py -f Y16 --width 3200 --height 1300 -d 0 --fps
GREY for RAW8 and Y16 for RAW10.
-width and -height indicate the width and height of the input image.
–fps means to display the current frames. If you don’t want to display frames, you can remove this command parameter.
For example, execute the following command:
python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps
The command line will refresh the display of frames in real time.

Press Ctrl+C to exit image display.
NOTE
Display resolution settings may affect the frames displayed.
Dropped frame?
Select Arducam/arducam_displayer.py, right-click on “open with Text Editor“.

The circled value below represents the number of column in the display resolution. Try making the value lower if the frame is dropped.

6.Receive data without displaying the image
#Save RAW image
v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat=GREY --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=ov2311.raw -d /dev/video0
#RAW8
v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat='GREY' --stream-mmap --stream-count=-1 -d /dev/video0
#RAW10
v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat='Y10P' --stream-mmap --stream-count=-1 -d /dev/video0

7.Adjust exposure
Open two terminals, the first one is for executing the displaying images command, the second one is for executing the adjusting exposure command.
#Adjust exposure:
v4l2-ctl -c exposure=1000
#Check exposure parameters (minimum, maximum, default)
v4l2-ctl -l

For example, execute the below command in the second terminal:
v4l2-ctl -c exposure=6000

Turning up the exposure time results in a brighter image and a lower frame rate.
8. Adjust gain
Open two terminals, the first one is for executing the displaying images command, the second one is for executing the adjusting gain command.
#Adjust gain:
v4l2-ctl -c gain=12
#Check exposure parameters (minimum, maximum, default)
v4l2-ctl -l

For example, execute the below command in the second terminal:
v4l2-ctl -c gain=200

Turning up the gain results in a brighter image and no change in frame rate.
9.Change frame rate
Type the following command, change the value of “X” to change frame rate.
v4l2-ctl -c frame_rate=X
For example, you want to change the frame rate to 40. First, open two terminals, type the following command in the first terminal:
python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps

Type the following command in the second terminal to change frame rate:
v4l2-ctl -c frame_rate=40

Type the following command in the second terminal to view the frame rate range of the current display mode:
v4l2-ctl -l

IMPORTANT NOTE
Dropped frames may exist due to the platform performance.
For example, if the frame rate is set to 50 fps, the display only goes up to 43fps.

You can test the actual input frames by only receiving data without displaying the image.
The frame rate values here are not real-time and are calculated iteratively with historical values, changing slowly.

Display the Image via VLC Media Player
Open VLC media player

1.Display the image
Press Ctrl+C

【Video device name】→ select “/dev/video0“→ click 【Play】.


2.Adjust exposure, gain, and frame rate
Press Ctrl+E, drag the sliders at “Exposure“, “Gain” and “Frame_rate” to make adjustments under the “v4l2 control” tab.


Display the Image via MPlayer
1.Install mplayer
sudo apt-get install mplayer
2.Display images
mplayer tv:// -tv driver=v4l2:device=/dev/video0
Do not enter this command remotely, otherwise it will be stuck.

Or enter the following command to zoom the image.
mplayer tv:// -tv driver=v4l2:device=/dev/video0 -zoom -x 1280 -y 520
“-x” “- y” denotes the width and height of the scaled image, and it is recommended to modify them in equal proportion.

What’s Next
Here are the things you can do after this quick start:
- Check the Application Note for applications like using Arducam userland MIPI camera drivers.
- Join the discussion in our forum.
Application Note
Please refer to this page for instruction.