Cannot get Arducam B0397 camera image on Jetson Xavier NX after Jetpack 4.6.2 downgrade

Been fighting this for a couple of days now. I have an Arducam B0397 camera on a Jetson Xavier NX dev kit and I can’t get any image out of /dev/video0. gstreamer doesn’t show anything, and other capture programs fail too. The device node is there but no frames ever come through. Anyone seen this before?

Which Jetpack version are you running, and how did you configure the board? On these kits /dev/video0 usually only appears if the right camera device tree is selected, so that’s a good first thing to check.

I tried Jetpack 5.0.2 and 5.2. I configured the board with jetson-io.py. /dev/video0 only shows up when I select ‘imx477 dual’. I also tried switching the Arducam hat modes with i2cset, but that didn’t change anything.

Can you post the exact gstreamer command and the errors it prints? The video0 node being present is a good sign, but the buffer errors will tell us whether the sensor is actually streaming.

Sure. When I open the camera with gstreamer I get: nvbuf_utils: dmabuf_fd -1 mapped entry NOT found, followed by threadExecute:694 NvBufSurfaceFromFd failed. It stops right there.

That NvBufSurfaceFromFd failure usually shows up when the sensor isn’t delivering buffers to the pipeline, meaning the driver isn’t really talking to the camera. Have you run the Arducam driver installer for the IMX477? If so, paste the full output.

I ran the install script and it fails with: Cannot find the corresponding deb package, please send the following information to [email protected]. It then prints Kernel version: 5.10.104-tegra-35.1.0-20220810203728 and Jetson type: NVIDIA Jetson Xavier NX Developer Kit.

That kernel version is the clue. The installer looks for a deb package matching your kernel, and there isn’t one for 5.10.104-tegra-35.1.0-20220810203728. So that Jetpack/kernel combination isn’t supported by the camera driver package. You’d need to use a Jetpack version from the supported list rather than trying to force it on 5.x.

I downgraded to Jetpack 4.6.2 (R32.7.2). The imx477_stereo install script now completes without the deb error. But I still get no image. I ran dmesg | grep -E ‘imx477|imx219|arducam’ and it’s probing the imx219 driver and failing — I don’t see imx477 at all.

Can you paste the exact dmesg lines? The -121 errors matter because they tell us whether the sensor is answering on I2C.

Here’s what I got:
[ 4.463544] imx219 9-0010: tegracam sensor driver:imx219_v2.0.6
[ 4.487155] imx219 9-0010: imx219_board_setup: error during i2c read probe (-121)
[ 4.487263] imx219 9-0010: board setup failed
[ 4.487339] imx219: probe of 9-0010 failed with error -121
[ 4.487729] imx219 10-0010: tegracam sensor driver:imx219_v2.0.6
[ 4.511016] imx219 10-0010: imx219_board_setup: error during i2c read probe (-121)
[ 4.511115] imx219 10-0010: board setup failed
[ 4.511203] imx219: probe of 10-0010 failed with error -121

I also went through the troubleshooting page at Troubleshooting - Arducam Wiki but it doesn’t explain why imx219 is being probed. The install script is supposed to install the imx477 driver, isn’t it? Why is imx219 even showing up?

-121 is a remote I/O error on the I2C read, so the kernel tried to read the sensor ID and got no response on those addresses. The imx219 entries at 9-0010 and 10-0010 mean the device tree still has imx219 nodes there, which doesn’t match your camera. But stepping back, the earlier installer failure is the bigger signal: there was no deb package for kernel 5.10.104-tegra-35.1.0-20220810203728, which points to the Jetpack version being incompatible with the camera driver. That’s the root cause to fix first.

Okay, that makes sense. So the 5.x kernel was never going to work. But I’m now on 4.6.2 and still hitting those imx219 -121 errors. What combination should I actually be on, and how should I reinstall cleanly?

Check the supported list for Arducam Jetson cameras here: Introduction to Arducam Jetson Cameras - Arducam Wiki and use a Jetpack version that’s listed for your camera. Then install the driver following the imx477 quick-start: Quick start - Arducam Wiki. On a supported Jetpack the correct driver/dtb should load instead of imx219. If the -121 I2C errors still show up after that, the hat mode or the camera connection would be the next thing to check.