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
- Is using the official Dual IMX219 DTBO as the base for an IMX219 + OV9281 configuration the correct approach?
- Is replacing the second IMX219 node with the OV9281 node generally the recommended method?
- Are there additional Device Tree changes required besides replacing the sensor node (CSI endpoints, I²C bus, clocks, lane configuration, etc.)?
- 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!