Hi all. I think I accidentally bought the wrong Arducam 477M CS-mount camera. The model I have is B0249, which I’ve since realized is the Jetson Nano/Xavier NX version, but I’m trying to run it on a Raspberry Pi 5. So far it has never worked and honestly I haven’t done any real troubleshooting yet. Is it possible to get this thing working on the Pi, or is the Jetson variant just incompatible?
Let’s not jump straight to the variant difference yet. The first thing to sort out is whether the camera driver is even enabled on the Pi. On a Raspberry Pi the camera stack isn’t enabled by default in the config file, and if that’s off, no camera module will show up regardless of which variant you have. Can you check your config.txt for the camera auto-detect / dtoverlay entries? That’s step one before we talk about any mechanical or electrical differences between the Jetson and Pi variants.
I haven’t touched the config at all, so it’s probably whatever the default is. So does the wrong variant actually matter, or is it just the driver being disabled?
It’s both. The immediate reason nothing works is that the camera driver isn’t enabled in your Raspberry Pi config file. Separately, yes, you do have the Jetson variant (B0249) instead of the Raspberry Pi variant. But the first step is identical for either one: enable the camera driver in the config file. Follow the camera software documentation here and enable the driver: https://www.raspberrypi.com/documentation/computers/camera_software.html . Once that’s done and it actually shows up, we can look at any differences between the variants.
Good news, that did it. I enabled the camera driver in the config file as instructed and the camera is now working on the Pi 5. So the Jetson variant can work after all.
But now I’m running into a different issue: I’m limited to under 30 FPS in the larger non-binned modes. I really want 12MP at 30 FPS. From what I can determine, both the Arducam module and the Pi 5 interface can support 12MP @ 30 FPS, but the default drivers don’t seem to make use of the higher data transfer modes. Has anyone customized the IMX477 driver to use 4-lane CSI instead? I’d appreciate any instructions.
Right, the default IMX477 driver setup is fairly conservative about lane usage and data rate, so even though the hardware can handle it, the driver won’t take advantage of the higher transfer modes unless it’s configured to. Switching to 4-lane CSI is one of the common tweaks for exactly this kind of throughput problem. To point you in the right direction: are you running libcamera or the legacy camera stack, and what entries do you currently have in your config.txt? The lane configuration lives in different places depending on which stack you’re on.
I’m on libcamera with a standard Pi 5 setup, camera auto-detect enabled, nothing custom beyond that.
Got it. Just to wrap up where this stands: the original ‘won’t work’ problem is solved. The issue was the camera driver being disabled in the config file, and enabling it got the B0249 working on the Pi 5. The remaining problem is the FPS limitation in the larger non-binned modes. It looks like you’re right that the hardware and interface can do 12MP @ 30 FPS, but the driver doesn’t use the higher data transfer modes by default, so this needs a driver customization to switch to 4-lane CSI. That part is still open. I’d suggest looking at the IMX477 driver’s lane and data rate configuration for libcamera on the Pi 5 and testing a 4-lane setup.