Camarray Hat wont connect to Raspberry Pi 5

I bought “Arducam 12MP IMX708 Quad-Camera Kit, Wide Angle Stereo Synchronized Camera Module for Raspberry Pi SKU B0484”, and a Rasoberry Pi 5 for a project, admittedly I’m not all that familiar with either but I’ve been trying to connect the 2 for a while now but no matter what I do, my Pi 5 wont register that the Camarray Hat is connected to it and I’m not sure what to do or figure out whats wrong after days of trying to connect them.

A while back, several of the pins on my Pi 5 were slightly bent, but after some testing, they were confirmed to still be in working order. When I plug the Camarray Hat into the PCIe pins it goes on, the green light flashes for a few seconds then disappears and the red light for “3V3” stays active the entire time, but when i run checks to see if my PI can find anything on the PCIe pins, it cant find it, or any of the cameras.

If anyone wants me to run code to see more debugging info feel free to let me know and ill run it and share the results.

I’ve tried connecting all the cameras, the PCIe, the ribbon cable, the cables facing opposite directions (in case I had them the wrong way prior), and pretty much every combination I could think of in terms of what was and wasn’t connected during tests. Ive also tried to connect it both with and without a PCIe “stacking header”, and with both the PI 5 and the HAT plugged in and just the PI 5 plugged in and just the HAT plugged in (tho both weren’t plugged in at the same time until after significant prior testing that didn’t work).

Apologies in advance if i misexplained stuff or left out key details as I’ve not posted on many tech forums before but I’ve pieced together most of my info I know and used to try and set it up from many tutorials and forums and chat models so I know I might just be missing something obvious but I’ve been stumped for days now and dont know what else to do other then post here,

Thanks for reading this!

Hi @Doge,

Is your CamArray HAT plugged into CAM0 or CAM1 of the Pi5?

What does your /boot/firmware/config.txt look like, in particular any lines with
camera_auto_detect=, dtoverlay=imx...., and i2c...?

Right after booting, what do you see in dmesg | grep imx?

What happens when you run libcamera-still --list?

What is the output of sudo apt list --installed | grep libcamera ?

The answers to the above questions would be helpful for understanding what might be going on

Hi! @simplesimon

Ive tried plugging it in both cam 0 and cam 1. for the following responses, its with it plugged into cam 0, and the red light for the “3V3” on the Camarray was active the entire time with the green light flashing on startup.

this

For more options and information see

http://rptl.io/configtxt

Some settings may impact device functionality. See link above for details

Uncomment some or all of these to enable the optional hardware interfaces

#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

Enable audio (loads snd_bcm2835)

dtparam=audio=on

Automatically load overlays for detected cameras

camera_auto_detect=0
dtoverlay=imx707

Automatically load overlays for detected DSI displays

display_auto_detect=1

Automatically load initramfs files, if found

auto_initramfs=1

Enable DRM VC4 V3D driver

dtoverlay=vc4-kms-v3d
max_framebuffers=2

Don’t have the firmware create an initial video= setting in cmdline.txt.

Use the kernel’s default instead.

#disable_fw_kms_setup=1

Run in 64-bit mode

arm_64bit=1

Disable compensation for displays with overscan

disable_overscan=1

Run as fast as firmware / board allows

arm_boost=1

[cm4]

Enable host mode on the 2711 built-in XHCI USB controller.

This line should be removed if the legacy DWC2 controller is required

(e.g. for USB device mode) or if USB support is not required.

otg_mode=1

[all]

is my current config.txt file, Its current setup might be incorrect or such as its what left off with after a full day of trying to get it to work. I have 707 instead of 708 in the file as when i tried hooking just 1 camera up, even tho it wouldn’t connect, that’s what it was telling me the camera was instead of a 708 (but I’ve tried both numbers). I ran “dmesg | grep imx” and “dmesg | grep -i imx” to try to get what you asked for the next question but it just started a new terminal line so I’m not sure if maybe I’m doing something wrong.

running libcamera-still --list

says

No cameras available!

and

sudo apt list --installed | grep libcamera

says

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libcamera-apps/stable,stable,now 1.7.0-1 all [installed]
libcamera-ipa/stable,now 0.5.0+rpt20250429-1 arm64 [installed,automatic]
libcamera-tools/stable,now 0.5.0+rpt20250429-1 arm64 [installed]
libcamera0.5/stable,now 0.5.0+rpt20250429-1 arm64 [installed,automatic]
libspa-0.2-libcamera/stable,now 1.2.7-1~bpo12+1+rpt3 arm64 [installed,automatic]
pipewire-libcamera/stable,stable,now 1.2.7-1~bpo12+1+rpt3 all [installed,automatic]
python3-libcamera/stable,now 0.5.0+rpt20250429-1 arm64 [installed,automatic]

Hope this helps and I’m glad to run any other code or tests you may need.

I’m not an expert, but I have been working with the CamArray HAT successfully with the quadcam imx519 for a few weeks now.

  1. dtoverlay=imx707 is almost definitely wrong. For CAM0, it should be: dtoverlay=imx708,cam0. For CAM1, dtoverlay=imx708 should be sufficient, since CAM1 is the default on rpi5.

  2. With the correct dtoverlay line, reboot the Pi and check dmesg | grep imx again. For me, when I had the correct dtoverlay, but the cables were incorrect, I would get error messages in dmesg | grep imx. And when everything works, there is an info (non-error) line in dmesg about my imx519 being loaded.

  3. The cables can be tricky to get right, since nothing prevents you from inserting the cables upside down, and they need to be correct on the pi, on the hat, and on the cameras. It may help to post clear photos showing your cable connections.

