Skip to content

Instantly share code, notes, and snippets.

@bootswithdefer
Created September 19, 2026 03:37
Show Gist options
  • Select an option

  • Save bootswithdefer/6af8a761847060420873015ae46a5757 to your computer and use it in GitHub Desktop.

Select an option

Save bootswithdefer/6af8a761847060420873015ae46a5757 to your computer and use it in GitHub Desktop.
Intel IPU7 / OV08X40 webcam on Linux (Panther Lake): what works, what's needed, open issues

Intel IPU7 / OmniVision OV08X40 webcam on Linux

Getting the RGB webcam working on a Panther Lake laptop (Intel IPU7 8086:b05d, OV08X40 sensor OVTI08F4, Synaptics SVP7500 CVS bridge) under Arch / linux-zen. RGB works; IR (Windows Hello) does not.

Status

Item Status
RGB via libcamera (cam, qcam) ✅
RGB via PipeWire (Firefox, Chromium) ✅ (needs WirePlumber 0.5.15 — see below)
RGB via /dev/video42 (Zoom / V4L2 apps) ✅ (manual on/off)
Hardware ISP (no browser crashes) ✅
IR camera / Windows Hello ❌ unsupported upstream
Automatic on-demand power ❌ manual toggle only
Native libcamera color tuning ❌ no ov08x40.yaml; GStreamer videobalance as workaround

What was needed

  1. Kernel ≥ 7.1 — handles the INT3472 GPIO type 0x02 and has OVTI08F4 in the in-tree IPU bridge. Earlier kernels need DKMS patches.
  2. intel-cvs (SVP7500 bridge driver) — out-of-tree, required. The sensor's ACPI _DEP is never cleared without it, so it never enumerates. intel/vision-drivers#36 (open, no upstream fix).
  3. ov08x40 regulator shim — on this board dovdd/dvdd fall back to dummy regulators; stock ov08x40.ko treats regulator_bulk_enable() failure as fatal (still true as of kernel 7.2.6). A DKMS shim downgrades it to a warning.
  4. Blacklist the IR driver (hm1092) — its probe loop resets the shared USB-IO bridge every ~6s (a "USB disconnect storm"), taking the RGB camera down too. Not fixed by the upstream LINK_FREQ fix — a separate probe-loop bug.
  5. Hardware-ISP libcamera pipeline handler (jibsta210/ipu7-camera-linux) — replaces libcamera's software ISP, which abort()s browsers at non-native resolutions. Requires a udev rule granting the video group access to /dev/ipu7-psys0 (undocumented; created root:root 0600 by default).
  6. v4l2loopback + a GStreamer feeder for Zoom and other V4L2-only apps (no PipeWire/libcamera camera support). Camera is off by default; a user systemd service starts the feeder before a call.

Open regression: WirePlumber 0.5.16+ hides the camera

Symptom: after upgrading WirePlumber to 0.5.16 or later, wpctl status shows no camera and browsers see nothing — even though libcamera enumerates it fine.

Cause: WirePlumber 0.5.16 rewrote monitors/libcamera/create-device.lua to device:activate(Features.ALL, ...) and block camera-node creation on that activation completing. One requested feature never completes for this device, so the event hangs forever and no node is created. (The libcamera SPA plugin and the pipeline handler both register synchronously — the stall is in WirePlumber's new activation gate.) 0.5.17 does not fix it (its regression fix is unrelated).

Mitigation: downgrade wireplumber/libwireplumber to 0.5.15, where activation is fire-and-forget:

sudo pacman -U /var/cache/pacman/pkg/wireplumber-0.5.15-*.pkg.tar.zst \
               /var/cache/pacman/pkg/libwireplumber-0.5.15-*.pkg.tar.zst
systemctl --user restart wireplumber

A full pacman -Syu will silently re-upgrade it; hold it with IgnorePkg or re-check wpctl status after updates. The Zoom / v4l2loopback path is unaffected (it calls libcamera directly, bypassing WirePlumber).

Unsolved

  • IR camera / Windows Hello (hm1092) — no IVSC firmware; intel/ipu7-drivers#72 open, no response. IR streaming causes the USB storm; driver stays blacklisted.
  • Native color tuning — no libcamera ov08x40.yaml for the hardware-ISP path; color is corrected approximately in the GStreamer feeder.
  • On-demand camera power — v4l2-relayd stalls; exclusive_caps prevents an open-triggered watcher. Camera is toggled manually.
  • WirePlumber 0.5.16+ activation regression — mitigated by downgrade only; not yet reported upstream.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment