Two new Arducam 12MP B0262 cameras not working on Raspberry Pi 4 Bullseye with libcamera

Hi all — I’m trying to run two cameras at the same time on a Raspberry Pi 4 with the latest Raspberry Pi OS and I’m stuck.

With the original Raspberry Pi High-Quality cameras (also imx477 based) two cameras work fine. But with the Arducam 12MP (B0262) only one camera works at a time. I also have two older Arducam 12MP modules (PCB marked UC-698 Rev.B) that used to run together on the old OS, but the new cameras aren’t supported on that old OS anymore.

All 4 of the new Arducam 12MP cameras I have behave the same way — they just aren’t recognized by the OS, there’s no matching /dev/video handle. /dev/video0 does appear but I can’t grab an image from it (log below).

The cameras are definitely connected correctly, because the old cameras work when attached the exact same way.

Is there any way to use two of the new 12MP Arducams simultaneously?

Hi, sorry you’re running into this. Let’s narrow it down before guessing. Can you share:

  • Which Raspberry Pi OS image/version you’re on (Bullseye?) and whether you’re using the stock libcamera that ships with it
  • The exact camera model and the sensor / PCB marking
  • Output of dpkg -l | grep libcamera
  • Output of libcamera-raw --list-cameras
  • Output of libcamera-raw --camera 0 with a single new camera connected

Also: does one new camera work on its own, or is it only broken when you attach two? That distinction matters a lot here.

Sure, here’s everything.

Environment:

  • Raspberry Pi OS Bullseye (latest), tested on several Raspberry Pi 4 boards, hostname raspi4b
  • Camera: Arducam 12MP (B0262), imx477 sensor, PCB marked “UC-698 Rev.B”
  • Using the official libcamera that came with the OS, libcamera v0.0.0+3544-22656360

dpkg -l | grep libcamera:

ii  libcamera-apps                       0~git20220228+0dc5ea0-1          armhf        libcamera-apps
ii  libcamera-tools                      0~git20211020+f4070274-3         armhf        complex camera support library (tools)
ii  libcamera0:armhf                     0~git20220510+22656360-1         armhf        complex camera support library

libcamera-raw --list-cameras:

[0:01:27.857236314] [932]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:01:27.910902733] [933]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:01:27.911094118] [933]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:01:27.911258374] [933] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:01:27.971918706] [933]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media0
Available cameras
-----------------
0 : imx477 [4056x3040] (/base/soc/i2c0mux/i2c@1/imx477@1a)
    Modes: 'SRGGB10_CSI2P' : 1332x990 
           'SRGGB12_CSI2P' : 2028x1080 2028x1520 4056x3040

libcamera-raw --camera 0 (new camera, fails):

[0:01:44.957489293] [963]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:01:45.005798028] [964]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:01:45.005903490] [964]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:01:45.005989268] [964] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:01:45.059861487] [964]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media0
Stream configuration adjusted
[0:01:45.062498102] [963]  INFO Camera camera.cpp:1029 configuring streams: (0) 640x480-YUV420 (1) 2028x1520-SBGGR12_CSI2P
[0:01:45.063406523] [964]  INFO RPI raspberrypi.cpp:760 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
[0:01:45.847490727] [964] ERROR V4L2 v4l2_videodevice.cpp:1852 /dev/video14[15:cap]: Failed to start streaming: No such file or directory
ERROR: *** failed to start camera ***

Thanks, that’s useful. A few observations:

  • The sensor IS being detected and probed — imx477 10-001a gets registered to the Unicam device. So it’s not a wiring/I2C issue at that point.
  • It fails later, at streaming: /dev/video14[15:cap]: Failed to start streaming: No such file or directory.
  • The No static properties available for 'imx477' warning and the does not support test pattern modes error are normal noise for this sensor, they’re not the cause.

