App Compatibility

When using the daemon with v4l2loopback (/dev/video10), all applications work:

ApplicationStatusNotes
OBS StudioWorksSelect "Facecam Normalized"
Chrome/ChromiumWorksexclusive_caps=1 required
FirefoxWorks
ZoomWorks
Google MeetWorksVia Chrome
Microsoft TeamsWorksVia Chrome
SlackWorksElectron/Chromium
DiscordWorks
CheeseWorks
mpvWorksmpv av://v4l2:/dev/video10

Direct Device Access (No Daemon)

Without the normalization pipeline, compatibility depends on firmware version:

ApplicationFirmware < 4.00Firmware 4.00+
OBS StudioWorks (UYVY)Works
FirefoxWorksWorks
Chrome/ChromiumFAILSWorks (MJPEG)
Electron appsFAILSWorks
CheeseWorksWorks

Why Chromium Fails

Chromium's camera enumeration rejects V4L2 devices that report both V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT capabilities. Additionally, pre-4.00 firmware only offers uncompressed formats which Chromium cannot negotiate.

The v4l2loopback exclusive_caps=1 parameter solves this by making the virtual device report only CAPTURE capability to consumers.

PipeWire / Wayland

On modern Wayland desktops, some applications access cameras through PipeWire's xdg-desktop-portal Camera interface rather than V4L2 directly. The v4l2loopback device is visible through PipeWire's V4L2 backend, so the normalization pipeline remains compatible.

# Verify PipeWire sees the virtual camera
pw-cli list-objects | grep -i facecam