I’ve been trying to get an Arducam B0429 (2.3MP AR0234 Color Global Shutter) working on a Jetson Nano 4GB and I’m running into several issues I can’t sort out.
The images come out noticeably dark at the default exposure, with a strong green tint, and they’re out of focus too. For comparison, I have an Arducam B0348 on a Raspberry Pi and that one looks fine with no adjustments at all. Here’s a side-by-side — left is an e-con system camera, right is the B0429:
If I raise the exposure to brighten things up, the FPS drops a lot. The B0429 also doesn’t seem to work at all on an unofficial Jetson Nano carrier board I have (J01). The B0429 costs more than the B0348 too, and the Jetson’s GPU should be more capable, so it feels like the software just needs tuning.
Two questions: does the B0429 have any auto-exposure, and can this camera be used on a Raspberry Pi 4 at all?
Thanks for the details. To narrow this down, can you share the full environment you’re testing on? Specifically the JetPack/L4T version, kernel version, Python and OpenCV versions, and how you’re capturing (v4l2 vs the Arducam example scripts). Also, which driver/guide did you install from, and is the camera showing up as /dev/video0?
Camera: Arducam 2.3MP AR0234 Color Global Shutter (B0429)
Platform: NVIDIA Jetson Nano 4GB
JetPack 4.6.1, L4T 32.7.1
Kernel: 4.9.253-tegra
Python 3.6, OpenCV 4.1.1
I installed the drivers from the Jetvariety Quick Start Guide (the Software section). The camera is detected at /dev/video0 and v4l2 sees it.
I’ve actually got 3 of these boards. I did manage to get it working on the official carrier board, but only after tweaking the example code. The commands I’ve been running are:
I also searched through the available v4l2 controls for brightness/contrast/color and only found the ones I’ll paste next. I was wondering if OpenCV post-processing could be used to fine-tune the color output, and whether there’s any tested sample code or a guide that actually gets this camera looking right.
Can you paste the full output of v4l2-ctl --list-ctrls and also v4l2-ctl --list-formats-ext? And when you run python3 arducam_displayer.py -d 0, what exactly happens — do you get an error, a blank window, or a timeout?
Thanks, that’s helpful. A couple of things stand out: there’s no brightness/contrast/saturation control exposed here, and exposure is currently at 2000 (default 700), which lines up with why you’re seeing the FPS drop — longer exposure per frame means fewer frames per second.
Now about the display script — you mentioned an error earlier. Can you paste the exact terminal output from python3 arducam_displayer.py -d 0? I want to see whether it’s failing on the QBUF/DQBUF path or later in the reshape.
Okay, thanks — that paints a clearer picture. A few findings from our side:
The green/dark/color issues are mostly a platform limitation, not a broken sensor. Raspberry Pi has a fairly strong ISP pipeline that Jetson devices don’t expose the same way, and the Jetvariety ISP algorithm support on Jetson is limited, so you won’t get the same tuned color/brightness out of the box as the B0348 does on the Pi.
The B0429 uses an M12 lens, so focus is manual — you need to screw the lens barrel to get a sharp image. Out-of-focus won’t be fixed by any software setting.
The exposure/FPS trade-off you’re seeing is expected: raising exposure increases the per-frame exposure time, which lowers the achievable frame rate.
The brightness/contrast/color controls you were looking for are applied after the image has already gone through the ISP, so they can’t fix the original capture — and in your case they aren’t even exposed.
The VIDIOC_DQBUF: Resource temporarily unavailable + NoneType reshape means the script isn’t receiving a frame before the timeout, which is why the earlier QBUF error and the blank frame happen. That’s separate from the image quality issues and is worth testing on another unit/board if you can.
Thanks for the explanation. So there’s nothing in OpenCV that can improve the color output? And do you have any tested sample code or a guide that gets the B0429 looking correct on the Jetson?
Also coming back to my original question — will the B0429 work on a Raspberry Pi 4, since the B0348 works there without any tweaking?
To answer directly: no, OpenCV won’t fix the color rendering. OpenCV is a library for image manipulation and analysis, not color enhancement, and the color problems here happen before you ever get pixels into OpenCV.
For Raspberry Pi: I can’t guarantee the B0429 works on the Pi — you’d want to try the Pivariety camera Quick Start Guide and see if it enumerates. For the Jetson side, we tested the B0429 on L4T 32.7.3 and it worked, while you’re on 32.7.1, so if you can, try re-flashing to 32.7.3. Also worth connecting the camera to a different Jetson Nano if you have one, to rule out a hardware/carrier board issue — the unofficial J01 board may not be fully supported. And physically screw the M12 lens to set focus manually.
So to summarize where we are: the dark/green output is expected behavior on Jetson given the limited ISP, focus needs manual M12 adjustment, and the exposure/FPS trade-off is inherent. The frame timeout in the display script is still an open issue I’d tackle next by testing 32.7.3 and/or another board.