Can you also paste your current /boot/config.txt? In particular I want to see whether you have camera_auto_detect and any dtoverlay=imx477 line. And what does ls /dev/video* show?

Here’s the relevant part of /boot/config.txt:

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[all]

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

[cm4]
dtoverlay=dwc2,dr_mode=host

Still failing the same way. I’ve spent several hours on this. Why does it work with the old cameras and not the new ones when the PCB name is identical?

Found it — your config is missing the two entries the new camera needs:

  • camera_auto_detect=0
  • dtoverlay=imx477

Without those, the driver doesn’t bind the imx477 the way the new revision needs, and you end up with the exact Failed to start streaming symptom you’re seeing.

Please do this:

  1. sudo nano /boot/config.txt
  2. Change camera_auto_detect=1 to camera_auto_detect=0
  3. Add dtoverlay=imx477 under [all] (or [pi4])
  4. Save, then sudo reboot

After reboot run:

  • ls /dev/video*
  • libcamera-raw --camera 0

Also please generate a bug report and keep it handy: camera-bug-report -t 5 -o bug_new.txt -c "libcamera-still -t 1000 -o test.jpg" — it produces a txt file. Let us know how it goes after the reboot.

OK, added the entries and rebooted. Now a single new camera is detected and I can capture from it with libcamera-still -t 1000 -o test.jpg. Good progress, thanks.

But I still can’t get two of the new Arducams working together — with both connected, only one is recognized. And occasionally the single camera still throws the old error:

[0:07:04.510449726] [1376]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:07:04.564452754] [1377]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:07:04.564562735] [1377]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:07:04.564650623] [1377] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:07:04.634020989] [1377]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media0 and ISP device /dev/media1
Stream configuration adjusted
[0:07:04.636701659] [1376]  INFO Camera camera.cpp:1029 configuring streams: (0) 640x480-YUV420 (1) 2028x1520-SBGGR12_CSI2P
[0:07:04.637649247] [1377]  INFO RPI raspberrypi.cpp:760 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
[0:07:05.406416263] [1377] ERROR V4L2 v4l2_videodevice.cpp:1852 /dev/video14[15:cap]: Failed to start streaming: No such file or directory
ERROR: *** failed to start camera ***

The old UC-698 Rev.B camera on the same board works fine, no error:

[0:01:18.026822865] [921]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:01:18.075441987] [922]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:01:18.075547002] [922]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:01:18.075633018] [922] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:01:18.129027059] [922]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media0 and ISP device /dev/media1
Stream configuration adjusted
[0:01:18.131940871] [921]  INFO Camera camera.cpp:1029 configuring streams: (0) 640x480-YUV420 (1) 2028x1520-SBGGR12_CSI2P
[0:01:18.133700073] [922]  INFO RPI raspberrypi.cpp:760 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
Raw stream: 2028x1520 stride 3072 format SBGGR12_CSI2P

Also, the bug report generation spits this out before writing the file:

libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  155 ()
  Minor opcode of failed request:  1
  Serial number of failed request:  16
  Current serial number in output stream:  16

Bug report generated to bug.txt

I’m using the official libcamera that came with the OS, no modifications. Could you also tell me: will these new cameras work with the legacy camera stack / raspistill? Is there backward compatibility? And why do the new ones fail where old cameras with the same UC-698 Rev.B marking work?

Two separate things going on here, let me split them.

  1. Detecting/streaming a single new camera
    When it does fail, reseat the FPC cable on both ends first — a marginal connection gives exactly that /dev/video14 ... Failed to start streaming when the sensor is detected but the data link isn’t clean. Then test the camera on another Pi 4 with the same config, and ideally on a freshly flashed official Raspberry Pi OS image with no modifications. If it works there but not on one specific board, the issue moves with the board; if it fails everywhere with the correct config, the module itself is suspect.

  2. Legacy stack (raspistill)
    The new revision is built for the latest Bullseye + libcamera only. It cannot be used with the legacy camera stack enabled — it has to run through libcamera (libcamera-still, libcamera-raw, python, etc.). So no, there’s no raspistill backward compatibility for the new revision.

