Welcome to vcam! This guide provides comprehensive instructions to set up, configure, and use your Android phone as a high-performance virtual camera on Linux.
- Android Version: Android 8.0 (API Level 26) or higher.
- USB Debugging: Required for USB connection mode (lowest latency).
- Go to Settings > About Phone.
- Tap Build Number 7 times to unlock Developer Options.
- Navigate to Settings > System > Developer Options and enable USB Debugging.
- Permissions: Grant Camera permissions when launching the app.
- PipeWire: Running on modern Linux distributions (GNOME, KDE Plasma, Hyprland, etc.).
- v4l2loopback (Recommended for Chrome / Google Meet / Zoom / Discord):
- Install the kernel module package for your distribution:
- Ubuntu / Debian:
sudo apt install v4l2loopback-dkms - Arch Linux:
sudo pacman -S v4l2loopback-dkms - Fedora:
sudo dnf install kmod-v4l2loopback
- Ubuntu / Debian:
- Load the module with recommended settings:
sudo modprobe v4l2loopback exclusive_caps=1 card_label=vcam video_nr=10
- Tip: Make it persistent by adding
v4l2loopbackto/etc/modules-load.d/vcam.confand optionsoptions v4l2loopback exclusive_caps=1 card_label=vcam video_nr=10to/etc/modprobe.d/vcam.conf.
- Install the kernel module package for your distribution:
USB mode provides maximum stability and lowest latency (~50–100ms) by utilizing automatic ADB port forwarding.
- Connect your phone to your computer using a USB cable.
- Open the vcam app on your phone.
- Select your desired profile (e.g., Low 720p) and tap Start Stream.
- Open the vcam-desktop app on Linux.
- Select USB mode and click Connect.
- Click Virtual Cam to activate the virtual camera for web applications.
Wi-Fi mode allows wireless streaming over your local network.
- Ensure both your phone and computer are connected to the same Wi-Fi network.
- Open the vcam app on your phone and tap Start Stream.
- Note the IP address displayed under the Wi-Fi section (e.g.,
192.168.1.50:9077). - Open vcam-desktop on your computer.
- Select Wi-Fi mode, enter your phone's IP address and port into the Host field.
- Click Connect, then click Virtual Cam.
- Streaming Profiles:
- Low (720p): 1280x720 @ ~2 Mbps — Default setting, optimized for ultra-low latency and minimal resource usage.
- Balanced (1080p): 1920x1080 @ ~5 Mbps — High-definition video quality.
- Ultra-low (480p): 640x480 @ ~800 kbps — Lightweight setting for low-spec devices or weak network connections.
- Camera Flip: Toggle between front and rear cameras seamlessly from the desktop UI.
- Virtual Camera Activation:
- Automatically creates a PipeWire source node (
vcam) and a V4L2 device node (/dev/video10). - In video conferencing apps (Google Meet, Zoom, Teams, Discord), select vcam as your camera input.
- Automatically creates a PipeWire source node (
| Issue | Solution |
|---|---|
| Device not recognized in USB mode | Ensure USB Debugging is enabled and authorize the computer prompt on your phone screen when plugged in. |
| Virtual camera not visible in Chrome / Zoom | Ensure v4l2loopback is loaded with exclusive_caps=1. Run sudo modprobe v4l2loopback exclusive_caps=1 card_label=vcam video_nr=10. |
| High latency over Wi-Fi | Switch to a 5GHz Wi-Fi band or use USB mode for the best performance. |