Arducam 64MP on Raspberry Pi 4: H264 recording fails above 1080p with ProcessLookupError

Hi everyone, I’m trying to get an Arducam 64MP camera working on a Raspberry Pi 4 Model B and I’m hitting a wall. When I try to install the driver package (64mp_pi_hawk_eye_kernel_driver for bullseye-arm64-v5) I get an error saying it cannot find the corresponding package and that my kernel version is unsupported. My kernel is 6.1.19-v8+. On top of that, I can’t capture anything higher than 1080p. Anything above that throws buffer errors, and at 4624x3472 H264 recording fails with ProcessLookupError: [Errno 3] No such process. Has anyone run into this before?

Thanks for the details. That ‘unsupported kernel’ error is a big clue - it usually means the kernel isn’t the stock one from the official Raspberry Pi image. Can you post your hardware revision and confirm the exact kernel and package info? The install error normally asks for those details to be sent to Arducam support. Also, just to rule it out - has rpi-update ever been run on this install?

Sure. Hardware revision is d03115, kernel is 6.1.19-v8+, package is 64mp_pi_hawk_eye_kernel_driver – bullseye-arm64-v5. libcamera is v0.0.0+4225-74d023d8. I don’t think I ever ran rpi-update myself, but this is an image I’ve had for a while. 1080p works fine - it’s only when I go higher that things break.

That lines up with the unsupported kernel situation - the proper install path expects the stock SD card image, not an rpi-update kernel. In the meantime, could you post the script you’re using for video capture? I’d like to reproduce the same setup on our side, especially the 4624x3472 recording failure.

Here’s the script at /home/pi/video-test.py:

from picamera2 import Picamera2
from picamera2.encoders import H264Encoder, Quality
from picamera2.outputs import FfmpegOutput
from libcamera import controls
import time

picam2 = Picamera2()

this is the highest resolution I can get - anything higher produces an error

config = picam2.create_video_configuration(main={“size”: (1920,1080)}, display=None)

picam2.configure(config)

encoder = H264Encoder()

output = FfmpegOutput(“/home/pi/vid.mp4”)
picam2.set_controls({“AfMode”: controls.AfModeEnum.Manual, “LensPosition”: 6})
picam2.start_recording(encoder, output, Quality.VERY_HIGH)
time.sleep(3)
picam2.stop_recording()

If I change the size to 4624x3472, libcamera initializes the sensor arducam_64mp@1a, picks sensor format 4624x3472-SRGGB10_1X10 and unicam format 4624x3472-pRAA, but it dies when starting the H264 encoder. I also see warnings about ‘No static properties available for arducam_64mp’, ‘Please consider updating the camera sensor properties database’, and ‘Mismatch between Unicam and CamHelper for embedded data usage’.

Thanks, that script looks fine for 1080p. Before chasing the resolution, let’s make sure the overlay and memory settings are right. Add dtoverlay=arducam-64mp under the [all] section at the bottom of /boot/config.txt, then reboot. For higher resolution, bump GPU memory with gpu_mem=256, increase CMA with dtoverlay=vc4-kms-v3d,cma-512, and add alloc_in_cma_threshold=16 to /boot/cmdline.txt. On the kernel side, if the installer still complains about an unsupported kernel, the fix is to flash the official Raspberry Pi OS image and not run rpi-update.

Okay, here’s what I’ve done so far: gpu_mem=256, dtoverlay=vc4-kms-v3d,cma-512, alloc_in_cma_threshold=16 in /boot/cmdline.txt, and dtoverlay=arducam-64mp under [all] in /boot/config.txt. Rebooted after all of it. 1920x1080 still works fine. But 4624x3472 still fails with ProcessLookupError: [Errno 3] No such process. The only working config is the 1920x1080 one - any higher size gives buffer errors.

Can you run python video-test.py with the size changed to 4624x3472 and paste the full output? The complete libcamera log will show exactly where the encoder is dying.

Here’s the full log from running python video-test.py at 4624x3472:

root@rpicamera-0004:/home/pi# python video-test.py
[23:21:57.504375418] [5812] INFO Camera camera_manager.cpp:299 libcamera v0.0.0+4225-74d023d8
[23:21:57.526716757] [5817] WARN CameraSensorProperties camera_sensor_properties.cpp:243 No static properties available for ‘arducam_64mp’
[23:21:57.526770109] [5817] WARN CameraSensorProperties camera_sensor_properties.cpp:245 Please consider updating the camera sensor properties database
[23:21:57.554703644] [5817] WARN RPI raspberrypi.cpp:1357 Mismatch between Unicam and CamHelper for embedded data usage!
[23:21:57.555601449] [5817] INFO RPI raspberrypi.cpp:1476 Registered camera /base/soc/i2c0mux/i2c@1/arducam_64mp@1a to Unicam device /dev/media2 and ISP device /dev/media1
[23:21:57.561419365] [5812] INFO Camera camera.cpp:1028 configuring streams: (0) 4624x3472-XBGR8888
[23:21:57.561748490] [5817] INFO RPI raspberrypi.cpp:851 Sensor: /base/soc/i2c0mux/i2c@1/arducam_64mp@1a - Selected sensor format: 4624x3472-SRGGB10_1X10 - Selected unicam format: 4624x3472-pRAA
Traceback (most recent call last):
File “/home/pi/video-test.py”, line 25, in
picam2.start_recording(encoder, output, Quality.VERY_HIGH)
File “/usr/lib/python3/dist-packages/picamera2/picamera2.py”, line 1507, in start_recording
self.start_encoder(encoder, output, pts=pts, quality=quality)
File “/usr/lib/python3/dist-packages/picamera2/picamera2.py”, line 1466, in start_encoder
self.encoder.start()
File “/usr/lib/python3/dist-packages/picamera2/encoders/encoder.py”, line 212, in start
self._start()
File “/usr/lib/python3/dist-packages/picamera2/encoders/h264_encoder.py”, line 69, in _start
super()._start()
File “/usr/lib/python3/dist-packages/picamera2/encoders/v4l2_encoder.py”, line 136, in _start
fcntl.ioctl(self.vd, VIDIOC_STREAMON, typev)
ProcessLookupError: [Errno 3] No such process

That log tells us a lot. The sensor is being configured correctly - 4624x3472-SRGGB10_1X10 on the sensor side and 4624x3472-pRAA on Unicam - so the stream config itself is fine. The failure is at VIDIOC_STREAMON in the V4L2 encoder, with ProcessLookupError [Errno 3]. That’s the H264 encoder failing to start, not the sensor. Combined with the buffer errors you saw at intermediate sizes, it points to the memory/CMA setup for the full-resolution stream rather than a sensor problem. 4624x3472 is the 16MP target and should be reachable, but the buffer allocation is falling over.

That makes sense - so the sensor is fine, but the encoder is crashing when it tries to grab buffers. I’m still stuck at 1920x1080 though, with anything higher erroring out. Is there a reference script I can compare against?

Yes - I’d suggest comparing your script against our official 16MP capture example for picamera2:

https://github.com/ArduCAM/picamera2_examples/blob/main/capture_16mp_video.py

That example is set up specifically for the full 4624x3472 resolution and should help get past being stuck at 1920x1080. To summarize where we are: your 1080p capture works, the sensor initializes correctly at full resolution, but the H264 encoder fails at VIDIOC_STREAMON with ProcessLookupError [Errno 3] when you go higher. The likely culprits are the buffer/CMA allocation for the full-res stream, plus the original unsupported-kernel install issue. Try the reference example and let us know if it still dies at the same point.