If you’d like, I can go through this live with you — I’ve sent the remote session details in a private message, just check your inbox.

Re-seated the cable and reflashed with the official image, no modifications. After that, one new camera works reliably. So the detection problem seems resolved.

The remaining problem is two new cameras at once. On this Pi 4:

  • two Raspberry Pi High-Quality imx477 cameras → both work
  • two Raspberry Pi v2 (8MP imx219) cameras → both work
  • two old UC-698 Rev.B Arducam 12MP → both work
  • two new Arducam 12MP (B0262) → only one is ever recognized

So it’s specific to the new cameras. Is dual use supported for them at all right now?

That matches what we see on our side, and it comes down to the hardware revision.

The new Arducam 12MP (B0262) modules were changed internally to work with the latest Raspberry Pi OS + libcamera. Some functionality of the old version was removed as part of that. Two consequences:

  • They are NOT backward compatible with the legacy stack (raspistill). They only work through libcamera (libcamera-still, libcamera-raw, python bindings, etc.).
  • Detection requires the manual config we set: camera_auto_detect=0 plus dtoverlay=imx477 in /boot/config.txt (under [all] or [pi4]), then a reboot.

Important: old and new cameras can share the same PCB marking (UC-698 Rev.B) but differ inside, so identical labels don’t mean identical behavior. That’s why your old units and the new ones behave differently on the same board.

Dual use of two of the new 12MP modules isn’t something we can enable with a config tweak right now — the board/driver combination supports one of this revision at a time, while the sensors that report as standard imx477 (Pi HQ, Pi v2) can run in pairs. For reference, the setup is documented here:
https://www.arducam.com/docs/cameras-for-raspberry-pi/native-raspberry-pi-cameras/12mp-imx477-camera/

If you want, we can still set up a remote session to confirm the single-camera path is fully clean on your board. I’ve sent the connection details in a private message.

New related problem, hope it’s fine to continue in this thread.

I’ve now switched to a Waveshare CM4-IO-BASE-A carrier board with a CM4 module (https://www.waveshare.com/wiki/CM4-IO-BASE-A) so that I can run two cameras at once. On the latest Bullseye release I can get one 12MP IMX477 (B0262) camera working, but I can never get a second one to come up. If I connect two Raspberry Pi Hi-Res (imx477) cameras, or two Raspberry Pi v2 (8MP, imx219) cameras, both work fine.

I read on the Arducam site that two cameras aren’t supported at the moment. Can you give an estimate of when parallel operation of two 12MP IMX477 cameras will be supported? Is there a beta version I could try in the meantime? Happy to test and report back.

Thanks for laying it out so clearly. Before I answer on timelines, can you post for the CM4 setup:

  • dpkg -l | grep libcamera
  • libcamera-raw --list-cameras with both 12MP cameras attached
  • libcamera-raw --camera 0
  • camera-bug-report -t 5 -o bug_new.txt -c "libcamera-still -t 1000 -o test.jpg"
  • Whether /boot/config.txt on the CM4 has camera_auto_detect=0 and dtoverlay=imx477

On the dual-camera question: there’s no beta at the moment for two 12MP B0262 together — I don’t want to give you a date I can’t stand behind. Let me confirm the current state on the CM4 after we see your outputs.

Here’s the CM4 setup:

  • Waveshare CM4-IO-BASE-A + CM4 module
  • Latest Bullseye release
  • 12MP IMX477 camera (Arducam B0262), plus two Raspberry Pi Hi-Res imx477 and two Raspberry Pi v2 (8MP, imx219) for comparison
  • libcamera v0.0.0+3544-22656360 (the official one from the OS)
  • /boot/config.txt has camera_auto_detect=0 and dtoverlay=imx477

libcamera-raw --list-cameras:

[0:01:27.857236314] [932]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:01:27.910902733] [933]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:01:27.911094118] [933]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:01:27.911258374] [933] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:01:27.971918706] [933]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media0
Available cameras
-----------------
0 : imx477 [4056x3040] (/base/soc/i2c0mux/i2c@1/imx477@1a)
    Modes: 'SRGGB10_CSI2P' : 1332x990 
           'SRGGB12_CSI2P' : 2028x1080 2028x1520 4056x3040

