If you’ve been following my previous work with DigitalPersona fingerprint readers on Linux, you’ll be aware that what was an active and exciting project was reduced to almost nothing when it became apparent that open source fingerprinting code was possibly in conflict with U.S. export control laws.
Well, after studying the export control documents in detail, I discovered that these restrictions simply do not apply. I decided to propose my 3rd year university project as an open source software project to really sort out the state of fingerprinting on Linux. This project is now underway. For an overview, look at this poster.
The core project component, libfprint, aims to make it easy for application developers to add fingerprinting support to their applications – be it imaging or verification (or in future, identification). libfprint strives to provide you a single API for manipulating fingerprint readers in the most generic of fashions. Internally, a variety of different devices are supported through a driver-like abstraction. These devices do differ tremendously, but libfprint works to wrap that up so that as an application developer, you don’t care what type of device the user has plugged in.
As this is an academic project, it was necessary to keep development closed while I implement the fundamentals myself. I’m now at a point where I’m able to release this as open source and accept contributions in the normal way. I plan to keep this project going beyond the academic project schedule and I’d love to see a community forming. In the long term I’m aiming for inclusion with major distros, integration into desktop environments, etc.
Quick summary of where things are at:
- libfprint is relatively stable and works well with most devices
- a PAM module named pam_fprint has been created, which allows you to use your fingerprint to login to your system
- The code is all in git repositories, there are initial releases but there are no guarantees of stability or forwards-compatibility
- API documentation is mostly complete, but is subject to change without notice
- I’ve been working hard to get a decent amount of content on the project website
Hardware currently supported:
- UPEK TouchStrip (found in many ThinkPads) – works great, we already knew this as ThinkFinger is quite successful
- DigitalPersona/Microsoft devices – these work fantastically well
- Authentec AES2501 – an imaging device, swipe sensor, works well (requires a little extra care while scanning).
- Authentec AES4000 – an imaging device I haven’t really played with before. Image quality isn’t that brilliant, but it’s good enough for fingerprint login if you’re careful.
I’m very happy with the project so far. I’m pretty sure I’m the first person to fully implement open source fingerprint login for the DigitalPersona devices, the AES2501, and the AES4000, plus I’ve done it in a generic way which interchangeably works with all supported devices.
Please direct all questions/bug reports to the mailing list, please don’t use the comment form on this post for anything other than comments.