Arducam ToF camera not detected on Raspberry Pi 4 - no /dev/video0

Hi all, I just got an Arducam ToFCamera and I’m trying to get it running on a Raspberry Pi 4 Model B. I’ve been following the Getting Started guide at Getting Started: Arducam ToF Camera for Raspberry Pi - Arducam Wiki but it always fails at step 4 - the /dev/video0 device node never gets created. Has anyone else run into this?

Welcome! Let’s gather a bit of info first. Can you tell me: which Pi model exactly, the ArducamDepthCamera Python package version, the arducam-tof-sdk-dev version, and what /dev/video* nodes currently show up on your system?

Sure. It’s a Raspberry Pi 4 Model B. ArducamDepthCamera is 0.0.10 and arducam-tof-sdk-dev is 0.0.10 arm64. The video nodes I see are /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 and /dev/video31. No /dev/video0 in that list.

Thanks. The missing /dev/video0 is suspicious. Before we touch the config, have you already gone through the checks on the troubleshooting page (Troubleshooting – Arducam ToF Camera - Arducam Wiki)? Also try running ./compile.sh and then preview_depth.py, and paste whatever errors come up.

I did run through the troubleshooting page, and I also ran ./compile.sh and preview_depth.py. Same failure every time. Here’s the output:

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

Got it. Let’s rule out a bad install. Can you run these two commands and share the output?

pip list | grep ArducamDepthCamera

dpkg -l | grep arducam-tof-sdk-dev

Both look correct:

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

One more check - run ls /dev/video* and paste the full listing so we can confirm whether video0 is really absent.

Here’s the full output:

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

So yes, /dev/video0 is definitely not being created.

That confirms the root cause. The ToF camera relies on /dev/video0 being created through the correct device tree overlay. When it’s missing, you get exactly the errors you pasted: ‘Could not open device node /dev/video0’ and ‘Fail to request buffer’.

Edit /boot/config.txt and add this line:

dtoverlay=arducam-pivariety,media-controller=0

Also make sure automatic camera detection is disabled. Change:

camera_auto_detect=1

to:

camera_auto_detect=0

Then reboot the Pi.

Done - I added dtoverlay=arducam-pivariety,media-controller=0 to /boot/config.txt, changed camera_auto_detect=1 to camera_auto_detect=0, and rebooted. What should I do next?

Good. After the reboot, let’s collect a bug report so we can check the full state of the system. 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 will write arducam-bug-report.txt in the current directory - please attach it to your reply. While you’re at it, could you also post a few photos of how the camera is physically connected to the Pi?

Here’s the bug report - arducam-bug-report.txt is attached. And here are the connection photos:

20230331_141651.jpg
20230331_141701.jpg
20230331_141655.jpg
20230331_141617.jpg

Thanks, that gives us what we need for now. Quick recap: the issue was that /dev/video0 wasn’t being created, which is why the camera failed with ‘Could not open device node /dev/video0’ and ‘Fail to request buffer’. The workaround applied so far is adding dtoverlay=arducam-pivariety,media-controller=0 to /boot/config.txt, setting camera_auto_detect=0, and rebooting. I’m reviewing the bug report and the connection photos to confirm whether /dev/video0 now shows up and the camera initializes properly. I’ll follow up once I’ve gone through them.