Arducam B0425 camera not detected on Raspberry Pi 3 B - libcamera no cameras available

Hi everyone. I have an Arducam B0425 (IMX327 native camera) on a Raspberry Pi 3 B, but I can’t get it detected by libcamera at all. When I try to start libcamera I get:

ERROR: *** no cameras available ***

I already followed the quick start guide and the troubleshooting guide on the Arducam site, but the camera never worked. One thing I noticed is that my configuration doesn’t have the GL acceleration option mentioned in the guide, so I’m not sure if I missed something there or if that even matters.

For the IMX327 native camera, adding the dtoverlay line in config.txt should be enough to configure it. The GL acceleration option isn’t required for the camera itself, so don’t worry about that.

Could you reboot the Pi and run this, then paste the output here:

dmesg | grep imx

That will tell us whether the imx sensor driver actually got loaded.

I’m not home right now, but I’ll send the logs this afternoon. Could you list exactly which outputs you need so I can grab them all at once?

Sure, please run these and paste the outputs:

dmesg | grep imx
cat /boot/firmware/config.txt
cat /boot/config.txt
ls /dev/video0

Together these will show whether the imx driver loaded, what overlay lines are configured, and whether /dev/video0 actually exists.

Okay, here’s what I got.

dmesg | grep imx returned nothing at all - just an empty line.

cat /boot/firmware/config.txt shows this in the [all] section:

dtoverlay=imx462dtoverlay=imx290,clock-frequency=37125000

cat /boot/config.txt says the file shouldn’t be edited and to use /boot/firmware/config.txt instead.

ls /dev/video0 returned nothing, so /dev/video0 doesn’t exist. But ls /dev/video* lists these:

/dev/video10
/dev/video11
/dev/video12
/dev/video13
/dev/video14
/dev/video15
/dev/video16
/dev/video18
/dev/video20
/dev/video21
/dev/video22
/dev/video23
/dev/video31

Thanks, that’s helpful. I can already see a problem. It looks like there are two dtoverlay lines for cameras in your config - imx462 and imx290. The Pi can’t determine which camera module is actually connected when both overlays are present, so the driver never loads and /dev/video0 never gets created.

Could you paste the full contents of /boot/firmware/config.txt so we can see the exact layout?

Here’s the whole file:

For more options and information see

http://rptl.io/configtxt

Some settings may impact device functionality. See link above for details

Uncomment some or all of these to enable the optional hardware interfaces

dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

Enable audio (loads snd_bcm2835)

dtparam=audio=on

Additional overlays and parameters are documented

/boot/firmware/overlays/README

Automatically load overlays for detected cameras

camera_auto_detect=1

Automatically load overlays for detected DSI displays

display_auto_detect=1

Automatically load initramfs files, if found

auto_initramfs=1

Enable DRM VC4 V3D driver

dtoverlay=vc4-kms-v3d
max_framebuffers=2

Don’t have the firmware create an initial video= setting in cmdline.txt.

Use the kernel’s default instead.

disable_fw_kms_setup=1

Run in 64-bit mode

arm_64bit=1

Disable compensation for displays with overscan

disable_overscan=1

Run as fast as firmware / board allows

arm_boost=1

[cm4]

Enable host mode on the 2711 built-in XHCI USB controller.

This line should be removed if the legacy DWC2 controller is required

(e.g. for USB device mode) or if USB support is not required.

otg_mode=1

[cm5]
dtoverlay=dwc2,dr_mode=host

[all]

dtoverlay=imx462dtoverlay=imx290,clock-frequency=37125000

That confirms it. At the bottom you have:

dtoverlay=imx462dtoverlay=imx290,clock-frequency=37125000

This is actually two overlay sentences merged together on one line. The Pi ends up with both the imx462 and imx290 overlays present, so it can’t tell which camera module is connected and the sensor never gets initialized.

For the B0425 / IMX327, you need to remove the incorrect part. Edit /boot/firmware/config.txt and delete this:

dtoverlay=imx462

Keep only the correct line for your camera:

dtoverlay=imx290,clock-frequency=37125000

After that, reboot and check with ls /dev/video0 and dmesg | grep imx again.

Thanks, it worked. It was a typo. The camera is detected now.

Since it’s working, I have a follow-up question. I want to restream the camera image on my local network - basically use this camera module plus the Raspberry Pi as a remote WiFi security camera. Is there a recommended demo or setup for that?

Glad the camera is detected now. As for the security camera use case, we don’t currently have a demo that covers exactly that requirement.

Just to explain what I’m trying to do: the IMX327 works fine with the libcamera application and the low-light image is really good. But my goal is a security camera. I originally planned to run MotioneyeOS like I do with my other Raspberry Pi cameras, but the camera wasn’t recognized. I’ve tried several pieces of software to capture video and stream RTSP to an NVR (Frigate or Motioneye), but they all have issues reading the output format from this camera. Right now only libcamera can display the image.

The only workaround I found is streaming the whole desktop with ffmpeg and mediamtx while libcamera is open, but it’s extremely slow - basically useless. Any ideas?

I understand the situation. To set expectations, as the hardware vendor our responsibility is making sure the camera works with the Raspberry Pi through standard interfaces like libcamera. Integrating it into a specific security/NVR solution is outside our scope, so we can’t provide direct support for third-party software like MotioneyeOS or Frigate.

The core issue here is that those third-party applications don’t support the libcamera/IMX327 output, which is why the camera only works through libcamera itself.

A few options you could explore:

  1. Contact the developers of the security software and ask if they plan to support libcamera or the IMX327 sensor.
  2. Look at open-source projects that already support libcamera and build the security camera setup around one of those.
  3. If you have programming experience, write a custom solution using the libcamera API and feed the stream into your NVR yourself.

There isn’t a simple config fix on our side for this one, unfortunately - it depends on the software ecosystem supporting libcamera.