Also, I assume you’re using the cables that were included in the kit? If you get your own cables (or extras), be aware that there are so-called “type-A” and “type-B” 0.5 mm pitch, 22-pin flat flex cables which are very different.

One other concern is the pip list --installed shows you have the most recent libcamera0.5 (which is the official raspi version released on Apr 29), which is not from arducam. Arducam modifies the official libcamera (and other related packages), which is separately installed.

There is an semi-active thread (RPi update 5/1/2025 included lib camera and killed my ArduCam that was working) about a recent rpi update messing up someone’s previously working camera setup. I am nervous about this and am not going to update my pi until I understand this better.

For my imx519 quadcam, I definitely need Arducam’s version. However, I am not sure whether your imx708 quadcam needs Arudcam’s version. I’m guessing yes (@Dion, do you know?).

P.S. Use the blockquote or preformatted text tools in the forum reply form when copy-pasting things like your config.txt, otherwise, the formatting is really weird and hard to read.

Hi!
Sorry for not using blockquote, ill try to keep that in mind going forward.

Ok, I updated the line to

dtoverlay=imx708,cam0

and then when I ran

dmesg | grep imx

after a reboot it said

[ 0.064796] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.064822] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 0.064936] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.064962] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 0.454004] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.469130] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.469149] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 2.068799] rp1-cfe 1f00110000.csi: found subdevice /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 2.541511] imx708 10-001a: failed to read chip id 708, with error -5
[ 2.603975] imx708 10-001a: probe with driver imx708 failed with error -5

those errors look like ones I had in testing prior, but couldn’t fix (tho they may be slightly different).

Indeed! The cables can be quite tricky, I’ve tried lining up the metal i see on the cable with the metal I see in the slot. Attached is some images of the current setup, tho in prior testing, I’ve tried just about every combination I can think of for the cables so odds are above 0 they might still be incorrectly placed (can provide more pictures if needed). I used only the cables that were included in the package I got from arducam.

Here is a link to the images as for some reason when I try to post them here I keep getting errors even if i crop the image down to a tiny size and change the format.

Sounds like an interesting update indeed, if you think its worth me trying to download it or an older version (if that’s possible I’m not sure, sorry I’m still a newbie :grin:), just let me know and I can.

Thankyou for your time with this!

Hi @simplesimon
Thank you for your explanation in this thread. That really, really helps. I’m also learning your grammar since your words are smooth and straightforward(my mother tongue is not English).
Regarding the IMX708(including individual arducam imx708 or quad-cam imx708), unlike the IMX519 and the arducam 64MP camera, we don’t need to install the arducam libcamera.

1 Like

Hi @Doge
It appears that the cable connection is correct. Can I have the entire output of cat /boot/firmware/config.txt ?

Thanks! That’s helpful to know that imx708 doesn’t need the arudcam version of libcamera. That explains why there is no mention of pivariety_installer.sh in the quickstart for imx708, while it is mentioned in the quickstart for imx519

Hi @Doge,

Maybe try to enable i2c in the /boot/firmware/config.txt by uncommenting the line #dtparam=i2c_arm=on and rebooting and checking dmesg | grep imx.

I don’t know if enabling i2c is necessary if you only plan to use all four cameras at once (which is the default, i.e. where each image contains 2x2 camera images at 1/4 of their max resolution). If you do plan to switch between cameras, you’d have to use i2c commands as documented here. Anyhow, it shouldn’t hurt to try enabling i2c on your Pi.

Also, I think the quadcam kit comes with the cables already installed in each camera, right? If so, no worries about this issue. If not (or if you tried taking them off), check that the cables are in the right orientation on the cameras, and maybe post a photo.

If those don’t solve the problem, hopefully Dion, who is part of Arducam’s offical support team, can help you further

1 Like

Hi!
@Dion the output of

cat /boot/firmware/config.txt

is

For more options and information see

http://rptl.io/configtxt

Some settings may impact device functionality. See link above for details

Uncomment some or all of these to enable the optional hardware interfaces

#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

Enable audio (loads snd_bcm2835)

dtparam=audio=on

Automatically load overlays for detected cameras

camera_auto_detect=0
dtoverlay=imx708,cam0

Automatically load overlays for detected DSI displays

display_auto_detect=1

Automatically load initramfs files, if found

auto_initramfs=1

Enable DRM VC4 V3D driver

dtoverlay=vc4-kms-v3d
max_framebuffers=2

Don’t have the firmware create an initial video= setting in cmdline.txt.

Use the kernel’s default instead.

#disable_fw_kms_setup=1

Run in 64-bit mode

arm_64bit=1

Disable compensation for displays with overscan

disable_overscan=1

Run as fast as firmware / board allows

arm_boost=1

[cm4]

Enable host mode on the 2711 built-in XHCI USB controller.

This line should be removed if the legacy DWC2 controller is required

(e.g. for USB device mode) or if USB support is not required.

otg_mode=1

[all]

Hi!

ok, I uncommented

dtparam=i2c_arm=on

and ran

dmesg | grep imx

again and it said

[ 0.060803] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.060828] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 0.060943] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.060969] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 0.597940] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.612973] /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@110000
[ 0.612991] /axi/pcie@1000120000/rp1/csi@110000: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 2.154131] rp1-cfe 1f00110000.csi: found subdevice /axi/pcie@1000120000/rp1/i2c@88000/imx708@1a
[ 2.431107] imx708 10-001a: camera module ID 0x0000
[ 2.434418] rp1-cfe 1f00110000.csi: Using sensor imx708 for capture

and then I tested it again and it worked!

yes, we do plan on using all 4 cameras at once for the project it will be used for.

Thankyou very much for helping me with this! It is very much appreciated! :pizza:

2 Likes

Great! I’m glad it worked for you :smiley: