Arducam IMX477 not detected on Raspberry Pi 4 Debian Bullseye 64-bit - libcamera-hello: no cameras available

Hi everyone, I’m having trouble getting my Arducam IMX477 (HQ camera) detected on a Raspberry Pi 4 running Debian Bullseye 64-bit full. When I run libcamera-hello it just returns “no cameras available”. I’ve already checked the ribbon cable connections and they seem to be seated correctly. Any ideas what could be wrong?

That “no cameras available” error usually means the sensor overlay isn’t being loaded. For the IMX477 HQ camera you need to add the device tree overlay to /boot/config.txt. Open it with:

sudo nano /boot/config.txt

Then add the line dtoverlay=imx477 under the [all] section at the bottom. Save it and reboot the Pi. After that, try libcamera-hello again.

Thanks for the suggestion. I added dtoverlay=imx477 under [all] in /boot/config.txt and rebooted, but I’m still getting “no cameras available” from libcamera-hello. I re-checked the ribbon cable too, still seated correctly. Not sure what else to try.

Let’s gather some more system info so we can figure out what’s going on. Please reboot the Pi, then run the following to generate a camera bug report:

wget -O arducam-camera-bug-report https://github.com/ketai-dhr/arducam-camera-bug-report/releases/download/tools/arducam-camera-bug-report
chmod +x ./arducam-camera-bug-report
./arducam-camera-bug-report

This will produce an arducam-bug-report.txt file in the current directory. Please send me that file via private message so I can take a closer look.

I’ve run the bug report tool and sent the arducam-bug-report.txt file over via private message. Let me know what you find.

Thanks, I’ve reviewed the report. It looks like the dtoverlay=imx477 line still isn’t being applied in the active config, so the earlier edit may not have been saved properly. Can you open /boot/config.txt again, re-add dtoverlay=imx477 under [all], and double-check that it actually saved before rebooting? After the reboot, you can confirm with:

grep dtoverlay /boot/config.txt

That was it. I opened /boot/config.txt again and the line hadn’t actually been saved properly. Re-added dtoverlay=imx477 under [all], rebooted, and now libcamera-hello detects the camera. Thanks for the help!

One more question now that it’s working — how do I get the full 12.3MP out of this IMX477 HQ camera? I want to make sure I’m capturing at the maximum resolution.

Glad it’s working. For the maximum 12.3MP (4056x3040) resolution, use libcamera-still with the --width and --height options. To preview at max resolution:

libcamera-still -t 0 --viewfinder-width 4056 --viewfinder-height 3040

To capture a still image at max resolution:

libcamera-still -t 5000 -o test.jpg --width 4056 --height 3040

Or combine preview and capture in one command:

libcamera-still -t 8000 -o test.jpg --viewfinder-width 4056 --viewfinder-height 3040 --width 4056 --height 3040

The --viewfinder-width and --viewfinder-height options control the preview resolution, while --width and --height control the captured image resolution.