[Jetson Nano] Multiple Camera Connection probelms

Hello,
I have a Jetson Nano board and I’m trying to use it with a custom-designed carrier board. Most of the I/O on my board is working correctly, but I’m facing an issue with the CSI camera interface. The problem is: I connected two cameras, but I’m only able to receive data from one of them. Only /dev/video0 is visible, while /dev/video1 is missing. I suspect there might be something missing or misconfigured in the Device Tree. I’m using a TCA9548 I2C MUX and have updated the Device Tree accordingly. Below, I’ll share the steps I’ve taken, my DTS file, and some command outputs.

My Circuit Diagram:
There are three important points in the schematic section:

  1. I’m using CSI3 and CSI0 interfaces.
  2. I’m using output channel 1 of the I2C MUX for CAM0, and output channel 0 for CAM1.
  3. I’m actively using the CAM0 and CAM1 data lanes.

File:

  1. dts file:
    jetson_nano_dts.txt (310.3 KB)

  2. dmesg log:
    log.txt (47.2 KB)

Terminal Output:

root@jetson-nano:~# i2cdetect -l

i2c-35	i2c       	i2c-6-mux (chan_id 5)           	I2C adapter
i2c-3	i2c       	7000c700.i2c                    	I2C adapter
i2c-33	i2c       	i2c-6-mux (chan_id 3)           	I2C adapter
i2c-1	i2c       	7000c400.i2c                    	I2C adapter
i2c-31	i2c       	i2c-6-mux (chan_id 1)           	I2C adapter
i2c-6	i2c       	Tegra I2C adapter               	I2C adapter
i2c-36	i2c       	i2c-6-mux (chan_id 6)           	I2C adapter
i2c-4	i2c       	7000d000.i2c                    	I2C adapter
i2c-34	i2c       	i2c-6-mux (chan_id 4)           	I2C adapter
i2c-2	i2c       	7000c500.i2c                    	I2C adapter
i2c-32	i2c       	i2c-6-mux (chan_id 2)           	I2C adapter
i2c-0	i2c       	7000c000.i2c                    	I2C adapter
i2c-30	i2c       	i2c-6-mux (chan_id 0)           	I2C adapter
i2c-37	i2c       	i2c-6-mux (chan_id 7)           	I2C adapter
i2c-5	i2c       	7000d100.i2c  

  • You can see from the I2C output that both cameras are detected, but when listing video devices, only video0 appears.
root@jetson-nano:~# i2cdetect -y -r 30
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- -- 
70: UU -- -- -- -- -- -- --        
                 
root@jetson-nano:~# i2cdetect -y -r 31
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- -- 
70: UU -- -- -- -- -- -- --

root@jetson-nano:~# ls /dev/video*
/dev/video0
root@jetson-nano:~# sudo dmesg | grep -i imx219
[    0.227821] DTS File Name: tegra210-nano-cti-NGX004-RPI-IMX219-2CAM.dts
[    0.432193] DTS File Name: tegra210-nano-cti-NGX004-RPI-IMX219-2CAM.dts
[    4.145191] imx219 30-0010: tegracam sensor driver:imx219_v2.0.6
[    4.177642] imx219 31-0010: tegracam sensor driver:imx219_v2.0.6
[    4.953227] vi 54080000.vi: subdev imx219 31-0010 bound
[    4.953230] vi 54080000.vi: subdev imx219 30-0010 bound
root@jetson-nano:~# udevadm info --query=all --name=/dev/video0
P: /devices/50000000.host1x/54080000.vi/video4linux/video0
N: video0
L: 0
S: v4l/by-path/platform-54080000.vi-video-index0
E: DEVPATH=/devices/50000000.host1x/54080000.vi/video4linux/video0
E: DEVNAME=/dev/video0
E: MAJOR=81
E: MINOR=0
E: SUBSYSTEM=video4linux
E: USEC_INITIALIZED=6833916
E: ID_V4L_VERSION=2
E: ID_V4L_PRODUCT=vi-output, imx219 31-0010
E: ID_V4L_CAPABILITIES=:capture:
E: ID_PATH=platform-54080000.vi
E: ID_PATH_TAG=platform-54080000_vi
E: ID_FOR_SEAT=video4linux-platform-54080000_vi
E: DEVLINKS=/dev/v4l/by-path/platform-54080000.vi-video-index0
E: TAGS=:uaccess:seat:

I don’t have a clear idea why video1 is not showing up. I’m not sure what I need to do or which files or settings I should check or fix.

Thank you in advance for your help

hello serkanmzlm,

here’re couple of changes of your sensor device tree.
(1) since it’s running with CSI-D, you should modify tegra_sinterface = "serial_d";
(2) please also revise the port-indexwithin VI’s 2nd node as below..

	vi {
			compatible = "nvidia,tegra210-vi", "simple-bus";
			ports {
				port@0 {...}
				port@1 {
					endpoint {
						status = "okay";
						port-index = <0x3>;

@JerryChang I’ve applied the changes you suggested — thank you for your response. However, I haven’t observed any improvement on the video1 side; there’s still no communication. What else should I check at this point?

jetson_nano_dts.txt (310.3 KB)

hello serkanmzlm,

may I know what’s the kernel messages reported?
you may try running $ dmesg --follow, and then fetch streaming from video1 to gather the logs.

@JerryChang Thank you for your help! After following the steps you provided, I set port-index = 5 and serial = "f", and it worked. I really appreciate your assistance in helping me resolve the issue.

We did it! It’s working perfectly without any issues.