Issue Capturing Frames from Dual CSI Cameras on Orin NX

Hi,

I’m working with two CSI cameras connected to my custom baseboard. Both cameras are detected, but I can only capture frames from one of them — the other fails to capture.

I’m using an Orin NX module. Could you please help me resolve this issue?

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, I’ll try to help you resolve the issue.

Firstly, it’s great that both cameras are detected, which means the hardware connection and device tree configuration are likely correct. However, the fact that only one camera can capture frames while the other fails suggests a software or configuration issue.

Since you’re using an Orin NX module, I’ll focus on the Jetson AGX Orin series documentation. According to the documentation, the Jetson AGX Orin series supports a maximum of 16 virtual channels with ISP or 24 virtual channels without ISP. This means that you can connect multiple cameras to a single CSI port using virtual channels.

The CSI aggregator uses virtual channels to connect to four cameras over one CSI connection. The Jetson AGX Orin VI muxer sends each camera frame to a different location in memory, and in software, each camera appears as a separate V4L2 device.

To resolve the issue, I recommend checking the following:

  1. Virtual channel configuration: Ensure that the virtual channel IDs are correctly configured in the device tree for both cameras. You can refer to the Jetson AGX Orin series documentation for more information on virtual channel configuration.
  2. CSI port configuration: Verify that the CSI port configuration is correct for both cameras. Make sure that the CSI port is not set to a conflicting mode (e.g., both cameras trying to use the same CSI port).
  3. V4L2 device configuration: Check the V4L2 device configuration for both cameras. Ensure that the device nodes are correctly created and that the camera settings are properly configured.
  4. Software configuration: Review your software configuration to ensure that you’re correctly accessing and controlling both cameras. You may need to modify your code to handle the virtual channels and V4L2 devices correctly.

To further assist you, I’d like to know more about your setup and configuration. Could you please provide more details about your:

  • Custom baseboard design
  • Camera modules and their configurations
  • Device tree configuration
  • Software code and configuration

By providing more information, you’ll help me better understand your setup and provide a more accurate solution to resolve the issue.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

hello manojk9513,

please refer to auto-reply above for troubleshooting,
besides, please also setup serial console to gather the logs for details.

Is this still an issue to support? Any result can be shared?

We are still facing the issue, the camera is detected via i2c, but we fail to capture the frames.

v4l2-ctl --set-fmt-video=width=1280,height=720 --set-ctrl bypass_mode=0 --device=/dev/video0 --stream-count=100 --stream-mmap

in “sudo /opt/nvidia/jetson-io/jetson-io.py” we enabled the dual camera for CSI which made the detection possible for both, but frame capture still fails.

hello manojk9513,

may I know what’s your camera connections, for example, which camera port you’ve connected to, were they 2-lane or 4-lane camera sensors? you may also share the device tree settings for reference.
besides.. may I know which Jetpack public release version you’re now using?

We are using JP 6.2 with Raspberry pi Camera V2.1.

Using the v4l2-ctl --list-devices, we can see that 2 CSI camera’s are detected

vi-output, imx219 10-0010 (platform:tegra-capture-vi:1):
/dev/video1

vi-output, imx219 9-0010 (platform:tegra-capture-vi:2):
/dev/video0

This is my camera connector schematics.

I have not made any changes in my device tree, the only configuration i have done is
sudo /opt/nvidia/jetson-io/jetson-io.py → Configured Camera IMX219 Dual.

hello manojk9513,

did you design your own camera carrier board?
please refer to Jetson Orin NX Series and Orin Nano Series Design Guide for [Figure 10-1. CSI 2-Lane Connection Options].
please note that, CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.
please use device tree property, lane_polarity to configure a polarity swap on any lane.

Hi, i can see that on both the connectors the pulses generated while capturing the frames are correctly shown, but in terminal i cant see the 2nd camera frames being captured nor does it end, until i end the execution of command.
Can you guide me to which particular file should i edit for lane_polarity.
Also Does ORIN NX support capturing frames from dual camera?

Yes we have designed our own Carrier board.

Following is the serial log i get when am trying to capture the frames

hello manojk9513,

as you can see of Jetson Orin Nano Developer Kit Carrier Board Specification for [3.2 Camera Connector].
Jetson Orin Nano developer kit support two cameras (i.e. IMX219 or IMX477).
since it’s your own carrier board design, you may double check the board schematic for comparison.

besides.. please dump the device tree settings for quick checking.
for instance, $ sudo dtc -I fs -O dts /sys/firmware/devicetree/base > /tmp/123.dts

device_tree_orin_nx.txt (341.4 KB)
Here is the device tree of my orin nx.

hello manojk9513,

according to below.. you’ve a camera connected to CSI-B, which is mismatch to your camera connector schematics.

		cam_i2cmux {
			i2c@0 {
				rbpcv2_imx219_a@10 {
					mode0 {
						num_lanes = "2";
						tegra_sinterface = "serial_b";
					ports {
						port@0 {
							endpoint {
								bus-width = <0x02>;
								port-index = <0x01>;

hence, please revise them as CSI-A for testing.
you’ll need to update NVCSI/VI/Sensor port bindings for confirmation.