Arducam B0444 IMX462 camera fails to start streaming on Raspberry Pi 4 (Bookworm 64-bit)

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.

Sure, here’s what I get from dmesg:

[ 9228.775443] imx290 10-001a: Error writing reg 0x303a: -5
[ 9228.775497] imx290 10-001a: Could not set init registers
[ 9228.775502] imx290 10-001a: Start stream failed
[ 9228.775524] unicam fe801000.csi: stream on failed in subdev

Also attaching a screenshot of the full terminal output:

imx462-error.jpeg

Weird thing is I’m seeing “imx290” in there — that’s not even the right sensor, is it?

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:

  1. Edit /boot/firmware/config.txt and replace dtoverlay=imx462 with dtoverlay=arducam-pivariety
  2. Reboot the Pi so the new overlay takes effect

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:

https://docs.arducam.com/Raspberry-Pi-Camera/Pivariety-Camera/Libcamera-User-Guide/#getting-started

Once you’ve gone through the installation, reboot one more time and test with:

rpicam-still

That should give you a clean capture without the streaming error.

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!