libcamera-raw --camera 0:

[0:01:44.957489293] [963]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3544-22656360
[0:01:45.005798028] [964]  WARN CameraSensorProperties camera_sensor_properties.cpp:163 No static properties available for 'imx477'
[0:01:45.005903490] [964]  WARN CameraSensorProperties camera_sensor_properties.cpp:165 Please consider updating the camera sensor properties database
[0:01:45.005989268] [964] ERROR CameraSensor camera_sensor.cpp:591 'imx477 10-001a': Camera sensor does not support test pattern modes.
[0:01:45.059861487] [964]  INFO RPI raspberrypi.cpp:1356 Registered camera /base/soc/i2c0mux/i2c@1/imx477@1a to Unicam device /dev/media3 and ISP device /dev/media0
Stream configuration adjusted
[0:01:45.062498102] [963]  INFO Camera camera.cpp:1029 configuring streams: (0) 640x480-YUV420 (1) 2028x1520-SBGGR12_CSI2P
[0:01:45.063406523] [964]  INFO RPI raspberrypi.cpp:760 Sensor: /base/soc/i2c0mux/i2c@1/imx477@1a - Selected sensor format: 2028x1520-SBGGR12_1X12 - Selected unicam format: 2028x1520-pBCC
[0:01:45.847490727] [964] ERROR V4L2 v4l2_videodevice.cpp:1852 /dev/video14[15:cap]: Failed to start streaming: No such file or directory
ERROR: *** failed to start camera ***

camera-bug-report output:

libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  155 ()
  Minor opcode of failed request:  1
  Serial number of failed request:  16
  Current serial number in output stream:  16

Bug report generated to bug.txt

With two 12MP B0262 cameras connected, --list-cameras only ever shows one entry — the second never registers.

Thanks — that’s everything I needed. Summary of where this stands and what to do:

Single camera:

  • The new Arducam 12MP (B0262) is a hardware revision that only works with the latest Raspberry Pi OS + libcamera — NOT with the legacy stack (raspistill). It needs camera_auto_detect=0 and dtoverlay=imx477 in /boot/config.txt (under [all] or [pi4]), then a reboot.
  • Before that config was in place, the symptom was the camera being detected but failing to stream (/dev/video14[15:cap]: Failed to start streaming: No such file or directory). After the config and a cable reseat on a clean official image, one camera captures normally.
  • The No static properties available for 'imx477' warnings and the does not support test pattern modes error are normal and can be ignored. The libEGL / X BadRequest lines from camera-bug-report are just the tooling talking to a headless framebuffer and don’t affect the report.
  • Old and new boards can carry the same UC-698 Rev.B marking while being internally different, so the label alone won’t tell you which behavior to expect.

Dual cameras:

  • Two Pi HQ imx477 or two Pi v2 imx219 work together; two new Arducam 12MP (B0262) do not — only one registers and comes up. We can’t currently enable two of this revision with a config change, and there’s no beta build available for two-at-a-time operation right now, so I won’t promise a date.
  • Practical workaround for a stereo setup today: use two standard imx477 (Pi HQ) or two imx219 (Pi v2) modules on the same carrier board, which are confirmed working in pairs on Bullseye + libcamera.

If you want us to re-verify the single-camera path on your CM4 board, reply and I’ll send the remote session details in a private message. If you make any progress testing, posting the --list-cameras output with both modules attached will help us track when dual support lands.