Hi everyone, I’m trying to upgrade our camera system from kernel 5.4 to the Raspberry Pi kernel 6.x and hitting a wall. We’re running 13x Arducam UC-512 Camarray HATs, each with 4x OV9281 camera modules, on Raspberry Pi 4s. This is for an experimental breast cancer detection system so reliability is pretty critical.
The original driver we’ve been using is Arducam_OBISP_MIPI_Camera_Module which was supplied at purchase back in 2021. That repo is clearly marked as legacy and tied to kernel 5.4 — it won’t build on anything newer.
I looked at the newer Arducam-Pivariety-V4L2-Driver on GitHub but from what I can tell it doesn’t seem to support the Camarray HAT multi-camera configuration at all.
Has anyone successfully gotten these UC-512 Camarray HATs working on a modern kernel? Is there a migration path I’m missing?
Thanks for reaching out with all the details. Let me break this down:
You’re right — the Arducam_OBISP_MIPI_Camera_Module repository is the legacy driver and it only supports kernel 5.4. That’s the old stack and it’s been deprecated.
The Arducam-Pivariety-V4L2-Driver is the correct modern driver, but you’re also correct that the standard version doesn’t directly handle the Camarray HAT multiplexing out of the box — there’s additional configuration needed.
Camarray HATs are fully supported on modern systems: Bullseye, Bookworm, and the latest Trixie OS (kernel 6.x). Buster is deprecated at this point.
A couple of diagnostic questions to help narrow things down:
What Raspberry Pi OS are you currently on? Is it still Buster, or have you tried Bullseye/Bookworm/Trixie on any of the units?
Have these Camarray HATs ever run successfully on a previous OS version, or is this a completely fresh setup attempt?
We have 13x Raspberry Pi 4 computers, all currently on Buster with kernel 5.4.51-v7l+. This is the working setup from 2021 using the original driver that came with the purchase.
The Camarray HAT PCBs are marked “UC-512 Rev C”.
I’ve already tried a few things before posting:
Attempted Bullseye with kernel 6.1.21-v8+ following the guide at docs.arducam.com for Pivariety cameras — failed.
Also tried Trixie — same error as Bullseye.
I’ve attached the dmesg output and the picamera2 output from the Bullseye attempt.
Thanks for the logs. Let’s work through this methodically. There are three steps needed to get the Camarray HAT running on Bullseye, and it’s easy to miss one:
Step 1 — Hardware Driver Check
First, confirm the kernel driver has loaded correctly:
ls /dev/video0
If that device node exists, the kernel-level driver is loaded and the hardware is detected.
Step 2 — Disable Legacy Camera Stack (Crucial)
Modern Arducam drivers use the libcamera framework. If the Legacy Camera support is still enabled, it locks the hardware resources and blocks the new driver from accessing the cameras. This trips up a lot of people.
Run:
sudo raspi-config
Navigate to: Interface Options → Legacy Camera → Select No (Disable).
/dev/video0 is present — so the kernel driver is loading fine.
Disabled Legacy Camera via raspi-config → Interface Options → Legacy Camera → No, then rebooted.
Installed the patched userspace libraries using the script exactly as you provided.
But now I’m seeing a new problem. Picamera just hangs in what looks like an infinite loop. It keeps trying to read register 0x107 over and over and failing.
I’ve attached the full logs:
install_pivariety_pkgs.log
install_libcamera_dev.log
install_libcamera_apps.log
system_info.txt
rpicam-still.log
python_test.log
The error in the logs is: pivariety_read: Reading register 0x107 failed repeating endlessly. Any idea what’s going on here?
Thank you for the detailed logs — that actually gives me exactly what I need to diagnose this.
Here’s the root cause: your UC-512 Rev C HATs are running firmware revision 0x0003. That firmware was designed specifically for the old OBISP_MIPI library and kernel 5.4 stack. The modern Bullseye/Pivariety driver expects the board to respond when it queries register 0x107 — but that register simply doesn’t exist in the legacy firmware. The driver has no error-handling path for this situation, so it gets stuck in an infinite retry loop.
To make things more complicated, firmware 0x0003 is too old to support over-the-air (OTA) updates. The bootloader on these revision boards predates the update script mechanism entirely, so there’s no way to flash them remotely or via software.
What this means: the adapter boards need a physical factory re-flash to get them onto firmware that’s compatible with the modern driver stack on Bullseye/Bookworm/Trixie.
I’ve sent you details via private message about how to get the boards back to us for the free firmware update. Please check your messages.
In the meantime, if you need the system running, your current Buster/kernel 5.4 setup with the legacy driver will continue to work — the hardware itself is fine, it’s purely a firmware compatibility issue.
That makes total sense now — firmware 0x0003 being incompatible with the modern driver explains everything. And since OTA isn’t possible on these older revisions, I understand why we need to ship them back.
We’ll send all 13 adapter boards back for the re-flash. Quick question though — do we need to include the actual camera modules (the OV9281 sensor boards) with the HATs, or is it just the UC-512 adapter boards themselves that need to come in?
Good question — it’s only the UC-512 Rev C adapter boards (the HATs themselves) that need the firmware re-flash. The OV9281 camera modules don’t need to come back. You can leave those attached to your rig or store them safely.
I’ve included the shipping and logistics details in the private message I sent earlier — please have a look and we’ll get these turned around as quickly as possible. Once the boards come back with the updated firmware, you should be able to run Bullseye/Bookworm/Trixie with kernel 6.x and the Pivariety V4L2 driver without any issues.
Let me know if anything in the PM needs clarification.