Jetson Orin Nano - Running IMX219 and Arducam OV9281 simultaneously on different CSI ports

Hello everyone,

I am currently working on a project where I need to use two different CSI cameras simultaneously on a Jetson Orin Nano.

Hardware

  • Jetson Orin Nano Developer Kit
  • JetPack: (your version)
  • Camera 1: Raspberry Pi Camera V2 (Sony IMX219)
  • Camera 2: Arducam B0223 (OV9281)

Current status

Both cameras work correctly when tested individually.

  • IMX219 works correctly.
  • OV9281 also works correctly with its own driver and DTBO.

In addition, NVIDIA’s official Dual IMX219 configuration also works correctly.

So, individually everything is working.

Goal

My goal is to have the following configuration:

CSI Port 0 → IMX219

CSI Port 1 → OV9281

instead of

CSI Port 0 → IMX219

CSI Port 1 → IMX219

I was advised to use NVIDIA’s Dual IMX219 DTBO as a reference, decompile both DTBO files into DTS using dtc, replace the second IMX219 node with the OV9281 device tree configuration, compile it back into a DTBO, and update extlinux.conf to use the new overlay.

Conceptually this approach makes sense to me.

Problem

The problem is that after modifying the Device Tree / DTBO and rebooting, the system sometimes no longer reaches the Ubuntu desktop.

It appears that my modified overlay is preventing the system from booting correctly.

Because of this, I am first trying to create a safe boot configuration (baseline) that I can always return to if an experimental DTBO fails.

My questions

  1. Is using the official Dual IMX219 DTBO as the base for an IMX219 + OV9281 configuration the correct approach?
  2. Is replacing the second IMX219 node with the OV9281 node generally the recommended method?
  3. Are there additional Device Tree changes required besides replacing the sensor node (CSI endpoints, I²C bus, clocks, lane configuration, etc.)?
  4. Is there a recommended way to maintain two boot profiles (stable and experimental) using extlinux.conf, so I can always boot into a working configuration if the experimental DTBO fails?

Any advice or examples would be greatly appreciated.

Thank you!

hello alie64340,

is there any logs for reference? please setup serial console to gather the bootloader logs.

please check below for your Q1,Q2,Q3.
it’s suggest to check tegra234-p3767-camera-p3768-imx477-imx219.dts since you’re working with different cameras.
please also aware that..
there’s only single camera slot (J21/CAM1) support with 4-lane configuration on Jetson Orin NX developer kit.
– J20/CAM0 has CSI1_CLK, only a x2 camera interface is supported.
– J21/CAM1 uses CSI2_CLK, it can support both x2 or x4 camera interfaces.

regrading to your Q4.
you may see-also developer guide, Creating a Custom Device Tree Overlay.
besides, you may update extlinux.conf by using LABEL for several boot options, by interrupt the UEFI to select them for booting up.