Arducam B0350 stereo camera libcamera/picamera2 errors and low FPS on Raspberry Pi 4B

Hi, I picked up an Arducam 8MP Synchronized Stereo Camera Bundle Kit (SKU B0350, the fisheye lens version) for a stereo fisheye project. I’m on a Raspberry Pi 4B with 8GB RAM now, I was on a Pi 3B with Bullseye before. The camera is supposed to do 2560x720@37fps but I can’t get it working at all. Following the wiki, when I try to install libcamera-dev / libcamera-app I get errors, and libcamera-still just errors out. Installing the libcamera mod seems to rip out libcamera0 by default. Honestly the docs are confusing and I’m not sure the links are even up to date anymore. Any ideas where to start?

Hey, happy to help. Can you first tell me exactly which commands you ran and the full error output you got? Also confirm the OS image you’re using right now, since you moved from the Pi 3B to the Pi 4B.

Sure. Commands:

libcamera-still -t 5000 -o test.jpg
pip3 install python3-picamera2

What I get:

Repository is broken: libcamera-dev:armhf (=0.0.8) has no size information

and

bash: /usr/bin/libcamera-still: no such file or directory

libcamera-hello also won’t run, it says it can’t find the .so file. The synchronization board gets detected but the cameras themselves don’t show up. Installing the Arducam libcamera mod removes libcamera0 by default which seems wrong to me?

That’s actually expected behaviour, not a bug. libcamera0 IS our libcamera-dev package - we’ve patched it to add some extra features, so it has to remove/override the stock libcamera0 first. If you install it while the original packages are still around you get exactly the dependency conflicts you’re seeing. Please make sure the original libcamera0 / libcamera-dev packages are removed first, then redo steps 1 and 2 from the wiki (driver + the Arducam libcamera) and tell me what happens.

OK, removed the original packages and redid steps 1 and 2 (drivers + Arducam libcamera). The camera works now! libcamera-still gives me an actual image.

Nice, that’s a good sign. Now move on to step 3 of the tutorial - the picamera2 part. Paste the exact error if it fails.

Went through step 3 with picamera2 exactly like the tutorial. It errors out with:

libcamera has no attribute Sycc

So Python can’t even talk to the camera.

That Sycc attribute error usually means the picamera2 you have doesn’t match the patched libcamera. Try:

pip3 install python3-picamera2

and paste the output.

That fails too. It won’t install because of a conflict in package libcamera-dev 0.0.8. And after reinstalling the drivers again, libcamera-hello can’t run - can’t find the .so file once more.

This is consistent with the libcamera0 situation I mentioned - your environment has both the stock packages and the Arducam ones fighting each other. Can you run:

dpkg -l | grep libcamera

and paste the full list of what’s installed?

Here’s what I get - it’s a mess, multiple libcamera packages installed at once. I did some more debugging and got picamera2 to actually run, but now the FPS is way too low. The stream is basically static, it doesn’t move at all. Not usable for anything real.

Let’s separate the two problems - getting it to run, and the frame rate. What resolution and framerate are you requesting? The bundle should handle 2560x720. Also, what does your example code set for FPS?

The example code ignores the spec - I set FPS=60 but it only outputs 3-4 FPS. I tried streaming at 2560x720 and it failed, but 1600x600 works fine. So it seems resolution-dependent somehow.

Interesting. Check what libcamera packages are actually installed with dpkg -l | grep libcamera and note the exact versions. If the environment state is off, sometimes just reopening the terminal clears it - then try again. Let me know what the list shows.

I reinstalled the drivers on Bullseye OS and I still can’t access the camera at all. The libcamera driver from the repository doesn’t work and it actually messes up my original files. The 2560x720 stream still fails too.

OK, here’s where we’ve landed. The root cause is the naming: libcamera0 is the same thing as Arducam’s libcamera-dev for this bundle - we’ve modified it with extra features, so it has to remove/override the stock libcamera0 dependency first. If the original packages are still present, everything conflicts (the broken repo message, the missing libcamera-still binary, the Sycc attribute error, the picamera2 install conflict). The fix is to remove the original dependencies first before installing the Arducam one. If the environment is otherwise healthy, reopening the terminal can also clear stale state - then try again.

Ran dpkg -l | grep libcamera after cleaning - it lists only the Arducam packages now, no duplicate libcamera0. Reopened the terminal and step 3 finally ran.

Great, so to sum up what worked: (1) uninstall the stock libcamera0 / libcamera-dev first, because libcamera0 = our modified libcamera-dev and the original dependencies have to go; (2) verify with dpkg -l | grep libcamera that only one set is installed; (3) if the environment is in a good state, reopen the terminal and retry. That gets libcamera-still and picamera2 working. The 2560x720 stream still fails while 1600x600 works, and the FPS stays at 3-4 instead of the stated 2560x720@37fps - that part is still open. If you want, post your streaming code and the exact resolution/FPS you’re requesting and we can dig into that side next.