Skip to content

AbdulRehmanMehar/libfprint-goodix-53x5

Repository files navigation

LibFPrint

LibFPrint is part of the FPrint project.


Button Website Button Documentation

Button Supported Button Unsupported

Button Contribute Button Contributors

History

LibFPrint was originally developed as part of an academic project at the University Of Manchester.

It aimed to hide the differences between consumer fingerprint scanners and provide a single uniform API to application developers.

Goal

The ultimate goal of the FPrint project is to make fingerprint scanners widely and easily usable under common Linux environments.

License

Section 6 of the license states that for compiled works that use this library, such works must include LibFPrint copyright notices alongside the copyright notices for the other parts of the work.

LibFPrint includes code from NIST's NBIS software distribution.

We include Bozorth3 from the US Export Controlled distribution, which we have determined to be fine being shipped in an open source project.

Goodix 53x5 Support

This fork adds support for the Goodix 53x5 (27c6:53x5) fingerprint sensor using SIGFM, a custom OpenCV/SIFT-based fingerprint matcher that replaces the traditional NBIS/Bozorth3 minutiae pipeline for this device.

See the Technical Architecture section below and CHANGELOG.md for full details.

Technical Architecture

Standard Pipeline vs. SIGFM

The upstream LibFPrint matching path relies on NBIS Bozorth3, a minutiae-based algorithm originally developed by NIST. While robust for optical sensors with high-contrast ridge maps, Bozorth3 struggles with the lower-resolution, noisier images produced by capacitive sensors such as the Goodix 53x5.

SIGFM (SIFT-based Fingerprint Matcher) replaces the minutiae extraction + Bozorth3 scoring path with a feature-descriptor approach built on OpenCV's SIFT (Scale-Invariant Feature Transform):

Capture → CLAHE Enhancement → SIFT Detect & Compute → BFMatcher (kNN) → Geometric Verification → Score

Build System Changes

Change Detail
Project languages Added cpp to the Meson project() declaration.
OpenCV dependency opencv4 is pulled via dependency('opencv4') in libfprint/meson.build.
Static library libsigfm is compiled from sigfm/sigfm.cpp with -std=c++17 and linked into the main shared library.

Algorithmic Tuning (sigfm.cpp)

The following thresholds were tuned specifically for the Goodix 53x5 capacitive sensor characteristics (elastic skin distortion, partial prints, and hardware noise):

Parameter Upstream Default Tuned Value Rationale
distance_match (Lowe's Ratio) 0.85 0.90 Retains more SIFT candidate matches before geometric verification.
length_match 0.05 (5 %) 0.10 (10 %) Accommodates length variance caused by pressure differences and elastic skin deformation.
angle_match 0.05 (5 %) 0.10 (10 %) Tolerates rotational variance from inconsistent finger placement.
CLAHE clipLimit 2.0 3.0 Suppresses high-frequency noise inherent to Goodix capacitive sensor hardware while preserving ridge detail.

Systemd / fprintd Authentication Fix

On modern distributions (Ubuntu 24.04+ / Questing and similar), GNUTLS handshake failures can prevent fprintd from completing D-Bus authentication. A Systemd service override is required:

# /etc/systemd/system/fprintd.service.d/override.conf
[Service]
Environment="G_TLS_GNUTLS_PRIORITY=NORMAL:%COMPAT"

After creating the file, reload and restart:

sudo systemctl daemon-reload
sudo systemctl restart fprintd.service

Get in touch

  • IRC - #fprint @ irc.oftc.net
  • Matrix - #fprint:matrix.org bridged to the IRC channel
  • MailingList - low traffic, not much used these days

Badge License

About

Custom libfprint driver for Goodix 27c6:53x5 sensors. Features tuned OpenCV/SIFT matching for improved reliability and bypasses GTLS identity handshake failures on modern Linux distributions.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors