Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1721GitHub issuePublicDecided· Out of scope

webcam picker: Device Caps filter still passes IPU7 raw Bayer node (follow-up to #5722)

Reported by danteRub · filed Aug 17, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

webcam picker: Device Caps filter still passes IPU7 raw Bayer node (follow-up to #5722)revision 1 · captured 2026-09-28 21:29 UTC via poll

Summary

The Device Caps filter added for #5722 does not exclude the raw sensor node on IPU7 with the mainline `intel-ipu7` / `isys` driver. Unlike the IPU6 + v4l2-relayd setup in that report, this node does advertise Video Capture, so it passes capture_capable() and is still offered as a webcam — while exposing only Bayer formats that mpv av://v4l2: cannot consume.

Evidence

/dev/video0 on this machine (Core Ultra 7 258V, Lunar Lake, sensor OV02C10, mainline intel_ipu7 + ov02c10, no Intel HAL / v4l2-relayd involved):

$ v4l2-ctl -d /dev/video0 --info
Driver name      : isys
Card type        : ipu7
Device Caps      : 0x24200001
        Video Capture          <-- passes the filter added for #5722
        I/O MC
        Streaming
        Extended Pix Format

But every advertised format is raw Bayer:

$ v4l2-ctl -d /dev/video0 --list-formats
    [0]: 'BG12' (12-bit Bayer BGBG/GRGR)
    [1]: 'GB12' (12-bit Bayer GBGB/RGRG)
    [2]: 'BA12' (12-bit Bayer GRGR/BGBG)
    [3]: 'RG12' (12-bit Bayer RGRG/GBGB)
    [4]: 'BG10' (10-bit Bayer BGBG/GRGR)
    ...
    [11]: 'RGGB' (8-bit Bayer RGRG/GBGB)
    [12]: 'pBCC' (12-bit Bayer BGBG/GRGR Packed)
    [13]: 'pGCC' (12-bit Bayer GBGB/RGRG Packed)

There is no YUYV/MJPG/NV12 entry at all. On this hardware the usable camera is reached through libcamera (software ISP) via PipeWire, not through any /dev/video* node.

Impact

$ omarchy hw webcam            # exit 0 — false positive
$ omarchy-capture-webcam-list
/dev/video0  ipu7 (PCI:0000:00:05.0):
  • omarchy hw webcam reports a webcam on machines that have no V4L2-usable camera.
  • omarchy capture screenrecording --with-webcam auto-detects the first entry, so it always lands on the Bayer-only node and produces a black overlay with no error — the same symptom #5722 described.
  • With a v4l2loopback node added, the picker lists the broken /dev/video0 first, so it is also the auto-detect winner:
/dev/video0   ipu7 (PCI:0000:00:05.0):
/dev/video40  Camara integrada (platform:v4l2loopback-040):

Suggested fix

Extend capture_capable() in omarchy-capture-webcam-list to also require at least one non-Bayer pixel format. Raw sensor/ISYS nodes expose Bayer exclusively; every real capture device (UVC, v4l2loopback) exposes at least one consumable format.

capture_capable() {
  local device="$1"

  v4l2-ctl --device "$device" --info 2>/dev/null | awk '
    /^[[:space:]]*Device Caps[[:space:]]*:/ { inspect = 1; next }
    inspect && /^[[:space:]]*Video Capture/ { found = 1 }
    END { exit !found }
  ' || return 1

  # Raw sensor nodes (Intel IPU6/IPU7 ISYS) can advertise Video Capture while
  # exposing only Bayer formats, which mpv/ffmpeg cannot consume.
  v4l2-ctl --device "$device" --list-formats 2>/dev/null | awk '
    /^[[:space:]]*\[[0-9]+\]:/ && !/Bayer/ { found = 1 }
    END { exit !found }
  '
}

This keeps current behaviour for UVC-only laptops (a single passing entry) and collapses the IPU7 case to either the real loopback node or, when none exists, an empty list — which is the honest answer, and lets omarchy hw webcam correctly report no webcam.

Environment

  • Omarchy 4.0.0-1
  • Kernel 7.1.8-arch1-3
  • Intel Core Ultra 7 258V (Lunar Lake), IPU7, sensor OV02C10
  • Mainline intel_ipu7 / intel_ipu7_isys / ov02c10 + libcamera 0.7.2 (software ISP); no Intel camera HAL or v4l2-relayd

Refs #5722.

View raw text
### Summary

The `Device Caps` filter added for #5722 does not exclude the raw sensor node on **IPU7 with the mainline `intel-ipu7` / `isys` driver**. Unlike the IPU6 + `v4l2-relayd` setup in that report, this node *does* advertise `Video Capture`, so it passes `capture_capable()` and is still offered as a webcam — while exposing only Bayer formats that `mpv av://v4l2:` cannot consume.

### Evidence

`/dev/video0` on this machine (Core Ultra 7 258V, Lunar Lake, sensor OV02C10, mainline `intel_ipu7` + `ov02c10`, no Intel HAL / `v4l2-relayd` involved):

```
$ v4l2-ctl -d /dev/video0 --info
Driver name      : isys
Card type        : ipu7
Device Caps      : 0x24200001
        Video Capture          <-- passes the filter added for #5722
        I/O MC
        Streaming
        Extended Pix Format
```

But every advertised format is raw Bayer:

```
$ v4l2-ctl -d /dev/video0 --list-formats
    [0]: 'BG12' (12-bit Bayer BGBG/GRGR)
    [1]: 'GB12' (12-bit Bayer GBGB/RGRG)
    [2]: 'BA12' (12-bit Bayer GRGR/BGBG)
    [3]: 'RG12' (12-bit Bayer RGRG/GBGB)
    [4]: 'BG10' (10-bit Bayer BGBG/GRGR)
    ...
    [11]: 'RGGB' (8-bit Bayer RGRG/GBGB)
    [12]: 'pBCC' (12-bit Bayer BGBG/GRGR Packed)
    [13]: 'pGCC' (12-bit Bayer GBGB/RGRG Packed)
```

There is no YUYV/MJPG/NV12 entry at all. On this hardware the usable camera is reached through libcamera (software ISP) via PipeWire, not through any `/dev/video*` node.

### Impact

```
$ omarchy hw webcam            # exit 0 — false positive
$ omarchy-capture-webcam-list
/dev/video0  ipu7 (PCI:0000:00:05.0):
```

- `omarchy hw webcam` reports a webcam on machines that have no V4L2-usable camera.
- `omarchy capture screenrecording --with-webcam` auto-detects the first entry, so it always lands on the Bayer-only node and produces a black overlay with no error — the same symptom #5722 described.
- With a `v4l2loopback` node added, the picker lists the broken `/dev/video0` **first**, so it is also the auto-detect winner:

```
/dev/video0   ipu7 (PCI:0000:00:05.0):
/dev/video40  Camara integrada (platform:v4l2loopback-040):
```

### Suggested fix

Extend `capture_capable()` in `omarchy-capture-webcam-list` to also require at least one non-Bayer pixel format. Raw sensor/ISYS nodes expose Bayer exclusively; every real capture device (UVC, `v4l2loopback`) exposes at least one consumable format.

```bash
capture_capable() {
  local device="$1"

  v4l2-ctl --device "$device" --info 2>/dev/null | awk '
    /^[[:space:]]*Device Caps[[:space:]]*:/ { inspect = 1; next }
    inspect && /^[[:space:]]*Video Capture/ { found = 1 }
    END { exit !found }
  ' || return 1

  # Raw sensor nodes (Intel IPU6/IPU7 ISYS) can advertise Video Capture while
  # exposing only Bayer formats, which mpv/ffmpeg cannot consume.
  v4l2-ctl --device "$device" --list-formats 2>/dev/null | awk '
    /^[[:space:]]*\[[0-9]+\]:/ && !/Bayer/ { found = 1 }
    END { exit !found }
  '
}
```

This keeps current behaviour for UVC-only laptops (a single passing entry) and collapses the IPU7 case to either the real loopback node or, when none exists, an empty list — which is the honest answer, and lets `omarchy hw webcam` correctly report no webcam.

### Environment

- Omarchy 4.0.0-1
- Kernel 7.1.8-arch1-3
- Intel Core Ultra 7 258V (Lunar Lake), IPU7, sensor OV02C10
- Mainline `intel_ipu7` / `intel_ipu7_isys` / `ov02c10` + libcamera 0.7.2 (software ISP); no Intel camera HAL or `v4l2-relayd`

Refs #5722.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 04:34 UTC