fingerprintd/README.md
Jorijn van der Graaf 09b50bdabf
All checks were successful
package / package (push) Successful in 1m30s
readme
2026-09-05 22:35:23 +02:00

1.7 KiB

fingerprintd

Fingerprint daemon for the Fairphone 6 (milos, SM7635) on mainline Linux.

fingerprintd-core is a static library with no GLib, no libqcomtee and no system headers. Everything in it is a wire format or a state machine that was recovered by reverse-engineering, so all of it is pinned by tests that run on a dev box with no phone, no TEE and no sensor. The daemon shell holds everything that touches hardware.

Build

crafter-build              # bin/fingerprintd-<target>-<march>/fingerprintd
crafter-build test         # the unit suites

Cross-compiling for the phone:

packaging/make-sysroot.sh
crafter-build -- --target=aarch64-alpine-linux-musl --sysroot=~/.cache/fingerprintd/sysroot-aarch64-alpine --march=armv8-a --mtune=generic
crafter-build test --target=aarch64-alpine-linux-musl --sysroot=~/.cache/fingerprintd/sysroot-aarch64-alpine --march=armv8-a --mtune=generic

Verified on the device: all five suites pass cross-built and run on the phone itself, not only under emulation.

fprintd-enroll -f right-index-finger user   ten stages, enroll-completed
fprintd-list user                            - #0: right-index-finger
fprintd-verify user   (wrong finger)         verify-no-match, on the first press
fprintd-verify user   (enrolled finger)      verify-match,    on the first press

Runtime dependencies, not carried here

The focal64 trustlet is proprietary and is not in this repo. It is extracted from the device's own stock Android partition on first boot by the fp6-vendor-blobs mechanism, the same way the audio firmware is.

License

GPL-3.0-only, see LICENSE.

Copyright (C) 2026 Catcrafts® catcrafts.net