A simple tool that helps initializing Validity fingerprint readers under linux, loading their binary firmware and initializing them.
This tool currently only supports these sensors:
Which are present in various ThinkPad and HP laptops.
These devices communicate with the laptop via an encrypted protocol and they need to be paired with the host computer in order to work and compute the TLS keys. Such initialization is normally done by the Windows driver, however thanks to the amazing efforts of Viktor Dragomiretskyy (uunicorn), and previously of Nikita Mikhailov, we have reverse-engineerd the pairing process, and so it's possible to do it under Linux with only native tools as well.
The procedure is quite simple:
Here's some output example:
$ sudo validity-sensors-tools.initializer
Found device <DEVICE ID 138a:0090 on Bus 001 Address 048>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1cgn08w.exe to extract 6_07f_Lenovo.xpfwext
Extracting "Synaptics Metallica MOH Touch Fingerprint Reader Driver" - setup data version 5.5.7
- "app/WBF_Drivers/6_07f_Lenovo.xpfwext"
Done.
Found firmware at /tmp/tmpq54yeu6a/app/WBF_Drivers/6_07f_Lenovo.xpfwext
The device will be now reset to factory and associated to the current laptop.
Press Enter to continue (or Ctrl+C to cancel)...
Opening device 0x90
Factory reset...
Sleeping...
Pairing the sensor with device 20FWCTO1WW
Opening device 0x90
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Opening device 0x90
Clean slate
Uploading firmware...
Sensor: VSI 55E FM72-002
Loaded FWExt version 1.0 (Tue Nov 8 10:05:20 2016), 6 modules
Sleeping...
Opening device 0x90
Calibrating, re-using calib-data.bin, if any...
Sensor: VSI 55E FM72-002
FWExt version 1.0 (Tue Nov 8 10:05:20 2016), 6 modules
len=131480
Calibration data saved at /tmp/tmp7u2llp9z/calib-data.bin
Init database...
Creating a new user storage object
Creating a host machine GUID record
That's it, pairing with <DEVICE ID 138a:0090 on Bus 001 Address 048> finished
May the leds be with you (in 5 seconds)...!
You can test whether the pairing has been successfully by launching the command sudo validity-sensors-tools.led-test
For 138a:0097 it's also possible to enroll fingers in the internal storage doing:
validity-sensors-tools.enroll --finger-id [0-9]
Once the chip is paired with the computer via this tool, it's possible to use it in libfprint using the driver at
Thank you for your report. Information you provided will help us investigate further.
There was an error while sending your report. Please try again later.
You are about to open
Do you wish to proceed?
Snaps are applications packaged with all their dependencies to run on all popular Linux distributions from a single build. They update automatically and roll back gracefully.
Snaps are discoverable and installable from the Snap Store, an app store with an audience of millions.
Snap is available for CentOS 7.6+, and Red Hat Enterprise Linux 7.6+, from the Extra Packages for Enterprise Linux (EPEL) repository. The EPEL repository can be added to your system with the following command:
sudo yum install epel-release
Snap can now be installed as follows:
sudo yum install snapd
Once installed, the systemd unit that manages the main snap communication socket needs to be enabled:
sudo systemctl enable --now snapd.socket
To enable classic snap support, enter the following to create a symbolic link between /var/lib/snapd/snap
and /snap
:
sudo ln -s /var/lib/snapd/snap /snap
Either log out and back in again, or restart your system, to ensure snap’s paths are updated correctly.
To install Validity fingerprint Sensors Linux tools, simply use the following command:
sudo snap install validity-sensors-tools
Browse and find snaps from the convenience of your desktop using the snap store snap.
Interested to find out more about snaps? Want to publish your own application? Visit snapcraft.io now.