No cameras available on CSI-C port-index : 2 ; VI port-index : 2

Dear Community,

I have a Xavier NX based system with up to 4 identical 1-lane MIPI-CSI2 cameras with following configuration:
cam0 → CSI-A port-index : 0 ; VI port-index : 0
cam1 → CSI-C port-index : 2 ; VI port-index : 2
cam2 → CSI-D port-index : 3 ; VI port-index : 3
cam3 → CSI-E port-index : 4 ; VI port-index : 4

I use a single camera at a time (probed as /dev/video0) to test the physical interfaces. However, cam0, cam2 and cam3 can be streamed EXCEPT FOR cam1:

$ DISPLAY=:0 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1456,height=1088,format=(string)NV12,framerate=(fraction)60/1' ! nvvidconv ! fpsdisplaysink text-overlay=0 video-sink=ximagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:751 No cameras available
WARNING: from element /GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstXImageSink:ximagesink0: Pipeline construction is invalid, please add queues.
Additional debug info:
gstbasesink.c(1209): gst_base_sink_query_latency (): /GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstXImageSink:ximagesink0:
Not enough buffering available for  the processing deadline of 0:00:00.015000000, add enough queues to buffer  0:00:00.015000000 additional data. Shortening processing latency to 0:00:00.000000000.
Got EOS from element "pipeline0".
Execution ended after 0:00:00.008793760
Setting pipeline to NULL ...
Freeing pipeline ...

Below is additional info :

