Arducam ToF camera not working: /dev/video0 missing on Raspberry Pi 4

Hi everyone, I’m trying to get a new Arducam ToF Camera working on a Raspberry Pi 4 Model B. I’ve been following the official Getting Started guide:
https://docs.arducam.com/Raspberry-Pi-Camera/Tof-camera/Getting-Started/

I got as far as step 4, but when I run the example I get this error:

open ***WARNING*** Could not open device node /dev/video0. Please check for permissions. initialization failed

I’m not sure if this is a driver issue, a permissions issue, or something with the camera itself. Has anyone run into this before?

Welcome to the forum! That message means the SDK can’t open /dev/video0. Before we change anything, let’s verify the packages are actually installed and see which video devices your Pi has. Can you run these and paste the output?

pip list | grep ArducamDepthCamera
dpkg -l | grep arducam-tof-sdk-dev
ls /dev/video*

Also, which OS are you running (32-bit or 64-bit)?

Thanks for the quick reply. Here’s the output:

  • pip list | grep ArducamDepthCamera → ArducamDepthCamera 0.0.10
  • dpkg -l | grep arducam-tof-sdk-dev → arducam-tof-sdk-dev 0.0.10 arm64 (Driver development kit for arducam tof camera)
  • ls /dev/video* → /dev/video10 /dev/video12 /dev/video14 /dev/video16 /dev/video19 /dev/video21 /dev/video23 /dev/video11 /dev/video13 /dev/video15 /dev/video18 /dev/video20 /dev/video22 /dev/video31

So the packages look installed, but I noticed there’s no /dev/video0 in that list.

Good catch — that’s the actual problem. The other video nodes are mostly built-in Pi devices (codec/ISP/etc.), not the ToF camera. /dev/video0 isn’t being created because the Arducam Pivariety overlay isn’t configured, and automatic camera detection can interfere with the camera being enumerated properly.

Can you edit /boot/config.txt and make these two changes:

  1. Add the overlay: dtoverlay=arducam-pivariety,media-controller=0
  2. Change camera_auto_detect=1 to camera_auto_detect=0

Then reboot and run ls /dev/video* again to see if /dev/video0 shows up.

I made those changes and rebooted, but it’s still failing. I ran ./compile.sh and then preview_depth.py, and I get the same error — /dev/video0 still isn’t created.

My setup:

  • Device: Arducam ToF Camera
  • Board: Raspberry Pi 4 Model B
  • ArducamDepthCamera 0.0.10
  • arducam-tof-sdk-dev 0.0.10 arm64
  • ls /dev/video*: /dev/video10 /dev/video11 /dev/video12 /dev/video13 /dev/video14 /dev/video15 /dev/video16 /dev/video18 /dev/video19 /dev/video20 /dev/video21 /dev/video22 /dev/video23 /dev/video31

Now I’m also seeing these extra messages:

open ***WARNING*** Could not open device node /dev/video0. Please check for permissions.
initialization failed
requestBuffer ***WARNING*** TOFCamera: Fail to request buffer
Failed to start camera
VIDIOC_S_CTRL: Bad file descriptor

Thanks, those extra messages all follow from the same root cause — the app is trying to use /dev/video0, which was never created. Let’s gather a full diagnostic report so we can see what happens during enumeration.

Please run these commands:

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

That generates an arducam-bug-report.txt in the current directory. Can you attach it to your next reply?

Here’s the updated bug report (attached). I also double-checked /boot/config.txt and both the overlay line and camera_auto_detect=0 are present. Still the same error after running ./compile.sh and preview_depth.py.

Thanks for the report. To summarise where this stands: the SDK packages (ArducamDepthCamera 0.0.10 and arducam-tof-sdk-dev 0.0.10 arm64) are installed correctly, and the whole error chain — Could not open device node /dev/video0, requestBuffer ... Fail to request buffer, Failed to start camera, VIDIOC_S_CTRL: Bad file descriptor — is caused by /dev/video0 not existing.

Since /dev/video0 is missing while the other nodes (/dev/video10–/dev/video31) are present, this points to the overlay/detection configuration rather than necessarily a hardware failure. The required setup is dtoverlay=arducam-pivariety,media-controller=0 plus camera_auto_detect=0 in /boot/config.txt. If /dev/video0 still doesn’t appear after those changes and a full reboot, the next step is to confirm the overlay actually loaded at boot — check dmesg | grep -i arducam and vcgencmd get_camera and share that output here so we can keep digging.