README: Mention validity-sensors-initializer
This commit is contained in:
parent
c43b99a02e
commit
23f7fd94ca
1 changed files with 37 additions and 3 deletions
40
README.md
40
README.md
|
|
@ -9,7 +9,41 @@ To install Python dependencies run
|
||||||
$ pip3 install -r requirements.txt
|
$ pip3 install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Getting the firmware
|
## Initialization
|
||||||
|
|
||||||
|
### Automatic factory reset, pairing and firmware flashing
|
||||||
|
|
||||||
|
This repo includes `validity-sensors-initializer.py`, 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:
|
||||||
|
- 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor
|
||||||
|
- 138a:0097 Validity Sensors, Inc.
|
||||||
|
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:
|
||||||
|
- Device is factory-reset and its flash repartitioned
|
||||||
|
- A TLS key is negotiated, generated via host hw ID and serial
|
||||||
|
- Windows driver is downloaded from Lenovo to extract the device firmware
|
||||||
|
- The device firmware is uploaded to the device
|
||||||
|
- The device is calibrated
|
||||||
|
|
||||||
|
Once the chip is paired with the computer via this tool, it's possible to use
|
||||||
|
it in libfprint using the driver at
|
||||||
|
- https://github.com/3v1n0/libfprint/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Getting the firmware
|
||||||
|
|
||||||
It's possible to just extract [official Lenovo device driver for vfs0097](https://support.lenovo.com/us/en/downloads/DS121407) or [driver for vfs0090](https://support.lenovo.com/us/en/downloads/DS120491) (also [part of the SCCM package](https://support.lenovo.com/ec/th/downloads/DS112113) using [innoextract](https://constexpr.org/innoextract/) (available for all the distros), or `wine`.
|
It's possible to just extract [official Lenovo device driver for vfs0097](https://support.lenovo.com/us/en/downloads/DS121407) or [driver for vfs0090](https://support.lenovo.com/us/en/downloads/DS120491) (also [part of the SCCM package](https://support.lenovo.com/ec/th/downloads/DS112113) using [innoextract](https://constexpr.org/innoextract/) (available for all the distros), or `wine`.
|
||||||
|
|
||||||
|
|
@ -18,7 +52,7 @@ The only reason you need to do this is to find `6_07f_lenovo_mis.xpfwext` (for v
|
||||||
innoextract n1mgf03w.exe -e -I 6_07f_lenovo_mis.xpfwext # vfs0097
|
innoextract n1mgf03w.exe -e -I 6_07f_lenovo_mis.xpfwext # vfs0097
|
||||||
innoextract n1cgn08w.exe -e -I 6_07f_Lenovo.xpfwext # vfs0090
|
innoextract n1cgn08w.exe -e -I 6_07f_Lenovo.xpfwext # vfs0090
|
||||||
|
|
||||||
## Factory reset
|
### Factory reset
|
||||||
If your device was previously paired with another OS or computer, you need to do a factory reset.
|
If your device was previously paired with another OS or computer, you need to do a factory reset.
|
||||||
This will erase all fingers from the internal database and make the device ready for pairing.
|
This will erase all fingers from the internal database and make the device ready for pairing.
|
||||||
```
|
```
|
||||||
|
|
@ -26,7 +60,7 @@ $ python3 factory-reset.py
|
||||||
$
|
$
|
||||||
```
|
```
|
||||||
|
|
||||||
## Pairing
|
### Pairing
|
||||||
After performing a factory reset you need to pair your device with a host computer.
|
After performing a factory reset you need to pair your device with a host computer.
|
||||||
This must be done only once, before you can enroll/identify/verify fingers.
|
This must be done only once, before you can enroll/identify/verify fingers.
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue