Digital Persona UareU Fingerprint Sensor driver for Linux
I recently mentioned my new project, writing a Linux driver for the “Microsoft Optical Desktop with Fingerprint Reader” keyboard. The keyboard works fine already (its just HID), but the fingerprint reader sensor requires its own driver, which I’m aiming to create.
Thanks to Tony Vroon from Gentoo for donating this device to me, and to the people who sent emails/comments after the last mention of this. Through this information and some extra googling, I now know:
- The fingerprint sensor is almost certainly designed/manufactured by Digital Persona, a biometrics company recently assimilated by Microsoft.
- The fingerprint sensor is probably a Digital Persona UareU 4000
- If this is true, the fingerprint image is encrypted…
- …but a developer familiar with the UareU Windows API suggests that the encryption key is defined by the host computer at installation time.
- …and this forum post suggests that the Microsoft keyboard lacks some features of the UareU 4000.
- The encryption algorithm might be XTEA (source)
- VALinux Japan have done some biometrics work, including fingerprint-based login using UareU devices. A presentation (html, pdf) suggests that they have produced/obtained a uareu kernel module which has a /dev/usb/uareu char interface. I wonder if they can help me out.
- The device is firmware-based, or at least, the driver sends a 1904 byte blob of data found inside one of the windows DLL files on every plugin.
- This guy also seems to have run into the uareu module. Can anyone help me find his email address?
I’m naming my driver dpfp and the initial work can be found here. So far I have created a script to extract the firmware from the windows driver distribution, and a skeleton driver which pulses the light around the sensor 3 times on plugin (looks very cool!). I’m a bit stuck on the next step, the sniffed data suggests the Windows driver is doing things which are impossible (sending data in the wrong direction). I’ve been experimenting trying to guess what it might be doing, but I haven’t been able to provoke the expected response yet (which is the device sending a section of the firmware back to the host computer — again strange…).
If any other Linux users are in possession of one of these keyboards or a standalone UareU reader, then please email me. I will send in an article to linuxbiometrics.com soon.
Update November 2007: I see I’m still getting a lot of hits from “digitalpersona linux” on Google (I’m still #1). I’ve recently launched a new project called fprint which supports DigitalPersona devices under Linux. Click to go to the project homepage.