We connect two cameras to the Orin Nano carrier board.
1.Hardware Information
YUV Camera (2lane)
CSI2_CLK_P
CSI2_CLK_N
CSI2_D1_P
CSI2_D1_N
CSI2_D0_P
CSI2_D0_N
RAW Camera (2lane)
CSI3_D0_N
CSI3_D0_P
CSI3_D1_P
CSI3_D1_N
CSI3_CLK_N
CSI3_CLK_P
2.Device tree
Two cameras, the following parameters are configured to be the same
pix_clk_hz = "200000000";
serdes_pix_clk_hz = "200000000";
3.Bring up the two cameras separately
Image output is normal
Bring up YUV Camera first, it works.
Stop YUV Camera,bring up the RAW Camera, it works.
4.Bring up two cameras at the same time
Bring up YUV Camera first, it works.
Don’t stop the YUV Camera,bring up the Raw Camera,argus_camera error
Hi @norman_xu
Could you please share the following information?
List formats for both cameras:
v4l2-ctl -d /dev/video3 --list-formats-ext
Raw cameras (assuming is device 2)
v4l2-ctl -d /dev/video2 --list-formats-ext
Could you please share the pipeline that the argus_camera
is using?
Have you tried testing the capture process by using v4l2-ctl
?
Regards!
Eduardo Salazar
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com
hello norman_xu,
why it’s argus_camera -d 2
in your command-line? it’s launching 3rd camera actually.
may I confirm the number of cameras in your system?
besides, please also share the position
property settings within tegra-camera-platform{} for cross-check.
Hi Jerry,
1.A total of 4 cameras are connected
Video0: GMSL RAW Camera0 (4lane)
Video1: GMSL RAW Camera1 (4lane)
CSI0_D0_P
CSI0_D0_N
CSI0_D1_P
CSI0_D1_N
CSI1_D0_P
CSI1_D0_N
CSI1_D1_P
CSI1_D1_N
CSI0_CLK_P
CSI0_CLK_N
Video2: MIPI RAW Camera2 (2lane)
CSI2_CLK_P
CSI2_CLK_N
CSI2_D1_P
CSI2_D1_N
CSI2_D0_P
CSI2_D0_N
Video3: IR YUV Camera3 (2lane)
CSI3_D0_N
CSI3_D0_P
CSI3_D1_P
CSI3_D1_N
CSI3_CLK_N
CSI3_CLK_P
2.tegra-camera-platform
tegra-camera-platform {
compatible = "nvidia, tegra-camera-platform";
num_csi_lanes = <8>;
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <240000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
modules {
module0 {
badge = "cam_bottomleft";
position = "bottomleft";
orientation = "1";
drivernode0 {
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ar0234-gmsl 2-001b";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/cam_0@1b";
};
};
module1 {
badge = "cam_bottomright";
position = "bottomright";
orientation = "1";
drivernode0 {
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ar0234-gmsl 2-001c";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/cam_1@1c";
};
};
module2 {
badge = "cam_centerleft";
position = "centerleft";
orientation = "1";
drivernode0 {
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "ar0234-mipi 2-0018";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/cam_2@18";
};
};
module3 {
badge = "cam_centerright";
position = "centerright";
orientation = "1";
drivernode0 {
/* Declare PCL support driver (classically known as guid) */
pcl_id = "v4l2_sensor";
/* Driver v4l2 device name */
devname = "iray_cam 2-001d";
/* Declare the device-tree hierarchy to driver instance */
proc-device-tree = "/proc/device-tree/i2c@3180000/cam_3@1d";
};
};
};
};
3.Bring up
Viode0/1 and Video2 can work at the same time
Viode0/1 and Video3 can work at the same time
Viode2 and Video3 cannot work at the same time
Hi Eduardo,
1.List formats for both cameras
2.Using v4l2-ctl, also can’t work at the same time
Whichever camera is started first will work, and the other one will not work.
hello norman_xu,
here’re several questions,
(1) are those cameras running with virtual channel support?
otherwise, the setting below define total active CSI lanes.
norman_xu:
num_csi_lanes = <8>;
(2) according to below, which two were Video2 and Video3?
(3) did you using i2cmux? it looks all your camera were connected to i2c@3180000
.
Hi Jerry,
(1)Yes, the two cameras use different virtual channels
Video 0: VC0
Video 1: VC1
(2)
Video 2:cam_2@18
Video 3:cam_3@1d
(3)Not using i2cmux
hello norman_xu,
please also note that, libargus only support bayer raw camera sensors.
Hi Jerry,
Yes, for yuv camera, we use gst-launch-1.0 instead of argus_camera。
gst-launch-1.0 v4l2src device=/dev/video3 ! 'video/x-raw, format=UYVY, width=1280, height=512, framerate=50/1' ! nvvidconv ! nvegltransform ! nveglglessink -e
hello norman_xu,
I doubt it’s the issue with i2c conflicts.
please dig into these two camera settings, you should have separate configurations for Video2 and Video3, so that they could work at the same time.
Hi @norman_xu
Could you share the cameras’ device trees (dtsi) to check them?
Regards!