Hi everyone. I’m stuck with an Arducam B0425 2MP Ultra Low Light STARVIS IMX327 Motorized IR-CUT Camera on a Raspberry Pi 4B. The camera is not detected at all — it doesn’t work under libcamera, and raspivid doesn’t see it either. I also tried it on a CM4 and got the same result. I followed the quick start guide at Quick start - Arducam Wiki but no luck so far.
Welcome. Let’s start with the basics. Can you post your current /boot/config.txt camera-related lines? Specifically whether camera_auto_detect is enabled, whether legacy camera support is on or off, and which dtoverlay you added. Also run:
vcgencmd get_camera
and
libcamera-still --list-cameras
and paste the output.
Here’s what I did on the config side:
- Turned off legacy mode in raspi-config
- Ran sudo apt-get update and sudo apt-get upgrade
- Added dtoverlay=imx327 to config.txt
- Commented out #camera_auto_detect=1
- Also tried adding dtparam=i2c_vc=on, but it made no difference
I tested on both a Raspberry Pi 4B and a CM4, and the camera is not detected on either one.
Thanks. Now let’s see what the system reports when you try to detect and capture. Run vcgencmd get_camera and libcamera-still --list-cameras, then also try an actual capture with libcamera-still -t 5000 -n -o test.jpg and paste the full output.
Here you go.
vcgencmd get_camera:
supported=0 detected=0, libcamera interfaces=0
libcamera-still --list-cameras:
No cameras available!
libcamera-still -t 5000 -n -o test.jpg:
libcamera v0.0.4+22-923f5d70
WARN CameraSensorProperties: No static properties available for ‘imx327’
WARN CameraSensorProperties: Please consider updating the camera sensor properties database
ERROR IPAProxy ipa_proxy.cpp:149 Configuration file ‘imx327.json’ not found for IPA module ‘raspberrypi’
ERROR IPARPI raspberrypi.cpp:234 Could not create camera helper for imx327
ERROR RPI raspberrypi.cpp:1352 Failed to load a suitable IPA library
ERROR RPI raspberrypi.cpp:1277 Failed to register camera imx327 10-001a: -22
ERROR: *** no cameras available ***
Those libcamera errors are useful. It’s failing to find imx327.json for the IPA module and can’t create a camera helper for imx327, so registration fails with -22. Let’s check the I2C side to see what the sensor is actually answering as. Please run:
sudo i2cdetect -y 0
sudo i2cdetect -y 10
sudo i2cdetect -y 1
and
dmesg | grep imx
and paste the outputs.
Outputs below.
i2cdetect:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – 0c – – –
10: – – – – – – – – – – UU – – – – –
20: – – – – – – – – – – – – – – – 2f
30: – – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – UU – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –
The UU at 0x1a only shows up when dtoverlay=imx327 is in config.txt. If I remove that overlay, the UU disappears, so the camera doesn’t seem to be getting detected properly.
dmesg | grep imx:
platform fe801000.csi: Fixed dependency cycle(s) with /soc/i2c0mux/i2c@1/imx290@1a
imx290 10-001a: 16-bit write to 0x301c failed: -121
imx290 10-001a: 24-bit write to 0x3020 failed: -121
imx290 10-001a: 24-bit write to 0x3018 failed: -121
imx290 10-001a: 24-bit write to 0x3020 failed: -121
imx290 10-001a: Consider updating driver imx290 to match on endpoints
This is telling. Notice dmesg keeps referencing imx290@1a and imx290 10-001a — not imx327. The I2C write failures with -121 are remote I/O errors, so the driver is trying to talk to the sensor but not getting valid responses. Combined with libcamera looking for imx327.json, it really looks like an overlay/driver mismatch: your config says imx327, but the kernel/driver side is trying to use imx290 for this sensor. I suspect dtoverlay=imx327 is wrong for this module and dtoverlay=imx290 may be the correct one.
To get a fuller picture, could you generate a bug report? Reboot, then run:
wget -O arducam-camera-bug-report https://github.com/ketai-dhr/arducam-camera-bug-report/releases/download/tools/arducam-camera-bug-report
chmod +x ./arducam-camera-bug-report
./arducam-camera-bug-report
This creates arducam-bug-report.txt in the current directory. I’ve sent you a private message with details on how to send that file over for analysis.
I generated the arducam-bug-report.txt and sent it over via private message as you asked.
Thanks, I’ve got the report. In the meantime, can you try changing the overlay to dtoverlay=imx290 in config.txt, reboot, and see if the camera shows up? Based on the dmesg output I think that’s the fix.
That fixed it! I changed dtoverlay from imx327 to imx290 and the camera now works. The manual I was following had said dtoverlay=imx327, so that part definitely needs correcting.
One more question — can this camera work with MMAL? I’m willing to do C/C++ programming if needed, since libcamera isn’t very efficient for my use case right now.
Great, glad it’s working. To confirm the root cause: the camera wasn’t working because the wrong device tree overlay was being used. This IMX327-based module needs dtoverlay=imx290, not dtoverlay=imx327. I’ve flagged the documentation so the manual gets corrected.
About MMAL: unfortunately this camera module does not support the legacy stack, so MMAL won’t work. You’ll need to use libcamera. With the correct overlay in place, libcamera should now load the imx290 data instead of looking for imx327.json.