Compatibility

The current delivery targets are x86_64 Linux systems with V4L2 and Linux-PAM; source builds require Rust 1.88+. Package validation covers Arch, Debian 13 (trixie), Ubuntu 26.04 LTS (resolute), and Fedora 43/44/45. RHEL is not in the supported matrix. Source templates exist for OpenRC, runit, and s6, but that does not establish package or hardware support for every distribution using those supervisors.

Tested Distributions

Debian-family release support is exactly Debian 13 (Trixie) and Ubuntu 26.04 LTS (Resolute). Other Debian and Ubuntu releases are unsupported.

DistributionInit SystemModeStatus
Arch Linuxsystemddaemon + D-Bus activationPrimary target
Debian 13 (Trixie)systemddaemon + D-Bus activationBooted package gate
Ubuntu 26.04 LTS (Resolute)systemddaemon + D-Bus activationBooted package gate
Fedora 43/44/45systemddaemon + D-Bus activationRelease matrix target

Expected to Work (untested)

No additional distribution is claimed as expected to work. Source templates do not convert a distribution into an untested support claim.

Cameras and formats

Facelock classifies an IR node from its advertised format set or an exact hardware quirk. It does not use a device name containing “IR” as evidence. The current hardware validation record covers the Logitech BRIO 046d:085e IR node using native GREY. Do not infer support for Intel RealSense or “Windows Hello” cameras from their product category alone.

FormatAuthentication support
GREYsupported 8-bit grayscale path
Y16conditional on a hardware-verified y16_bit_depth quirk from 8 through 16
YUYV, NV12, MJPGsupported decode paths; normally RGB unless an exact quirk says otherwise
Y8, Y10, Y12IR-classification evidence only; not decoded
raw Bayer and other formatsnot supported

The shipped RealSense Y16 quirks deliberately have no bit-depth evidence, so authentication rejects those Y16 paths. A 16-bit V4L2 container does not prove the sensor's meaningful bit depth. Auto-detection excludes devices with no decodable format and reports the advertised formats.

RGB operation requires security.require_ir = false and is for development. Frame variance and any enabled landmark-liveness check still apply, but they do not restore the default IR boundary or guarantee resistance to presentation attacks. See the canonical Compatibility page on GitHub for the IPU6/IPU7 relay notes, exact negotiation order, and current validation evidence.

Init and PAM

systemd with D-Bus activation is the packaged daemon path. On non-systemd systems, use daemon.mode = "oneshot" or install one of the source-tree OpenRC/runit/s6 templates after a source install. The daemon command must run as root.

Test PAM on sudo first while retaining a root recovery shell. Shared stacks, console login, and SSH are sensitive targets and require the CLI's explicit --allow-sensitive gate. PAM service availability is distribution-specific; use facelock pam status rather than assuming a path exists.

Inference providers

CPU is the default and tested provider. CUDA, ROCm, and OpenVINO require a matching ONNX Runtime build; configuration support is not evidence that a GPU or a particular runtime package has been validated. The setup auto choice inspects providers compiled into ONNX Runtime, not the hardware.