Hi everyone, I’m running into a weird issue with my setup and hoping someone can point me in the right direction.
I’ve got two B0265R (IMX477) camera boards connected to the Arducam Multi-Camera Adapter (the 4-channel version) on a Raspberry Pi. I’m using the official Python code from the repo — specifically the Multi_Camera_Adapter_V2.2_python folder under RaspberryPi/Multi_Camera_Adapter/Multi_Adapter_Board_4Channel/.
The problem is that both cameras are being treated as a single device. Instead of getting two independent 4056x3040 images, I’m getting one stitched 4056x3040 frame. It’s like the system sees them as one sensor rather than two separate ones.
Has anyone else seen this behavior? Am I missing a configuration step somewhere?
Thanks for the detailed description. That’s an unusual one — when you say “stitched,” do you mean the two camera views are side-by-side in a single frame, or is it something else?
Also, could you confirm which script exactly you’re running from that folder? There are a few in there and it’ll help narrow things down. And just to check — when you run libcamera-hello --list-cameras, how many devices show up?
Yeah, it’s a single 4056x3040 frame that looks like it contains both camera views combined somehow — not side-by-side exactly, more like they’ve been merged into one image sensor readout. It’s hard to describe but it’s definitely not two separate captures.
I was following the documentation article about this adapter and the blog post says the output should be split into independent frames for each camera. I’ve attached a screenshot of the section I’m referring to — it clearly describes split output, but that’s not what I’m seeing at all.
As for libcamera-hello --list-cameras, it only shows a single device, which tracks with what I’m experiencing. It’s like both cameras are hiding behind one /dev/video node.
Ah, okay — I think I see what’s going on here, and unfortunately the documentation you’re looking at is leading you down the wrong path for your specific hardware.
The Multi_Camera_Adapter_V2.2_python script and the blog post you’re referencing were built around older v4l2 drivers that handled the multi-camera splitting at the driver level. Those v4l2 drivers haven’t been maintained for nearly 4 years now and they’re completely incompatible with current Raspberry Pi OS images. On modern setups, those drivers aren’t present, so the two cameras end up appearing as a single combined device — which is exactly the behavior you’re seeing.
The B0265R with this adapter doesn’t use that old driver approach. Instead, it operates in a single-channel mode where you manually switch between cameras using I2C commands. Each camera still captures at full 4056x3040 resolution, but you have to switch channels between captures — they won’t run simultaneously through the old v4l2 path.
That explains a lot, thank you. So the article I was following is basically for a deprecated driver stack — that’s frustrating but at least I know I’m not going crazy.
So if I understand correctly, I can still get independent 4056x3040 images from each camera, I just have to switch between them manually with I2C commands before each capture. Could you walk me through the exact commands? I’m not super familiar with i2cset and I want to make sure I don’t mess up the addressing.
Happy to walk you through it. The I2C commands are pretty straightforward once you know the channel mapping. One thing to note upfront: try bus 10 first, but if you get a “device not found” error, switch to bus 11 — it can vary depending on your Pi model and OS version.
Here’s the full sequence for capturing from both cameras:
Capture from RX0 (first camera):
Switch to the RX0 channel:
i2cset -y 10 0x24 0x24 0x02
Then grab the frame:
rpicam-still -t 5000 -o test1.jpg
Capture from the other camera:
Switch to the second channel:
i2cset -y 10 0x24 0x24 0x12
Then capture:
rpicam-still -t 5000 -o test2.jpg
That’ll give you two independent 4056x3040 JPEGs, one from each camera. The -t 5000 gives you a 5-second preview before the capture — you can reduce that if you don’t need it. Just be aware that since you’re switching channels manually, there’s no hardware synchronization between the two captures; each frame is taken at a different moment in time.
That worked perfectly — I can now capture from each camera independently. The bus 10 addressing worked on my Pi 4 without any issues. Both images are coming through at full 4056x3040, which is exactly what I was after.
One follow-up question though: you mentioned there’s no hardware synchronization between the captures. Is there any way to achieve synchronized capture from both cameras at full resolution? My application really needs both cameras to trigger at the same moment. Is that something the adapter hardware is even capable of, or is it a fundamental limitation of the single-channel design?
Glad the I2C switching is working for you. Unfortunately, synchronized dual full-resolution capture at 4056x3040 isn’t something that’s achievable with the standard off-the-shelf setup you have right now — it’s a limitation of the single-channel switching architecture. The adapter can only route one camera’s data stream to the Pi’s CSI interface at a time, so simultaneous capture at full res isn’t possible through the standard software stack.
That said, synchronized multi-camera capture is something that can be explored as a custom engineering solution. If your application genuinely requires hardware-synchronized full-resolution capture from both sensors, I’d suggest reaching out to [email protected] — they can discuss whether a custom firmware or hardware configuration could meet your requirements. It’s not something covered by the standard product line or public documentation, but the team there can let you know what’s feasible.