On a Raspberry Pi, the official camera module does appear as video0 by default. You must enable the camera interface:
Look through the list for your camera manufacturer (e.g., "Logitech, Inc."). If it appears here but video0 is missing, you likely have a driver issue.
If you have ever plugged a USB webcam into a Linux machine, opened a terminal, and typed ls /dev/video* , you have likely encountered the mysterious entry: . video0 camera setup
The most critical tool is v4l2-ctl (Video4Linux2 control).
You must log out and log back in (or reboot) for this to take effect. Verify with: On a Raspberry Pi, the official camera module
You should see something like: crw-rw----+ 1 root video 81, 0 Oct 24 10:00 /dev/video0
The c means character device, and 81, 0 is the major/minor number. If video0 is missing, your hardware isn't recognized. If you have ever plugged a USB webcam
If you only see 640x480 or low framerates, your app might be requesting the wrong format.
Before configuring software, test the raw feed using ffplay (part of FFmpeg):
| Symptom | Likely Cause | Solution | | :--- | :--- | :--- | | ls /dev/video* shows nothing | Driver not loaded or USB issue | sudo modprobe uvcvideo ; check lsusb | | Video is green/pink static | Color format mismatch | Force MJPEG or YUYV via v4l2-ctl | | 15 FPS max, but camera supports 60 | USB 2.0 bandwidth limit; app using high resolution | Lower resolution or use USB 3.0 port; check lsusb -t | | "Failed to open V4L2 device" in Docker | Docker blocks /dev access | Run with --device /dev/video0 and --group-add video | | Camera works once, then fails | App didn't release device | Reboot; or use sudo killall -9 chrome (Chrome hogs cameras) | | No audio from camera microphone | Audio is separate ALSA device | Find it via arecord -l ; it's part of video0 |