IMX477 USB camera not working on Avermedia Jetson NX215B with Arducam kernel

Hi everyone. I’m trying to get an Arducam IMX477 with the USB interface working on an Avermedia Jetson NX215B board. We did all our development on a laptop and it was fine there, but now we’re moving to the Jetson NX and it’s not working. After installing the Arducam deb package, the MIPI camera mode works, but the USB mode just won’t come up. Has anyone run into this?

Welcome to the forum. Can you share a bit more about your setup? Which Jetpack/L4T version you’re on and exactly which Arducam package you installed would help. Also, when you say USB mode won’t come up, what do you actually see — no /dev/video device, or an error in dmesg?

Sure. We’re on Avermedia Jetpack and the package is arducam-nvidia-l4t-kernel_4.9.140-32.4.3-20200721164156_arm64_imx477.deb. The board is the Avermedia Jetson NX215B. Like I said, development was done on a laptop and we’re only now testing on the NX board. The IMX477 MIPI camera works, but the same camera over USB doesn’t show up at all.

First thing worth noting: that package you installed is built for MIPI camera support. For the USB/UVC interface you shouldn’t need that driver at all. Can you run lsusb and check if the device even shows up? Then plug it in and check dmesg for any UVC-related messages.

I ran lsusb and I don’t see the camera there. I also tried adding USB support in the arducam dtb, but the IMX477 USB interface is still failing. It’s strange because MIPI mode works fine with the deb installed.

Adding USB entries to the Arducam DTB won’t help here — that DTB is for the MIPI camera pipeline. Let’s see what the kernel is actually reporting. With the camera plugged in, can you run: dmesg | tail -50, and also ls /dev/video*? We need to figure out whether it’s a USB enumeration problem or something else before touching the kernel.

Okay, before I saw your reply I tried something more drastic. I attempted to modify the kernel and compile the package required for the USB camera, but the kernel crashes and fails to boot. The stock Arducam kernel boots fine with Avermedia Jetpack, but my modified one doesn’t. I’m getting the error shown in this screenshot.

Thanks for the detail. That error you’re hitting points to the UVC support you’re trying to build into the MIPI package. Here’s the key point: the IMX477 with a USB interface is a UVC camera. UVC cameras use the standard kernel UVC driver — they do not need an extra Arducam camera driver, and they definitely don’t need UVC support added to the MIPI package. Have you tried testing it on a clean Jetpack install without the Arducam deb?

I get what you’re saying, but we’ve been stuck on this for over a month now. Can you just include UVC video support in arducam-nvidia-l4t-kernel_4.9.140-32.4.3-20200721164156_arm64_imx477.deb? Every time I try to modify the kernel it crashes. We really need USB and UVC camera support added to that package.

I understand the frustration, but adding UVC support to the MIPI package would be the wrong fix. UVC support is already provided by the standard UVC driver that ships with the Jetpack/L4T kernel. If the camera isn’t enumerating over USB, the problem is likely at the USB level — power, cable, or the board’s USB host config — not a missing driver. Since it worked on the laptop, can you confirm the same cable/power setup and which USB port you’re using on the NX board?

It worked on the laptop during development, but on the Jetson NX board it just doesn’t appear. The issue has been pending for more than a month now. I’d still like UVC video support added to the package so we don’t have to keep hacking the kernel and dealing with these crashes.

To sum up the current conclusion: we won’t be adding UVC support to the MIPI package, because it doesn’t belong there. The arducam-nvidia-l4t-kernel_4.9.140-32.4.3-20200721164156_arm64_imx477.deb package is MIPI-specific. UVC functionality should come from the standard UVC driver in the kernel — UVC cameras do not need extra camera drivers installed. Since it works on the laptop but not the Jetson NX, the next step is to focus on USB enumeration (power, cable, host port config) rather than the kernel driver.