Arducam IMX519 detected as ov5647 and no camera after dtoverlay on Raspberry Pi 4 Bookworm

Hi everyone, I’m stuck with an Arducam IMX519 camera on my Pi 4. After a fresh Raspberry Pi OS (Bookworm) install, the camera is detected as ov5647 and only works at a low resolution. If I add dtoverlay=imx519 to config.txt, libcamera --list-cameras returns ‘no camera found’ and nothing shows up at all.

Setup:

  • Raspberry Pi 4, hardware revision b03115
  • Kernel: 6.6.51+rpt-rpi-v8
  • OS: Bookworm, aarch64

With the default config (no imx519 overlay), I get this:

libcamera-hello --list-cameras
Available cameras

0 : ov5647 [2592x1944 10-bit GBRG] (/base/soc/i2c0mux/i2c@1/ov5647@36)
Modes: ‘SGBRG10_CSI2P’ : 640x480 [58.92 fps - (16, 0)/2560x1920 crop]
1296x972 [43.25 fps - (0, 0)/2592x1944 crop]
1920x1080 [30.62 fps - (348, 434)/1928x1080 crop]
2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]

So it works, but only at the ov5647 modes, not the IMX519 ones.

What I’ve tried so far:

  • Followed the Arducam IMX519 native camera libcamera install guide (the 16MP IMX519 one)
  • Reflashed the SD card with the latest Pi 4 Bookworm image - same result
  • Ran the install script as root - same result
  • Manually installed the three .deb packages with dpkg -i - same result

During the install I also saw these apt warnings:

N: Download is performed unsandboxed as root as file ‘/home/pi/Downloads/2/libcamera-dev_0.3.2+rpt20240927-2_arm64.deb’ couldn’t be accessed by user ‘_apt’. - pkgAcquire::Run (13: Permission denied)
N: Download is performed unsandboxed as root as file ‘/home/pi/Downloads/2/libcamera-ipa_0.3.2+rpt20240927-2_arm64.deb’ couldn’t be accessed by user ‘_apt’. - pkgAcquire::Run (13: Permission denied)
N: Download is performed unsandboxed as root as file ‘/home/pi/Downloads/2/rpicam-apps_1.5.2-3_arm64.deb’ couldn’t be accessed by user ‘_apt’. - pkgAcquire::Run (13: Permission denied)

Not sure if those matter. Has anyone seen the IMX519 show up as ov5647 like this?

Thanks for the detailed report. Two things would help narrow this down:

  1. Can you post a photo of the hardware connection - both the Pi-side camera connector and the camera board itself?

  2. Can you generate a bug report with the Arducam camera bug report tool and attach the file? Steps:

Reboot the Pi, then run:

wget -O arducam-camera-bug-report https://github.com/Dion4cen/arducam-camera-bug-report/releases/download/Tool/arducam-camera-bug-report

chmod +x ./arducam-camera-bug-report

./arducam-camera-bug-report

That writes an arducam-bug-report.txt file in the current directory. Please attach it here.

I’ve attached the bug report (arducam-bug-report.txt) and a photo of the camera connection.

Just to restate the behavior: when dtoverlay=imx519 is commented out in config.txt, the camera IS detected and works, but only at low resolution as ov5647:

libcamera-hello --list-cameras
Available cameras

0 : ov5647 [2592x1944 10-bit GBRG] (/base/soc/i2c0mux/i2c@1/ov5647@36)
Modes: ‘SGBRG10_CSI2P’ : 640x480 [58.92 fps - (16, 0)/2560x1920 crop]
1296x972 [43.25 fps - (0, 0)/2592x1944 crop]
1920x1080 [30.62 fps - (348, 434)/1928x1080 crop]
2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]

With dtoverlay=imx519 enabled, libcamera finds nothing at all. Hope the attachments help.

Any update on this? I can provide more info if needed - just tell me what to run.

Thanks for the files. One question while I look at the report: are you sure you’re using the IMX519 camera module and not the ov5647 one? The detection result would match an ov5647 sensor.

Yes, I’m sure it’s the IMX519 - I bought it as an IMX519 and the product listing states imx519. That’s exactly why the ov5647 detection is so confusing.

Looking at the bug report and the photo, I think I found the root cause: the module has an Arducam 16MP lens, but the sensor on it is actually an ov5647, not imx519. That’s why it works with the ov5647 modes and fails when you force the imx519 overlay.

Try this instead: in config.txt use dtoverlay=ov5647 (remove dtoverlay=imx519). Then reboot and check libcamera --list-cameras again. It should enumerate correctly as ov5647 and use the modes you’re already seeing.