Error installing IMX519 firmware on Jetson Orin Nano with Arducam B0388 Quad Camera Kit

Hi all, I’m trying to install the imx519 firmware for my 16MP IMX519 Autofocus Synchronized Quad-Camera Kit (SKU B0388) on a Jetson Orin Nano original dev kit and I keep getting an error during the install. I’ve attached a screenshot of the error. Has anyone run into this before?

Can you post the exact error text or the screenshot? Also, when you installed, where did you place the dtb file? A common issue with this kit is the dtb ending up in the wrong location, which breaks the firmware install. Check that the .dtb file is placed in the correct directory for your JetPack version and reboot.

Thanks, that was it — I had the dtb file in the wrong location. After moving it to the right place the camera streams come through fine now. But I’m now seeing two issues: the autofocus doesn’t seem to work at all, and the video is out of focus and pretty soft. I’m planning to use this for vision-based obstacle avoidance on a quadcopter, so the image quality needs to be good enough for feature extraction. Any pointers?

Good to hear the streams are coming through. For the focus part — we’ve updated the camera driver installer, so please re-run the installation script to install the driver again. Autofocus for the IMX519 on Jetson is not handled automatically by the driver; it’s done through a separate example project. Take a look at this sample autofocus project: GitHub - ArduCAM/Jetson_IMX519_Focus_Example · GitHub

I re-ran the updated installer and the camera drivers are working, but autofocus is still not kicking in. Right now I’m testing in quad channel mode — does the autofocus example require single channel mode to work?

Try running the focus example in single channel mode first to verify the focus motor responds. If it works there, then the example/library is the thing doing the focusing, so it won’t happen by itself in quad channel unless your own code calls into the focus library.

Quick update — I got autofocus working using the example. But now the video stream still looks soft even though autofocus is running. Any suggestions on what to check for the softness?

Could you send some sample pictures or a short sample video showing the softness? It’s hard to judge image quality without visual evidence. If you can share a frame or a short clip, we can take a look and go from there.

Good news — the softness is basically gone now. Once the focus issue was fixed, the images got much sharper and look good. One thing I noticed though: if I run a gstreamer pipeline to capture from the camera, the cameras go out of focus and don’t change focus automatically. When I use the autofocus example script, focus changes automatically. Is that expected?

Great, glad the softness is resolved. And yes, that behavior is expected — the gstreamer pipeline itself does not integrate autofocus control. So when you capture via gstreamer alone, nothing is driving the focus, which is why the image drifts out of focus. Use the autofocus example script to control focus, or integrate the same focus control into your own capture code.

Understood, so autofocus isn’t happening automatically at the hardware end — I’ll integrate the focus library into my own code. One more thing: in single channel mode I only see one camera stream at a time (a single /dev/video0 device). Is there any way to access all 4 cameras simultaneously in single channel mode?

No, accessing all 4 cameras simultaneously in single channel mode isn’t currently possible with the synchronized quad-camera kit. You can check the product documentation for the supported modes here: 16MP Synchronized Quad-Camera Kit

Thanks. If I switch to dual channel mode, can I at least get two streams at the same time instead of all 4 frames?

Yes, dual channel mode lets you stream two cameras simultaneously, but only in specific pairs: camera 0 and camera 1 together, or camera 2 and camera 3 together. You can’t mix across those pairs or get all 4 at once in that mode.

Another question — can the I2C address of the Cam Array be changed? I have a single I2C bus exposed and I want to integrate a second array hat onto the same bus. Both hats have the same address, so I can’t talk to them separately. Also, I’m now getting an error when trying to access video from the camera (screenshot attached). The I2C address issue itself is resolved, but the video access error is still there.

Let’s isolate that video access error. Can you run the Autofocus.py script from the example repo and check whether the same error logs appear when it tries to access the camera? That will help us tell whether the error is driver/access related or specific to your pipeline. The script is here: Jetson_IMX519_Focus_Example/Autofocus.py at master · ArduCAM/Jetson_IMX519_Focus_Example · GitHub

Quick environment update — I’m now running this on a Holybro Pixhawk Jetson baseboard with JetPack 6.2. Holybro confirmed the pin definitions follow the official Nvidia dev kit. The Arducam drivers install successfully and the camera kit is detected, but I can’t get a live stream from the quad-cam kit and the included IMX519 cameras, either as a kit or individually. Dual IMX219 cameras with Arducam drivers work fine on the same board. Any ideas?

To be upfront, ArduCAM camera modules can’t guarantee full functionality and compatibility on third-party carrier boards. Also, just to clarify, ArduCAM does not provide the imx219 camera driver on Jetson devices — what you’re using for the IMX219 is the native imx219 driver built into the Jetson kernel. That’s likely why the IMX219 works while the IMX519 does not. We recommend trying the IMX519 quad-cam kit on an official carrier board to confirm functionality.

That makes sense, and I understand third-party carrier boards aren’t guaranteed. Could you share the source code or binaries for the imx519 camera driver so I can build the drivers myself on my custom/third-party board and integrate the cameras?

Sure — I’ve sent the imx519 camera driver source code to you via private message, please check your messages. Note again that the imx219 driver referenced earlier is the Jetson native kernel driver, not an ArduCAM-provided driver. Let us know how the build goes on your custom board.