$ sudo v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Type: Video Capture

	[0]: 'RG10' (10-bit Bayer RGRG/GBGB)
		Size: Discrete 1456x1088
			Interval: Discrete 0.017s (60.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.011s (90.000 fps)
		Size: Discrete 728x544
			Interval: Discrete 0.008s (121.000 fps)
$ sudo media-ctl -p -d /dev/media0
Media controller API version 5.10.104

Media device information
------------------------
driver          tegra-camrtc-ca
model           NVIDIA Tegra Video Input Device
serial          
bus info        
hw revision     0x3
driver version  5.10.104

Device topology
- entity 1: 13e10000.host1x:nvcsi@15a00000- (2 pads, 0 link)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
	pad0: Sink
	pad1: Source

- entity 4: 13e10000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
	pad0: Sink
		<- "fsm-imx296 31-001a":0 [ENABLED]
	pad1: Source
		-> "vi-output, fsm-imx296 31-001a":0 [ENABLED]

- entity 7: 13e10000.host1x:nvcsi@15a00000- (2 pads, 0 link)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev2
	pad0: Sink
	pad1: Source

- entity 10: 13e10000.host1x:nvcsi@15a00000- (2 pads, 0 link)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev3
	pad0: Sink
	pad1: Source

- entity 13: fsm-imx296 31-001a (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev4
	pad0: Source
		[fmt:SRGGB10_1X10/1456x1088 field:none colorspace:srgb]
		-> "13e10000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 15: vi-output, fsm-imx296 31-001a (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video0
	pad0: Sink
		<- "13e10000.host1x:nvcsi@15a00000-":1 [ENABLED]

Have you ever seen similar issue? Might it come from bad MIPI-CSI2 interface as the I2C communication works well?
I am using Jetpack-5.1.

Best Regards,
Khang

It could be the strings of devname incorrect in tegra-camera-platform{}

Hi @ShaneCCC ,

The definition of the strings is as below :

#define  VI_ADDR   vi@15c10000
#define  NVCSI_ADDR   nvcsi@15a00000
#define  NUM_MIPI_CHAN   4
#define  COMPATIBLE_STRING   "framos,fsm-imx296"


#define  I2C_ADDR0   i2c@3180000

#define  I2C_EXPANDER_ADDR0   tca9548@70

#define  BUS_WIDTH0   1
#define  BUS_WIDTH1   1
#define  BUS_WIDTH2   1
#define  BUS_WIDTH3   1

#define  NUM_OF_LANES0   "1"
#define  NUM_OF_LANES1   "1"
#define  NUM_OF_LANES2   "1"
#define  NUM_OF_LANES3   "1"

#define CSI_PORT_INDEX0  0
#define CSI_PORT_INDEX1  2
#define CSI_PORT_INDEX2  3
#define CSI_PORT_INDEX3  4

#define VI_PORT_INDEX0  0
#define VI_PORT_INDEX1  2
#define VI_PORT_INDEX2  3
#define VI_PORT_INDEX3  4

#define  I2C0   i2c@0
#define  I2C1   i2c@1
#define  I2C2   i2c@2
#define  I2C3   i2c@3

#define  I2C_NODE0_REG   0x1a
#define  I2C_NODE1_REG   0x1a
#define  SENSOR_MODEL   "imx296"


#define  I2C0_NODE0    fsm-imx296_a@1a
#define  I2C1_NODE0    fsm-imx296_c@1a
#define  I2C2_NODE0    fsm-imx296_d@1a
#define  I2C3_NODE0    fsm-imx296_e@1a

#define  I2C0_NODE0_SINTERFACE    "serial_a"
#define  I2C1_NODE0_SINTERFACE    "serial_c"
#define  I2C2_NODE0_SINTERFACE    "serial_d"
#define  I2C3_NODE0_SINTERFACE    "serial_e"

#define  I2C0_NODE0_PORT_INDEX    0
#define  I2C1_NODE0_PORT_INDEX    2
#define  I2C2_NODE0_PORT_INDEX    3
#define  I2C3_NODE0_PORT_INDEX    4

#define MODULE0_BADGE    "jakku_bottomleft_fsmimx296"
#define MODULE1_BADGE    "jakku_centerleft_fsmimx296"
#define MODULE2_BADGE    "jakku_centerright_fsmimx296"
#define MODULE3_BADGE    "jakku_topright_fsmimx296"

#define MODULE0_DEVNAME  "fsm-imx296 30-001a"
#define MODULE1_DEVNAME  "fsm-imx296 31-001a"
#define MODULE2_DEVNAME  "fsm-imx296 32-001a"
#define MODULE3_DEVNAME  "fsm-imx296 33-001a"

#define PROC_DEVICE_TREE0  "/proc/device-tree/i2c@3180000/tca9548@70/i2c@0/fsm-imx296_a@1a"
#define PROC_DEVICE_TREE1  "/proc/device-tree/i2c@3180000/tca9548@70/i2c@1/fsm-imx296_c@1a"
#define PROC_DEVICE_TREE2  "/proc/device-tree/i2c@3180000/tca9548@70/i2c@2/fsm-imx296_d@1a"
#define PROC_DEVICE_TREE3  "/proc/device-tree/i2c@3180000/tca9548@70/i2c@3/fsm-imx296_e@1a"

And the content within tegra-camera-platform{} is as below :

/ {

        tegra-camera-platform {
                modules {
                        module0 {
                                badge = MODULE0_BADGE;
                                position = "bottomleft";
                                orientation = "1";
                                drivernode0 {
                                        /* Declare PCL support driver (classically known as guid)  */
                                        pcl_id = "v4l2_sensor";
                                        /* Driver v4l2 device name */
                                        devname = MODULE0_DEVNAME;
                                        /* Declare the device-tree hierarchy to driver instance */
                                        proc-device-tree = PROC_DEVICE_TREE0;
                                        status = "okay";
                                };
                        };
                        module1 {
                                badge = MODULE1_BADGE;
                                position = "centerleft";
                                orientation = "1";
                                drivernode0 {
                                        /* Declare PCL support driver (classically known as guid)  */
                                        pcl_id = "v4l2_sensor";
                                        /* Driver v4l2 device name */
                                        devname = MODULE1_DEVNAME;
                                        /* Declare the device-tree hierarchy to driver instance */
                                        proc-device-tree = PROC_DEVICE_TREE1;
                                        status = "okay";
                                };
                        };
                        module2 {
                                badge = MODULE2_BADGE;
                                position = "centerright";
                                orientation = "1";
                                drivernode0 {
                                        /* Declare PCL support driver (classically known as guid)  */
                                        pcl_id = "v4l2_sensor";
                                        /* Driver v4l2 device name */
                                        devname = MODULE2_DEVNAME;
                                        /* Declare the device-tree hierarchy to driver instance */
                                        proc-device-tree = PROC_DEVICE_TREE2;
                                        status = "okay";
                                };
                        };
                        module3 {
                                badge = MODULE3_BADGE;
                                position = "topright";
                                orientation = "1";
                                drivernode0 {
                                        /* Declare PCL support driver (classically known as guid)  */
                                        pcl_id = "v4l2_sensor";
                                        /* Driver v4l2 device name */
                                        devname = MODULE3_DEVNAME;
                                        /* Declare the device-tree hierarchy to driver instance */
                                        proc-device-tree = PROC_DEVICE_TREE3;
                                        status = "okay";
                                };
                        };
                };
        };
};

Is there any abnormal that I could not see ?

Thanks and best regards,
Khang

Hi @ShaneCCC ,

I was due to the missing of following properties in the sensor node :

+                                       physical_w = "14.0";
+                                       physical_h = "14.0";

which seems mandatory.

Best Regards,
Khang

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.