Nvarguscamera open sensor-id=2 is camera 10 not camera 2 with more than 10 cameras on AGX Orin

Hi NV_Team,

We have more than 10 cameras on AGX Orin, 12 RAW Cameras LI-IMX390 with MAX96712 and MAX9296, v4l2 works fine but nvarguscamera open sensor-id=2 is camera 10 not camera 2.

OFParserListModules module list should be

OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module8
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module9
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module10
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module11

but my agx orin shows module list sequence is below

nvidia@ubuntu:~$ gst-launch-1.0 nvarguscamerasrc sensor-id=2 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv flip-method=0 ! 'video/x-raw,width=1920, height=1080' ! nvvidconv ! nvegltransform ! nveglglessink -e

。。。。。。。  (nvargus-daemon logs)
=== NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== gst-launch-1.0[4682]: Connection established (FFFFBA0AB840)NvPclSetHotplugCallback: ++++++++++++++++++++++
---- Imager: Calibration blob file handling supported in this build ----
NvPclHwGetModuleList: OFParserListModules Succeeded
NvPclModuleListInitialize: numBuiltinModules 12 +++
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module10
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module11
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module8
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module9
nvidia@ubuntu:~$ v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
	/dev/media0

vi-output, imx390 10-002a (platform:tegra-capture-vi:0):
	/dev/video4
	/dev/video5
	/dev/video6
	/dev/video7

vi-output, imx390 12-002a (platform:tegra-capture-vi:2):
	/dev/video10
	/dev/video11

vi-output, imx390 9-002a (platform:tegra-capture-vi:4):
	/dev/video0
	/dev/video1
	/dev/video2
	/dev/video3

vi-output, imx390 11-002a (platform:tegra-capture-vi:5):
	/dev/video8
	/dev/video9

Hello @Luna2020

You can take a look at this wiki page Fixed Sensor ID for Argus Capture with GStreamer just for reference for your case. Read all the wiki, but pay more attention to the Fixed Sensor ID for Argus Capture with GStreamer section.

I hope this helps!
Regards!
Eduardo Salazar
Embedded SW Engineer at RidgeRun

Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com

1 Like

Hi

This bug is not related with v4l2.

If we configure with 10 cameras nvargus works fine, the modulelist sequence is okay.

OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module8
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module9
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module10
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module11

If we configure with 12 cameras nvargus works fine, the modulelist sequence is not okay.

12 Cameras
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module10
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module11
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module8
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module9

Hello @Luna2020

The links that I shared are pointing to the sections that are related to nvarguscamerasrc and not with v4l2. Please check Capture using nvarguscamerasrc with no V4L2 Controls using an Unstable Camera System section

Furthermore, could you please share the tegra-camera-platform node from your device tree?

Regards!

Hi,

Here is my tegra-camera-platform, my dtsi setting is refered to tegra234-camera-p3762-a00.dtsi


			tegra-camera-platform {
				status = "okay";
				compatible = "nvidia, tegra-camera-platform";
				/* Physical settings to calculate max ISO BW
				 *
				 * num_csi_lanes = <>;
				 * Total number of CSI lanes when all cameras are active
				 *
				 * max_lane_speed = <>;
				 * Max lane speed in Kbit/s
				 *
				 * min_bits_per_pixel = <>;
				 * Min bits per pixel
				 *
				 * vi_peak_byte_per_pixel = <>;
				 * Max byte per pixel for the VI ISO case
				 *
				 * vi_bw_margin_pct = <>;
				 * Vi bandwidth margin in percentage
				 *
				 * max_pixel_rate = <>;
				 * Max pixel rate in Kpixel/s for the ISP ISO case
				 *
				 * isp_peak_byte_per_pixel = <>;
				 * Max byte per pixel for the ISP ISO case
				 *
				 * isp_bw_margin_pct = <>;
				 * Isp bandwidth margin in percentage
				 */
				num_csi_lanes = <16>;
				max_lane_speed = <15000000>;
				min_bits_per_pixel = <10>;
				vi_peak_byte_per_pixel = <2>;
				vi_bw_margin_pct = <25>;
				max_pixel_rate = <7500000>;
				isp_peak_byte_per_pixel = <5>;
				isp_bw_margin_pct = <25>;

				modules {
					status = "okay";
					module0 {
						status = "okay";
						badge = "imx390_bottomleft";
						position = "bottomleft";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 9-002a";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_2a@2a";
						};
					};
					module1 {
						status = "okay";
						badge = "imx390_centerleft";
						position = "centerleft";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 9-002b";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_2b@2b";
						};
					};					
					module2 {
						status = "okay";
						badge = "imx390_centerright";
						position = "centerright";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 9-002c";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_2c@2c";
						};
					};					
					module3 {
						status = "okay";
						badge = "imx390_topleft";
						position = "topleft";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 9-002d";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_2d@2d";
						};
					};
					module4 {
						status = "okay";
						badge = "imx390_bottomright";
						position = "bottomright";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 10-002a";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/imx390_2a@2a";
						};
					};
					module5 {
						status = "okay";
						badge = "imx390_topright";
						position = "topright";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 10-002b";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/imx390_2b@2b";
						};
					};
					module6 {
						status = "okay";
						badge = "imx390_bottomcenter";
						position = "bottomcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 10-002c";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/imx390_2c@2c";
						};
					};
					module7 {
						status = "okay";
						badge = "imx390_topcenter";
						position = "topcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 10-002d";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@1/imx390_2d@2d";
						};
					};
					module8 {
						status = "okay";
						badge = "imx390_frontcenter";
						position = "frontcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 11-002a";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@2/imx390_2a@2a";
						};
					};
					module9 {
						status = "okay";
						badge = "imx390_rearcenter";
						position = "rearcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 11-002b";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@2/imx390_2b@2b";
						};
					};
					module10 {
						status = "okay";
						badge = "imx390_leftcenter";
						position = "leftcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 12-002a";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@3/imx390_2a@2a";
						};
					};
					module11 {
						status = "okay";
						badge = "imx390_rightcenter";
						position = "rightcenter";
						orientation = "1";
						drivernode0 {
							status = "okay";
							pcl_id = "v4l2_sensor";
							/* Driver v4l2 device name */
							devname = "imx390 12-002b";
							sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@3/imx390_2b@2b";
						};
					};
				};
			};

Hi NV_Team,

Any update ?

Hi @Luna2020

I see that your position property is the same as Nvarguscamerasrc can not open camera with some errors - #3 by ShaneCCC

Did you confirm that when you capture from sensor-id=2, it is camera 10 that is opening?

Did you take a look at the link that I shared with you related to fixing the sensor ID for nvarguscamerasrc? I think that if you give it a try, you could capture from camera 2 when you specify the sensor-id=2 property.

Regards!

1 Like

Hi,

When I open sensor-id=2, nvarguscamera open camera-10, we can see this from csi trace log.
/dev/video2 → iic-bus-9
/dev/video10 → iic-bus-12

I think this maybe nvarguscamera or dtsi bugs.