ArduCam IMX219 8MP wide angle camera not working on Jetson Nano with imx219_v2.0.6 driver

Hi everyone, I’m stuck with an ArduCam IMX219 8MP 1/4 inch wide angle camera (ArduCam B0179, SKU ACM-20191) that I just cannot get working on my Jetson Nano. I’ve never managed to get a single frame out of it. The commands from the instruction manual don’t work, the command support gave me doesn’t work either, and nvgstcapture-1.0 actually crashes the whole system. The weird part is my Raspberry Pi 2 camera works perfectly on the same Nano, so the board itself seems fine. Has anyone run into this before?

Sorry to hear that. Let’s start with a few details so we can narrow this down. Can you confirm the platform (I’m assuming Jetson Nano) and which driver version is loaded for the sensor? Also, run this and paste the output here:

dmesg | grep -i imx219

That will tell us whether the sensor is even being detected.

Sure. Platform is an NVIDIA Jetson Nano, and the sensor driver is the tegracam imx219 driver, version 2.0.6. The camera is the ArduCam IMX219 8MP 1/4" wide angle for Jetson Nano, model B0179. Here’s the dmesg output:

[ 1.336871] imx219 7-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.361691] imx219 8-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.385052] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[ 1.385176] imx219 8-0010: board setup failed
[ 1.385258] imx219: probe of 8-0010 failed with error -121
[ 1.537796] vi 54080000.vi: subdev imx219 7-0010 bound
[ 720.095312] imx219 7-0010: imx219_write_reg: i2c write failed, 0x160 = 9
[ 730.348410] imx219 7-0010: Error writing mode

Thanks. The important line here is:

vi 54080000.vi: subdev imx219 7-0010 bound

That means the camera module was detected successfully on bus 7 at address 0x10 and bound to the VI, so the nvarguscamerasrc pipeline should be able to talk to it.

The 8-0010 errors are for the second I2C address and are expected when only one camera is connected - those can be ignored. The ‘imx219_write_reg: i2c write failed, 0x160 = 9’ and ‘Error writing mode’ lines around 720s look like something tried to program the sensor and failed. What commands have you actually tried so far?

I’ve thrown a lot at it. The support command I was given is this one:

gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! ‘video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12’ ! nvvidconv flip-method=0 ! ‘video/x-raw,width=960, height=720’ ! nvvidconv ! nvegltransform ! nveglglessink -e

I also tried a v4l2 command I found online (screenshot attached), the command from the instruction manual (screenshot attached too), and nvgstcapture-1.0 which crashes the system every time. On top of that I’ve flashed the Jetson from scratch and also tried older JetPack versions, still nothing. The Raspberry Pi 2 camera works with no issues on the same setup.

Okay, so you’ve tried the right nvarguscamerasrc command as well. A couple of questions: when you ran that exact gst-launch-1.0 command, what output did you get? Did it hang, or print an error? And what did the v4l2 and manual commands look like? A lot of guides use the wrong sensor_id or try to access the camera through v4l2, which won’t work properly for this sensor on the Nano.

The gst-launch command with sensor_id=0 was one of the first things I tried, and it just didn’t produce a picture - I think it errored out rather than hanging. The v4l2 command came from some blog post, and the manual command is basically what’s printed in the paper manual that came with the camera. I don’t have the exact terminal outputs handy right now, but I attached screenshots earlier. nvgstcapture-1.0 is the worst one - it hard crashes the Nano.

Let’s go back to the dmesg log. The line ‘vi 54080000.vi: subdev imx219 7-0010 bound’ is the key - the sensor IS detected at bus 7, address 0x10, which maps to sensor_id=0. So the nvarguscamerasrc pipeline is the correct way to access it. The commands in the manual, most v4l2 tutorials, and nvgstcapture are what’s leading you down the wrong path, because they don’t address the sensor the way the Nano’s VI expects.

Please run this exact pipeline:

gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! ‘video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12’ ! nvvidconv flip-method=0 ! ‘video/x-raw,width=960, height=720’ ! nvvidconv ! nvegltransform ! nveglglessink -e

The critical part is nvarguscamerasrc sensor_id=0 - not the manual’s command and not v4l2/nvgstcapture. If this still fails, post the exact terminal output from this command and we’ll dig into that specific error.