Home - owaink/libfprint GitHub Wiki

I want to use my Goodix fingerprint scanner, how do I do it?!?!

Hold your horse's, buckaroo. This project is nowhere near ready for even beta use, let alone daily use. Some drivers """work""", but haven't been tested for stability, security, usability, etc, etc. Other drivers are being developed and may not compile. Even more drivers haven't been started yet, and some we haven't heard of yet and are completely untracked.

tl;dr: This won't make your scanner work yet

What is this project?

This project is an effort to add support for Goodix fingerprint scanners to Libfprint so they can be more readily supported throughout the Linux ecosystem. Once completed, Goodix fingerprint scanners should be usable anywhere Libfprint is supported, such as unlocked your laptop.

What is Libfprint?

Libfprint wraps supported fingerprint drivers with a known, uniform, stable API so that applications don't need to support each vendor, or worse, each fingerprint scanner individually. The main project is libfprint, this project is simply an extension of it.

Why does this project exist?

Goodix is one of the largest suppliers of fingerprint scanners, so their scanners are found on many, many devices, such as smartphones and laptops. Goodix has refused to support their fingerprint scanners on Linux with even a closed source driver, so the community has taken it upon themselves to add support ourselves.

How is the community adding support for scanners on their own?

Support is largely coming from reverse engineering efforts from the Windows driver that Goodix has published. By observing traffic between the fingerprint sensor and the Windows driver in a virtual machine, we can determine how the Windows driver and the fingerprint sensor communicate, then implement that protocol in our own open-source driver for Linux.

Sounds hard, do we really need to do all that for every scanner?

Thankfully, no! Since this project is focused specifically on Goodix devices, the devices we are working on, by and large, use the same protocols and architecture. Each time a device is reverse engineered, the next one should be easier! A rising tide lifts all ships.

What's the current status of the project and/or what's the status of {my scanner}

A significant amount of reverse engineering has been done on many different devices, so there are a lot of good footholds for more development to take place. As of right now (10/30/2022), the most common roadblock is that Goodix scanners have too low of a resolution to work with the recognition algorithm Libfprint uses, so a new one needs to be developed. You can see current status of your specific driver here TODO

How can I help?

Any way you can think of to contribute to the project is appreciated. At the moment (10/30/2022), more work needs to be done on reversing sensors, documenting the project, developing device specific drivers, and developing the low resolution matching algorithm need for our devices. Ask in the community discord for specifics