Hey everyone, having some trouble getting my Arducam B0444 (the 2MP IMX462 model) working on a Raspberry Pi 4 running 64-bit Bookworm OS.
I added dtoverlay=imx462 to /boot/firmware/config.txt and rebooted, but whenever I try to capture an image with either libcamera-still or rpicam-still, I get this:
ERROR V4L2 v4l2_videodevice.cpp:1994 /dev/video0[13:cap]: Failed to start streaming: Input/output error
Camera is connected properly as far as I can tell. Anyone seen this before?
That I/O error usually points to a communication problem between the Pi and the sensor. Can you run sudo dmesg | tail right after attempting a capture and paste what you see? The kernel logs should give us a better idea of what’s failing.
That’s exactly the problem. The kernel is loading the imx290 driver instead of the proper IMX462 driver, and that’s why those register writes are failing — the imx290 driver doesn’t know how to talk to an IMX462 sensor, so you’re getting -5 (I/O error) on register 0x303a.
The root cause is the device tree overlay you’re using. dtoverlay=imx462 in your config.txt is forcing the wrong driver. For the Arducam B0444 IMX462, you need to use the arducam-pivariety overlay instead.
Here’s what to do:
Edit /boot/firmware/config.txt and replace dtoverlay=imx462 with dtoverlay=arducam-pivariety
Okay, that makes sense. I’ll switch the overlay and reboot. But do I also need to install anything else? I’ve seen mentions of an Arducam-specific libcamera package floating around.
Yes, good catch — after fixing the overlay, you’ll need the Arducam-flavored libcamera build. The stock libcamera doesn’t include the tuning files and support for the pivariety camera modules.
Follow the getting-started section in the official guide here:
That did it! Switched to dtoverlay=arducam-pivariety, rebooted, went through the libcamera install guide, and rpicam-still works perfectly now. No more imx290 errors in dmesg either.
For anyone else hitting this — if you see imx290 in your kernel logs when you’re using an IMX462 camera, double-check your overlay. The Arducam module definitely does not want dtoverlay=imx462. Thanks for the help!