Jetson Orin NX: Dual Cam (GRAY8) – Camera on CSI Port-1 Not Streaming (Port-0 Works), VI Timeout Errors

Hi NVIDIA Team,

I am working on Jetson Orin NX and trying to stream two MIPI CSI-2 monochrome cameras (GRAY8) simultaneously in 2-lane.
Setup

  • Platform: Jetson Orin NX (P3767)

  • Sensor: Two grey cameras

  • Mode: Monochrome GRAY8

  • Camera files used:

    • tegra234-camera-rbpcv2-imx219.dtsi

    • tegra234-p3767-camera-p3768-imx219-dual.dts

  • Two separate sensor drivers with different compatible strings

  • Both sensors are defined in the same dual camera DTS/DTSI

Device Tree Configuration

  • cam0 → configured to load the driver on CSI port-1

  • cam1 → configured to load the driver on CSI port-0

Observed Behavior

  • Camera connected to CSI port-0 streams correctly

  • Camera connected to CSI port-1 does not stream

  • Swapping the physical cameras does not change the issue

    • Whichever camera is connected to port-1 always fails
  • From the DTSI:

    • cam-B streams

    • cam-A does not stream

This suggests the issue is specific to CSI port-1 configuration, not the sensor hardware.

I²C Status

  • I²C communication is working

    • Sensor is detected

    • Register reads/writes are successful

  • Driver probe succeeds for both cameras

Kernel Errors (for non-streaming camera on port-1)

When starting streaming, I consistently see the following errors:

[   60.124461] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   60.124485] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   60.125548] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   62.748470] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   62.748489] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   62.749416] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

Summary

  • Dual Cam setup

  • I²C works on both cameras

  • Only CSI port-0 streams

  • CSI port-1 always times out at VI

  • Swapping cameras does not help

  • Issue appears related to DT / CSI / VI routing for port-1

Questions

  1. Are there additional DT properties required specifically for CSI port-1 on Orin NX?

  2. Could this be related to:

    • num_lanes

    • port-index

    • bus-width

    • vc-id

    • tegra_sinterface

    • lane_polarity

  3. Are there any known limitations or differences when using dual cam sensors on Orin NX with GRAY8?

  4. Any recommended debug steps to isolate CSI-1 vs VI routing issues?

I am sharing the full DTS/DTSI snippets.

tegra234-camera-rbpcv2-imx219.zip (3.4 KB)

tegra234-p3767-camera-p3768-imx219-dual.zip (910 Bytes)

Thanks in advance for your support.

hello cookiecooker249,

did you worked with Jetson Orin NX developer kit?
please note that, there’re two camera slots, they’re J20/CAM0/CSI-B, J21/CAM1/CSI-C
so.. may I double check which camera, or, which CSI port you’re facing capture timeout errors?

Hi @JerryChang ,

Thank you for the reply. I am using a custom carrier board, and the configurations are provided in the picture below.

hello cookiecooker249,

according to the schematic, there’re two camera nodes, J201 (CSI-0/1) and J202 (CSI-2/3).
capture failure happened with J201 only, you’re able to fetch camera steam via J202, right?

here’s issue per checking your sensor device tree,
since it’s camera driver for Orin NX developer kit, which utilize CSI-B.
you should revise VI/NVCSI/Sensor properties that maps to your custom carrier board accordingly.
for instance,

tegra-capture-vi  {
	ports {
		vi_port0: port@0 {
			rbpcv2_imx219_vi_in0: endpoint {
-				port-index = <1>;
+				port-index = <0>;
				bus-width = <2>;
				remote-endpoint = <&rbpcv2_imx219_csi_out0>;
host1x@13e00000 {
	nvcsi@15a00000 {
		csi_chan0: channel@0 {
			ports {
				csi_chan0_port0: port@0 {
					rbpcv2_imx219_csi_in0: endpoint@0 {
-						port-index = <1>;
+						port-index = <0>;
						bus-width = <2>;
						remote-endpoint = <&rbpcv2_imx219_out0>;
i2c_0:i2c@0 {
	imx219_cam0: rbpcv2_imx219_a@10 {
	mode0 { /* IMX219_MODE_3280x2464_21FPS */
		mclk_khz = "24000";
		num_lanes = "2";
-		tegra_sinterface = "serial_b";
+		tegra_sinterface = "serial_a";
		...
		ports {
			port@0 {
				rbpcv2_imx219_out0: endpoint {
-					port-index = <1>;
+					port-index = <0>;
					bus-width = <2>;
					remote-endpoint = <&rbpcv2_imx219_csi_in0>;

besides.. please refer to developer guide,
you may running with.. $ sudo media-ctl -p -d /dev/media0 to verify the port binding result.

Hi @JerryChang ,

Thank you for the reply, Now I able stream with with J201 as well, but I am still unable stream from both cameras simultaneously.

The following logs I am receiving.

[ 60.124461] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 60.124485] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 60.125548] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 62.748470] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 62.748489] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 62.749416] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

hello cookiecooker249,

please also check with running them simultaneously via v4l2 IOCTL.
for instance,
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=10000 -V
v4l2-ctl -d /dev/video1 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=10000 -V

Hi @JerryChang ,

Thank you for your suggestion.I am currently streaming in greyscale format, but I am still only getting frames from one camera.

Here’s the command I used.

 v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat=GRAY --set-ctrl bypass_mode=0 --stream-mmap --stream-count=10000 -V

I received the following output for video0

Format Video Capture:
	Width/Height      : 640/480
	Pixel Format      : 'GREY' (8-bit Greyscale)
	Field             : None
	Bytes per Line    : 640
	Size Image        : 307200
	Colorspace        : sRGB
	Transfer Function : Default (maps to sRGB)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Full Range)
	Flags             : 
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.04 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.04 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.04 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.04 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.03 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Similarly, for video1, I received:

Format Video Capture:
	Width/Height      : 640/480
	Pixel Format      : 'GREY' (8-bit Greyscale)
	Field             : None
	Bytes per Line    : 640
	Size Image        : 307200
	Colorspace        : sRGB
	Transfer Function : Default (maps to sRGB)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Full Range)
	Flags             : 



As we can see the streaming still fails to work for both cameras simultaneously. With RG10 for also I am getting the same results.

hello cookiecooker249,

let me double check your port bindings,
please execute the commands to dump device tree into dts formats for reference.
for instance,
$ sudo dtc -I fs -O dts /sys/firmware/devicetree/base > /tmp/123.dts

Hi @JerryChang ,

Here’s the 123.dts file for reference.

123.zip (44.7 KB)

hello cookiecooker249,

just curious, did those two different cameras, which means two different sensor driver?
it looks you’ve two compatible strings.
for instance,

rbpcv2_custom_a@10 {
	sensor_model = "custom";
	compatible = "Sony,CAM-A";
rbpcv2_custom_c@10 {
	sensor_model = "custom";
	compatible = "SONY,CAM-B";

Hi @JerryChang ,

Yes, I have two defferent drivers for two different cameras.

hello cookiecooker249,

please review the sensor power-on/off regulator settings, you should avoid using the same to have both cameras works simultaneously.