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-1656GitHub issuePublicDecided· Out of scope

ELAN 04f3:0c4b fingerprint reader never matches under stock libfprint (ThinkPad E14/E15 Gen 3/4) — works with libfprint-tod instead

Reported by jcperdomoybarra · filed Aug 19, 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

ELAN 04f3:0c4b fingerprint reader never matches under stock libfprint (ThinkPad E14/E15 Gen 3/4) — works with libfprint-tod insteadrevision 1 · captured 2026-09-28 21:29 UTC via poll

What happened

omarchy-setup-security-fingerprint installs stock libfprint + fprintd
and drives enrollment/verification through the open-source elan.c driver.
For the ELAN 04f3:0c4b fingerprint reader (ThinkPad E14/E15 Gen 3 and
Gen 4, at least), that driver treats the sensor as a swipe sensor and
matches with NBIS/Bozorth3 entirely in software:

fprintd-enroll   # completes fine, all stages pass
fprintd-verify   # NEVER matches — Bozorth3 score is exactly 0/24,
                 # every single attempt, regardless of finger, technique,
                 # orientation, or speed

25+ verify attempts across multiple sessions, always a literal 0 score
(never even a partial match). The script itself doesn't fail loudly —
enrollment and the first verify both "succeed" from the script's point of
view (fprintd-verify just needs one non-zero exit at setup time, and a
lucky first touch can pass), so PAM gets wired up for a reader that then
never reliably authenticates in daily use.

Why this is a packaging/hardware-detection problem, not a bug in the script's logic

This sensor isn't actually a swipe sensor in the way the open driver
assumes — Lenovo's own Windows driver, and a proprietary Linux
libfprint-tod plugin Lenovo ships for it, both drive it as a
press/area sensor instead:

Broken on this PID:  04f3:0c4b → elan.c (open) → swipe capture → NBIS/Bozorth3 → 0/24
Working on this PID: 04f3:0c4b → libfprint-tod → Lenovo's proprietary driver → "press"

Switching drivers (not patching elan.c) is what actually fixes it —
confirmed with 10/10 fprintd-verify passes after the switch, and
working sudo, polkit, and lock-screen auth via the existing Omarchy PAM
setup (no PAM changes needed — pam_fprintd.so talks to fprintd over
D-Bus regardless of which driver is loaded underneath).

I wrote up the full fix — root cause, step-by-step instructions, a
security note on the proprietary binary involved (verified byte-for-byte
against Lenovo's own download before trusting it), and how to protect the
non-standard packages from being silently touched by omarchy update —
here, in case it's useful for anyone else with this hardware:

https://github.com/jcperdomoybarra/thinkpad-elan-04f3-0c4b-fingerprint-fix

I'm not proposing a specific code change to
omarchy-setup-security-fingerprint in this issue — mostly flagging that
this PID is a known-bad case for the stock driver, in case the Omarchy
maintainers want to special-case a warning/detection for it the way #7006
covers 06cb:009a. Happy to help test or discuss if that's of interest.

Environment

  • Omarchy 4.0.0
  • Kernel 7.1.8-arch1-3
  • ThinkPad E15 Gen 3 (AMD)
  • Sensor: 04f3:0c4b ELAN Microelectronics (ElanTech Fingerprint Sensor

under the open driver)
- Stock stack that fails to match: libfprint 1.94.100-1, fprintd 1.94.5-2
- Working alternate stack: libfprint-tod-git 1.95.1+tod1-1,
libfprint-2-tod1-elan 0.0.1-2, openssl-1.1 1.1.1.w-11 (all AUR)

View raw text
## What happened

`omarchy-setup-security-fingerprint` installs stock `libfprint` + `fprintd`
and drives enrollment/verification through the open-source `elan.c` driver.
For the ELAN `04f3:0c4b` fingerprint reader (ThinkPad E14/E15 Gen 3 and
Gen 4, at least), that driver treats the sensor as a swipe sensor and
matches with NBIS/Bozorth3 entirely in software:

```
fprintd-enroll   # completes fine, all stages pass
fprintd-verify   # NEVER matches — Bozorth3 score is exactly 0/24,
                 # every single attempt, regardless of finger, technique,
                 # orientation, or speed
```

25+ verify attempts across multiple sessions, always a literal `0` score
(never even a partial match). The script itself doesn't fail loudly —
enrollment and the first verify both "succeed" from the script's point of
view (`fprintd-verify` just needs one non-zero exit at setup time, and a
lucky first touch can pass), so PAM gets wired up for a reader that then
never reliably authenticates in daily use.

## Why this is a packaging/hardware-detection problem, not a bug in the script's logic

This sensor isn't actually a swipe sensor in the way the open driver
assumes — Lenovo's own Windows driver, and a proprietary Linux
`libfprint-tod` plugin Lenovo ships for it, both drive it as a
**press/area** sensor instead:

```
Broken on this PID:  04f3:0c4b → elan.c (open) → swipe capture → NBIS/Bozorth3 → 0/24
Working on this PID: 04f3:0c4b → libfprint-tod → Lenovo's proprietary driver → "press"
```

Switching drivers (not patching `elan.c`) is what actually fixes it —
confirmed with 10/10 `fprintd-verify` passes after the switch, and
working `sudo`, polkit, and lock-screen auth via the existing Omarchy PAM
setup (no PAM changes needed — `pam_fprintd.so` talks to `fprintd` over
D-Bus regardless of which driver is loaded underneath).

I wrote up the full fix — root cause, step-by-step instructions, a
security note on the proprietary binary involved (verified byte-for-byte
against Lenovo's own download before trusting it), and how to protect the
non-standard packages from being silently touched by `omarchy update` —
here, in case it's useful for anyone else with this hardware:

https://github.com/jcperdomoybarra/thinkpad-elan-04f3-0c4b-fingerprint-fix

I'm not proposing a specific code change to
`omarchy-setup-security-fingerprint` in this issue — mostly flagging that
this PID is a known-bad case for the stock driver, in case the Omarchy
maintainers want to special-case a warning/detection for it the way #7006
covers `06cb:009a`. Happy to help test or discuss if that's of interest.

## Environment

- Omarchy 4.0.0
- Kernel 7.1.8-arch1-3
- ThinkPad E15 Gen 3 (AMD)
- Sensor: `04f3:0c4b` ELAN Microelectronics (`ElanTech Fingerprint Sensor`
  under the open driver)
- Stock stack that fails to match: `libfprint 1.94.100-1`, `fprintd 1.94.5-2`
- Working alternate stack: `libfprint-tod-git 1.95.1+tod1-1`,
  `libfprint-2-tod1-elan 0.0.1-2`, `openssl-1.1 1.1.1.w-11` (all AUR)

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:47 UTC