Hi everyone. I’m trying to get the Arducam 2.3MP AR0234 Color Global Shutter camera working on a Seed Studio A603 carrier board with a Jetson Orin Nano. I followed the Jetvariety quick start guide and installed the Jetvariety driver, but after installation the Jetson doesn’t boot at all. I’m also having a separate issue: I can’t control auto exposure. v4l-ctl doesn’t show any exposure mode setting for the camera. Any ideas?
Could you give us a bit more detail on the setup? Which L4T/Jetpack version are you on, and which guide exactly did you follow? Also, was the camera tested on the stock Orin Nano dev board before moving to the A603?
Platform is the NVIDIA Jetson Orin Nano. I tested the camera on the Orin Nano dev board first and it worked there. The target carrier is the Seed Studio A603. I’m running L4T 36.3.0 / Jetpack 6.0, and I followed Quick Start Guide - Arducam Wiki. I was also looking for these kernel source packages so I can try to fix the compatibility myself: arducam-nvidia-l4t-kernel-t234-nx-5.15.122-tegra-36.2.0-20240430173000_arm64 and arducam-nvidia-l4t-kernel-t234-nx-5.15.148-tegra-36.4.0-20241106160453_arm64.
Thanks. Can you post the v4l-ctl output where the exposure mode setting should appear, plus any screenshot? And on the A603, is it failing right at boot (before the kernel finishes) or does it get further than that?
Here’s the v4l-ctl output — as you can see there’s no exposure mode or auto exposure entry:
. On the A603, after I install the Jetvariety driver the board just doesn’t come up to a usable boot. On the dev board it boots fine and the camera streams. That’s why I was hoping to get the Device Tree and kernel modification source files so I can adapt them to the A603 instead of using the installer as-is.
From what you’ve described, the boot failure on the A603 is because the Seed Studio A603 uses its own kernel version and a different Device Tree. The Jetvariety driver overwrites those during installation, so the board ends up with the wrong kernel and Device Tree and can no longer boot. The right approach is to take the Arducam kernel/driver source and adapt the Device Tree and kernel changes to the A603 rather than letting the installer replace them.
Thanks, that matches what I was seeing. Can you point me to the source code for the Jetvariety driver? I’m on L4T 36.3.0 and I’d like to port the changes to the A603.
I’ve sent the Jetvariety source code for Orin NX L4T 35.3.1 / Jetpack 5.1.1 via private message, and I’ve also sent a source package for L4T 36.2.0. Please check your messages. One thing to keep in mind: for L4T 36.3.0 (Jetpack 6.0) we don’t have a camera driver source package for that exact version, so you’ll need to adapt from the 36.2.0 source against your current kernel.
Got it, I’ll start from the 36.2.0 source. On the auto exposure issue — even on the dev board where the camera works, v4l-ctl doesn’t expose any exposure mode setting. Is there a separate control or driver flag I’m missing?
For auto exposure, that behavior is actually expected. The Arducam Jetvariety cameras, including the 2.3MP AR0234 Color Global Shutter, don’t include ISP (Image Signal Processing) control capabilities. Auto exposure is an ISP feature, which is why v4l-ctl can’t find an exposure mode setting regardless of the board.
Understood — so there’s no exposure mode control I can set through v4l-ctl at all? And for the A603, is the recommended path just to follow the quick start guide but adapt the DTB/kernel changes manually?
Correct on both. For the A603, follow the Jetvariety Camera Quick Start Guide (Quick Start Guide - Arducam Wiki) but obtain the correct kernel source package for your L4T version and adapt the Device Tree and kernel modifications to the A603 instead of letting the driver overwrite them. To summarize: the boot failure is because the driver overwrites the kernel and Device Tree, which breaks carrier boards with their own kernel/DTB; and auto exposure can’t be controlled through v4l-ctl because these cameras lack ISP control. Source packages exist for L4T 35.3.1 (Jetpack 5.1.1) and 36.2.0, but not for 36.3.0 (Jetpack 6.0), so you’ll port from 36.2.0.