Hi everyone, I’m setting up an Arducam B0331 camera array HAT on a Raspberry Pi 4B and I keep getting ‘no cameras available’. I followed the pivariety quick-start guide and previously ran an IMX219 multicamera kit on this same Pi without issues, so I’m not sure what I’m missing.
Environment:
Pi 4B, Debian GNU/Linux 11 (bullseye)
kernel: Linux vmRpi 6.6.47-v8+ #1792 SMP PREEMPT Thu Aug 22 15:11:43 BST 2024 aarch64 GNU/Linux
libcamera-still ends with:
[0:03:03.755878899] [1819] INFO Camera camera_manager.cpp:297 libcamera v0.0.0+4367-ad9428b4
ERROR: *** no cameras available ***
Thanks for the detailed logs. The key lines are:
arducam-pivariety 10-000c: pivariety_read: Reading register 0x103 failed
arducam-pivariety 10-000c: probe failed
Even though I2C sees 0x24, the driver can’t read register 0x103 during probe, so no camera node gets created. The ‘Fixed dependency cycle(s)’ messages are usually harmless noise.
Could you attach a few photos of the hardware connections (Pi side and the camera/HAT side)? Also please run our bug report tool and attach the output:
Thanks, got them. While I review the report, one thing I spotted in the config you pasted earlier - there are duplicate entries. camera_auto_detect appears twice (0 and 1), and dtoverlay=arducam-pivariety is listed twice. Could you clean those up, reboot, and re-run the bug report tool so I’m looking at a clean report?
Done. I removed the duplicate camera_auto_detect and the second dtoverlay=arducam-pivariety, rebooted, and re-ran the tool. New arducam-bug-report.txt attached. Still getting ‘no cameras available’ though.
Thanks for the updated report and photos. Based on what I’m seeing, my main suspect now is the 15-22 pin FPC cable between the camera and the board/HAT. A marginal cable would explain both the register 0x103 read failure and only 0x24 showing on I2C. Do you have another 15-22 pin cable you can swap in to test?
Some progress but now a different problem. I realized I’d mixed up my UC-512 revD1 and UC-512 rev-D2 boards, so I switched over to the rev D2 board. With that one, libcamera-hello --list-cameras now detects the board. Earlier I could actually view from 3 cameras, but right now I can’t view any - it fails with a camera frontend timeout.
Output:
[0:01:09.494929197] [1136] INFO Camera camera_manager.cpp:297 libcamera v0.0.0+4367-ad9428b4
[0:01:09.526535753] [1138] WARN CameraSensorProperties camera_sensor_properties.cpp:261 No static properties available for ‘arducam-pivariety’
[0:01:09.526581216] [1138] WARN CameraSensorProperties camera_sensor_properties.cpp:263 Please consider updating the camera sensor properties database
[0:01:09.542965623] [1138] ERROR IPAProxy ipa_proxy.cpp:149 Configuration file ‘arducam-pivariety.json’ not found for IPA module ‘rpi/vc4’
[0:01:09.712145716] [1138] INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/arducam_pivariety@c to Unicam device /dev/media4 and ISP device /dev/media1
[0:01:09.712210586] [1138] INFO RPI pipeline_base.cpp:1101 Using configuration file ‘/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml’
[0:01:09.713228438] [1136] INFO Camera camera.cpp:1033 configuring streams: (0) 710x400-YUV420
[0:01:09.828276049] [1138] INFO RPI vc4.cpp:572 Sensor: /base/soc/i2c0mux/i2c@1/arducam_pivariety@c - Selected sensor format: 5120x800-SBGGR10_1X10 - Selected unicam format: 5120x800-pBAA
[0:01:11.134525725] [1138] WARN V4L2 v4l2_videodevice.cpp:2007 /dev/video0[13:cap]: Dequeue timer of 1000000.00us has expired!
[0:01:11.134605168] [1138] ERROR RPI pipeline_base.cpp:1356 Camera frontend has timed out!
[0:01:11.134619112] [1138] ERROR RPI pipeline_base.cpp:1357 Please check that your camera sensor connector is attached securely.
[0:01:11.134645704] [1138] ERROR RPI pipeline_base.cpp:1358 Alternatively, try another cable and/or sensor.
I don’t have 4 new FPC cables to test. Will the array still work if one camera is disconnected? I’m wondering if a single bad camera can take down the whole chain.
Good progress - rev D2 is indeed the right board for these cameras, and the camera is now registering (Unicam /dev/media4, ISP /dev/media1). The frontend timeout on /dev/video0 after the dequeue timer expires means the sensor isn’t returning frames, which usually points to a loose connector or a bad cable/sensor in the chain. The ‘arducam-pivariety.json not found’ line is just an IPA config warning, not the blocker.
First, try reseating each sensor connector one at a time, and if you have any spare cable/sensor, swap one in. To your question: the array generally expects all camera positions populated, so a disconnected or failing camera can definitely cause this kind of capture timeout on the whole array.
If that doesn’t narrow it down, I can take a look directly. I’ve sent you the remote support details and scheduling info via private message - please check your messages and reply with a time that works.