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)?
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:
Add the overlay: dtoverlay=arducam-pivariety,media-controller=0
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.
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.
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.