fix: enable sigfm for goodix511 and fix Debian build - #37
Conversation
- Set algorithm = FPI_DEVICE_ALGO_SIGFM in goodix511 class_init; without
this the driver silently falls back to NBIS regardless of sigfm being
compiled in, causing verify-no-match on every attempt
- Add contrast normalization in crop_frame to improve sigfm keypoint
detection on the low-resolution 80x64 sensor images
- Replace dependency('udev') with dependency('libudev') in meson.build
(two occurrences) to fix build on Debian where the pkg-config name
differs from upstream expectations
- Make doctest optional in libfprint/sigfm/meson.build so the library
builds without the test framework installed
Tested on Debian with Goodix TLS Fingerprint Sensor 511 (27c6:5110).
|
Independent confirmation of the root cause, on different hardware and a I hit the same symptom on a Huawei MateBook D ( To be clear about what I tested: I applied only the What made it unambiguous was that Before and after, same finger, same session:
Scores once sigfm is actually invoked, against the enrolled samples: Worth noting for anyone tempted to lower it: Full stack now works end to end — One thing this PR does not cover: enrolment on this sensor also hits the 180s |
|
Follow-up: I've now tested the It measurably works, and it fixes a problem I had been working around by hand. Without it, enrolment yield tracked how moist the fingertip was. Across one
Deliberately breathing on the finger before each press took it from 2 accepted With your normalisation, same finger, same sensor, deliberately dry: 95% yield dry, versus 5% dry before. So this is not a marginal improvement: Makes sense given the sensor output — the raw frames occupy a narrow band of Both hunks in this PR are now verified independently on Ubuntu 24.04 / MateBook D I have not tested the |
Problem
On Debian with a Goodix TLS Fingerprint Sensor 511 (
27c6:5110), enrollment completes successfully butfprintd-verifyalways returnsverify-no-match.Root cause
fpi_device_goodixtls511_class_initnever setsimg_dev_class->algorithm, sofp-image-device.cfalls back toFPI_PRINT_NBIS(the default, value0). The sigfm library is compiled and linked but never invoked. NBIS performs poorly on the sensor's low-resolution 80×64 images, hence the consistent match failure.Changes
libfprint/drivers/goodixtls/goodix511.cimg_dev_class->algorithm = FPI_DEVICE_ALGO_SIGFMin class init so sigfm is actually usedcrop_frameto stretch pixel values to the full 0–255 range, improving keypoint detection on the low-contrast sensor imagesmeson.builddependency('udev')withdependency('libudev')in both occurrences — on Debian the pkg-config name islibudev, notudev, causing the build to fail before reaching compilationlibfprint/sigfm/meson.builddoctestasrequired: falseand guard the test executable behindif doctest.found()— the test framework is not needed to build or use the libraryTesting
Tested on Debian 13 (trixie) with:
27c6:5110)After applying these changes,
fprintd-enrollandfprintd-verifyboth work correctly.