Git Product home page Git Product logo

libfprint's Introduction

Validity Sensor 138a:0090 and 138a:0097 libfprint driver

A linux driver for 2016 ThinkPad's fingerprint readers

See it in action!`

Thanks to the amazing work that nmikhailov did in his prototype and uunicorn in python-validity and synaWudfBioUsb-sandbox, I spent some time in getting a libfprint driver for the 138a:0090 (and 138a:0097) device up...

  • It only works if the device has been initialized using validity-sensors-tools/
    • Alernatively, but it's less secure, you can use a Windows installation with VirtualBox (sharing USB) guest or with a Windows installation in bare metal
  • This version works only with fprintd2, if you still use fprintd see the old version.
  • Most of the device interaction and crypto code is coming from the prototype, so basically it needs lots of cleanup, but I hope to rebase this on the code from python-validity
  • Here enroll, verification, led and all the operations work
  • It uses libfprint image comparison algorithm, we might move to in-device check later.

You can test it using the examples or just using fprintd-* tools (GNOME supports it natively from control center).

Device initialization and pairing

I recommend using the validity-sensors-tools/, you can install it in any distro as snap, or you can use it manually from sources located in my python validity fork

sudo snap install validity-sensors-tools

# Give it access to the usb devices
sudo snap connect validity-sensors-tools:raw-usb
sudo snap connect validity-sensors-tools:hardware-observe

# Initialize the device
sudo validity-sensors-tools.initializer

# Test the device
sudo validity-sensors-tools.led-test

# This is needed and only works in 138a:0097:
sudo validity-sensors-tools.enroll --finger-id [0-9]

# See other available tools
validity-sensors-tools --help

Get it from the Snap Store

Match on Chip

This is the only supported way by 138a:0097, so once you've enrolled your fingers with validity-sensors-tools.enroll you will be able to re-enroll your fingers in fprintd to use them in linux as well.

This unfortunately can't be done in 138a:0090, but you can still use a Windows installation (even in VirtualBox) to enroll the prints to save them in the chip and enable the match-on-sensor, this can make the verification faster, safer and higher quality.
Unfortunately there's currently no easy way to implement this in this driver without reverse-engineer the fingerprint template creation that the windows drivers does in host.

Ubuntu installation

If you're using ubuntu just use this PPA to get the libfprint TOD packages with vfs0090 sensor support.

Also, in the ubuntu (and derivates) the code that you will use will be based on the tod submodule.

You can enroll your fingers by using the fprintd-enroll utility or from UI using unity-control-center user-accounts in unity or gnome-control-center user-accounts in GNOME (it's the same as going in System settings -> User accounts pane and enable the fingerprint login).

So, in steps (for ubuntu) it would be:

# Initialize the device
sudo snap install validity-sensors-tools
sudo snap connect validity-sensors-tools:raw-usb
sudo snap connect validity-sensors-tools:hardware-observe
sudo validity-sensors-tools.initializer

# Add the repository and install the tod package (supports both chips)
sudo add-apt-repository -u ppa:3v1n0/libfprint-vfs0090
sudo apt install libfprint-2-tod-vfs0090

Then go in system settings (account) and enable the fingerprint login

Arch linux Installation

Install packages:

  • fprintd
  • libfprint-vfs0090-git from AUR

Fedora (tested on 28)

  • sudo dnf install -y libusb*-devel libtool nss nss-devel gtk3-devel glib2-devel openssl openssl-devel libXv-devel gcc-c++
  • git clone https://github.com/3v1n0/libfprint
  • meson libfprint libfprint/_build && sudo ninja -C libfprint/_build install

NixOS

NixOS has the tod module in nixpkgs-unstable (merged June 2021). On release 21.05 or newer, and assuming pkgsUnstable is an unstable nixpkgs, configure like this:

{
  services.fprintd.enable = true;
  services.fprintd.tod.enable = true;
  services.fprintd.tod.driver = pkgsUnstable.libfprint-2-tod1-vfs0090;
}

Other distros

  • git clone https://github.com/3v1n0/libfprint
  • meson libfprint libfprint/_build && sudo ninja -C libfprint/_build install

fprintd enrolling

for finger in {left,right}-{thumb,{index,middle,ring,little}-finger}; do fprintd-enroll -f "$finger" "$USER"; done

Help testing (only for 138a:0090)

It would be nice if you could help in tuning the value of the bz3_threshold, as that's the value that defines how different should be the prints, and so it's important for having better security. I've set it to 12 currently, but of course increasing the number of prints we enroll or the image quality that could be increased.

Using fprint_demo or monitor fprintd from journalctl you should be able to see the values such as fpi_img_detect_minutiae and fpi_img_compare_print_data in the log, like

fp:debug [fpi_img_new] length=82944
fp:debug [fpi_imgdev_image_captured]
fp:debug [fpi_img_detect_minutiae] minutiae scan completed in 0,080257 secs
fp:debug [fpi_img_detect_minutiae] detected 18 minutiae
fp:debug [print_data_new] driver=15 devtype=0000
fp:debug [fpi_img_compare_print_data] score 9
fp:debug [fpi_img_compare_print_data] score 12
fp:debug [fpi_img_compare_print_data] score 18
fp:debug [fpi_img_compare_print_data] score 10
fp:debug [fpi_img_compare_print_data] score 12

The score is the value the print got for you, compared to each sample that fprint saves... And to match it needs to reach the said threshold (so 12 for now). For my fingers this value seems secure enough, but.... Let's see if we can increase it.

libfprint's People

Contributors

3v1n0 avatar alexiade avatar anarsoul avatar andree182 avatar antoneliasson avatar azzieg avatar blackwolf12333 avatar carlosolmedo avatar cgwalters avatar clktmr avatar davekuan avatar diegovasconcelos avatar evgvir avatar fabled avatar gchain avatar gentakojima avatar guidograzioli avatar gws avatar hadess avatar hmaarrfk avatar iafilatov avatar jbicha avatar jonasloos avatar juvenn avatar jwrdegoede avatar moben avatar patrickmarlier avatar teknoraver avatar tintou avatar valodim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libfprint's Issues

Protocol Error on Arch T470s device 138a:0097

I spend two days to get my fingerprint reader working but got nowhere.

Fingerprint reader
Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc.

Installed versions:

fprintd 1.90.1-1
libfprint-vfs009x-git 1:1.90.1.r6.g2978dc0-2

Build it multiple times but fprintd-enroll will always give me

Using device /net/reactivated/Fprint/Device/0
failed to claim device: Open failed with error: The driver encountered a protocol error with the device.

Journal Entry

Mai 23 17:21:18 T470 systemd[1]: Starting Fingerprint Authentication Daemon...
Mai 23 17:21:19 T470 systemd[1]: Started Fingerprint Authentication Daemon.
Mai 23 17:21:19 T470 fprintd[6898]: Reply mismatch, expected at char 2 (actual 0x1f, expected  0xef)
Mai 23 17:21:19 T470 fprintd[6898]: Data exchange failed at state 5, usb error: The driver encountered a protocol error with the device.
Mai 23 17:21:19 T470 fprintd[6898]: 0000 00 00 1f 00 85 00 00 10  01 00 00 01 01 00 05 00  | ................
Mai 23 17:21:19 T470 fprintd[6898]: 0010 01 04 07 00 00 10 00 00  00 10 00 00 02 01 02 00  | ................
Mai 23 17:21:19 T470 fprintd[6898]: 0020 00 20 00 00 00 e0 03 00  05 05 03 00 00 00 04 00  | . ..............
Mai 23 17:21:19 T470 fprintd[6898]: 0030 00 80 00 00 06 06 03 00  00 80 04 00 00 80 00 00  | ................
Mai 23 17:21:19 T470 fprintd[6898]: g_task_return_error: assertion 'G_IS_TASK (task)' failed

Cannot enroll finger print nor enable in pam-auth-update

I'm having issues enrolling and enabling finger prints.

System:
NAME="Pop!_OS"
VERSION="22.04 LTS"
ID=pop
ID_LIKE="ubuntu debian"
PRETTY_NAME="Pop!_OS 22.04 LTS"
VERSION_ID="22.04"

I get this error when registering:

Found device <DEVICE ID 138a:0090 on Bus 001 Address 009>
Opening device 0x90
Traceback (most recent call last):
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 380, in
vfs_tools.enroll(finger=args.finger_id)
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 270, in enroll
raise Exception('Enroll not supported yet for device {}'.format(
Exception: Enroll not supported yet for device 0x90

Everything was working in 21.xx

Kernel:
5.19.0-76051900-generic

Hardware:
Thinkpad P50

Fingerprint Reader:
Bus 001 Device 009: ID 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor

Following the entire process in the outline works, led tests and everything.

keyring problem

thx a lot..... but there is a issue:
(ubuntu 20.04.1 thinkpad x1c 2017 fingerprint reader:138a:0097)

follow the guide, one step by step , finally ,it worked..

but when i login the system at the first time or reboot system , after auth fingerprint to login system , then system shows โ€œinput keyring.... something like this'' and i must type my passwd again..
how do i fix this issue? i wanna just use fingerprint to login the system without type any passwd......

Fedora 34 T460p

In file included from ../libfprint/nbis/bozorth3/bozorth3.c:82:
../libfprint/nbis/include/bozorth.h:260:42: note: previously declared as โ€˜int[]โ€™
260 | extern void bz_comp(int, int [], int [], int [], int *, int [][COLS_SIZE_2],
| ^~~~~~
In function โ€˜rtp_insertโ€™,
inlined from โ€˜bz_matchโ€™ at ../libfprint/nbis/bozorth3/bozorth3.c:558:3:
../libfprint/nbis/bozorth3/bozorth3.c:331:15: error: โ€˜__builtin_memmoveโ€™ offset [-17179869176, -8] is out of the bounds [0, 160000] of object โ€˜rtpโ€™ with type โ€˜int *[20000]โ€™ [-Werror=array-bounds]
331 | *r1-- = *r2--;
| ~~~~~~^~~~~~~

problem with initializer

sudo validity-sensors-tools -t initializer
Found device <DEVICE ID 138a:0090 on Bus 001 Address 064>
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/tmppbuvpgsr/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 20EQS0QQ01
    Opening device 0x90
    Initializing flash...
    Detected Flash IC: W25Q80B, 1048576 bytes
    Sleeping...
    Opening device 0x90
    libusb: debug [libusb_unref_device] destroy device 1.64
    Speicherzugriffsfehler

Add ppa for Ubuntu 22.04 Jammy Jellyfish

Currently, when trying to add ppa to Ubuntu 22.04 I get following error

$ sudo add-apt-repository -u ppa:3v1n0/libfprint-vfs0090

Repository: 'deb https://ppa.launchpadcontent.net/3v1n0/libfprint-vfs0090/ubuntu/ jammy main'
Description:
Validity Fingerprint 138a:0090 and 138a:0097 (experimental) driver for Linux

- It needs to be paired with your computer using this tool:
ย ย https://github.com/3v1n0/python-validity, install it via snap:

ย ย # Initialize the device
ย ย sudo snap install validity-sensors-tools
ย ย sudo snap connect validity-sensors-tools:raw-usb
ย ย sudo snap connect validity-sensors-tools:hardware-observe
ย ย sudo validity-sensors-tools.initializer

  # For validity 0097 you also need to enroll the fingers in chip
  sudo validity-sensors-tools.initializer --finger-id [0...9]

- Sources and more information at
ย ย https://gitlab.freedesktop.org/3v1n0/libfprint-tod-vfs0090
ย ย https://github.com/3v1n0/libfprint
More info: https://launchpad.net/~3v1n0/+archive/ubuntu/libfprint-vfs0090
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/3v1n0-ubuntu-libfprint-vfs0090-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/3v1n0-ubuntu-libfprint-vfs0090-jammy.list
Adding key to /etc/apt/trusted.gpg.d/3v1n0-ubuntu-libfprint-vfs0090.gpg with fingerprint BE6CFC9508199102F68B6F683166F0E44FB01EAB
Hit:1 http://pl.archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://pl.archive.ubuntu.com/ubuntu jammy-updates InRelease              
Hit:3 http://pl.archive.ubuntu.com/ubuntu jammy-backports InRelease            
Ign:4 http://linux.dropbox.com/ubuntu disco InRelease                          
Get:5 http://linux.dropbox.com/ubuntu disco Release [6โ€ฏ598 B]                  
Get:6 http://linux.dropbox.com/ubuntu disco Release.gpg [473 B]                
Ign:7 https://ppa.launchpadcontent.net/3v1n0/libfprint-vfs0090/ubuntu jammy InRelease
Hit:8 http://security.ubuntu.com/ubuntu jammy-security InRelease               
Err:9 https://ppa.launchpadcontent.net/3v1n0/libfprint-vfs0090/ubuntu jammy Release
  404  Not Found [IP: 91.189.95.85 443]
Get:10 http://linux.dropbox.com/ubuntu disco/main i386 Packages [1โ€ฏ163 B]
Get:11 http://linux.dropbox.com/ubuntu disco/main amd64 Packages [1โ€ฏ169 B]
Reading package lists... Done            
E: The repository 'https://ppa.launchpadcontent.net/3v1n0/libfprint-vfs0090/ubuntu jammy Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: http://linux.dropbox.com/ubuntu/dists/disco/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

According to this website, there is no ppa for Jammy Jellyfish yet. Can it be added?

Dependency "gusb" not found

Hello.
After meson libfprint libfprint/_build && sudo ninja -C libfprint/_build install
In Fedora 34 I get an error:
libfprint/meson.build:83:0: ERROR: Dependency "gusb" not found, tried pkgconfig
But:
Package libgusb-0.3.8-1.fc34.x86_64 is already installed.
What should I do

PopOs - 138a:0090 -- only left thumb

The only finger that works on PopOs 20.04 is left thumb. I can register right index finger but not recognize. Other finger I can't enroll, no via terminal neither via user setting.

how to enroll using windows vm

I have a lenovo t460s with a validity 0090 (not 97). I read that I should use a vm or bare metal windows install to enroll the fingerprint sensor. How do I enroll the fingerprint reader with a windows vm? I cant find any info on how to share it using usb or even enroll. Any help?

Fails to enroll fingerptint

Device:
Bus 001 Device 010: ID 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor

Initialize:
Appears to work ...

sudo validity-sensors-tools.initializer
Found device <DEVICE ID 138a:0090 on Bus 001 Address 010>
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/tmp_8xibwvx/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 20FCS1C300
    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 using device data
    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/tmp9dutil8_/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 010> finished
    May the leds be with you...!

Enrolling fingerprint:
sudo validity-sensors-tools.enroll --finger-id 0
Found device <DEVICE ID 138a:0090 on Bus 001 Address 012>
Opening device 0x90
Traceback (most recent call last):
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 380, in
vfs_tools.enroll(finger=args.finger_id)
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 270, in enroll
raise Exception('Enroll not supported yet for device {}'.format(
Exception: Enroll not supported yet for device 0x90

Soooooo what is upposed to happen here...? I am expecting it to propt for me to enroll a finger... is that not what is supposed to happen?

138a:0097 error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0

If I try to initialize sensor I get an error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0.

Full log:

$ sudo validity-sensors-tools -t initializer

Found device <DEVICE ID 138a:0097 on Bus 001 Address 004>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe to extract 6_07f_lenovo_mis.xpfwext
Extracting "Synaptics Metallica MOC Touch Fingerprint Reader Driver for Windows 8.1 64-bit" - setup data version 5.5.0
 - "app/WBF_Drivers/6_07f_lenovo_mis.xpfwext"
Done.
Found firmware at /tmp/tmpytble5_s/app/WBF_Drivers/6_07f_lenovo_mis.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 0x97
Factory reset...
Sleeping...
Try 1 failed with error: Failed: 0404
Sleeping...
Try 2 failed with error: Failed: 0404
Sleeping...
Try 3 failed with error: Failed: 0404
Device didn't reply in time...
Factory reset failed with Failed: 0404, this should not happen, but we can ignore it, if pairing works...
Sleeping...
Pairing the sensor with device 20HR000FUS
Opening device 0x97
Initializing flash...
Sleeping...
Try 1 failed with error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0
Opening device 0x97
Initializing flash...
Sleeping...
Try 2 failed with error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0
Opening device 0x97
Initializing flash...
Sleeping...
Try 3 failed with error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0
Opening device 0x97
Initializing flash...
Sleeping...
Try 4 failed with error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0
Opening device 0x97
Initializing flash...
Sleeping...
Try 5 failed with error: Unknown flash IC. JEDEC id=ff:ff, size=4096x0
Device didn't reply in time...
Traceback (most recent call last):
  File "/usr/bin/validity-sensors-tools", line 339, in <module>
    vfs_tools.initialize(fwpath, args.calibration_data)
  File "/usr/bin/validity-sensors-tools", line 249, in initialize
    self.pair(fwpath, calib_data)
  File "/usr/bin/validity-sensors-tools", line 220, in pair
    self.retry_command(init_flash_command, max_retries=5)
  File "/usr/bin/validity-sensors-tools", line 112, in retry_command
    raise(err)
  File "/usr/bin/validity-sensors-tools", line 103, in retry_command
    command()
  File "/usr/bin/validity-sensors-tools", line 219, in init_flash_command
    init_flash()
  File "/usr/lib/python3.8/site-packages/proto9x/init_flash.py", line 97, in init_flash
    partition_flash(flash_layout_hardcoded, client_public)
  File "/usr/lib/python3.8/site-packages/proto9x/init_flash.py", line 70, in partition_flash
    info = get_flash_info()
  File "/usr/lib/python3.8/site-packages/proto9x/flash.py", line 38, in get_flash_info
    raise Exception('Unknown flash IC. JEDEC id=%x:%x, size=%dx%d' % (jid0, jid1, blocks, blocksize))
Exception: Unknown flash IC. JEDEC id=ff:ff, size=4096x0

P.S. Arch linux, kernel Linux lparch 5.4.66-1-lts #1 SMP Thu, 17 Sep 2020 18:00:06 +0000 x86_64 GNU/Linux

Installed packages:

local/fprintd-clients 1.90.1.r2.g54e56d6-2
    Fprintd without the daemon
local/libfprint-vfs009x-git 1:1.90.1.r0.g82aed23-2 (fprint-git)
    Library for fingerprint readers (includes libre vfs0090 and vfs0097 driver)
local/open-fprintd 0.5-2
    Fprintd replacement which allows you to have your own backend as a standalone service
local/python-validity 0.9-2
    Validity fingerprint sensor driver
local/validity-sensors-tools-git 0.5.r27.g5ba2094-2
    Linux tool to flash and pair Validity fingerprint sensors 009x

What do finger IDs mean?

In the README you have:

# This is needed and only works in 138a:0097:
sudo validity-sensors-tools.enroll --finger-id [0-9]

My fingers don't come with numbers printed on the tips, so how am I supposed to know which number corresponds to which finger?

I looked also for such information in the python-validity repo but I do not see it there either (and it does not have its own issue queue so I had to post here). In fprintd there are descriptive labels for different fingers referred to on the command line, so I assume there must be a mapping. What is it?

Perhaps you can address this in your README? (Or gently explain what I am cluelessly overlooking)

How to install on Debian 11?

I tried to install it on Debian 11. Using ubuntu repository failed with:

add-apt-repository ppa:3v1n0/libfprint-vfs0090
....
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
gpg: no valid OpenPGP data found.

Trying to compile from source using meson result in:
Message: Updating the vfs0090 submodule
WARNING: You should add the boolean check kwarg to the run_command call.
It currently defaults to false,
but it will default to true in future releases of meson.
See also: mesonbuild/meson#9300
Running command: /usr/bin/git submodule update --init --recursive
--- stdout ---

--- stderr ---
fatal: not a git repository (or any of the parent directories): .git

meson.build:169:16: ERROR: Problem encountered: Impossible to update the vfs0090 submodule

What's the best way to proceed? I am on Debian Bullseye 11. My machine is Thinkpad X1 Carbon Gen 5 (2017). The validity sensor is 138a:0097 as shown in libusb

Any help would be most appreciated.

fprintd-enroll fails with No devices available.

I'm running Manjaro with KDE Plasma - 5.20.5 in my Lenovo ThinkPad X1 Yoga(1st Gen).
I followed the steps in the README.

  • Installed validity-sensors-tools
  • Gave access to the usb devices.
  • Initialized the device.
  • Tested the LED (It works!)
  • Tried the validity-sensors-tools.enroll with a blind hope but it didn't work because my sensor is 138a:0090.
  • Installed fprintd and libfprint-vfs-009x-git (The readme says its libfprint-vfs-0090-git but I couldn't find one in the AUR)
  • Now when I try fprintd-enroll it fails!!

fprintd-enroll Impossible to enroll: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No devices available

Let me know if you need more details on something. Kindly help!

validity-sensors-tools.initalizer failed with error: Flash is already partitioned

Can't get sudo validity-sensors-tools.initializer to run
Thinkpad X1 Carbon Gen 5

Found device <DEVICE ID 138a:0097 on Bus 001 Address 004>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe to extract 6_07f_lenovo_mis.xpfwext
Extracting "Synaptics Metallica MOC Touch Fingerprint Reader Driver for Windows 8.1 64-bit" - setup data version 5.5.0
 - "app/WBF_Drivers/6_07f_lenovo_mis.xpfwext"
Done.
Found firmware at /tmp/tmp5wy1sqzw/app/WBF_Drivers/6_07f_lenovo_mis.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 0x97
Factory reset...
Sleeping...
Pairing the sensor with device 20HR0057US
Opening device 0x97
Sleeping...
Try 1 failed with error: 'NoneType' object has no attribute 'default_timeout'
Opening device 0x97
Initializing flash...
Sleeping...
Try 2 failed with error: [Errno 16] Resource busy
Opening device 0x97
Initializing flash...
Sleeping...
Try 3 failed with error: [Errno 16] Resource busy
Opening device 0x97
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Try 4 failed with error: Flash is already partitioned
Opening device 0x97
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Try 5 failed with error: Flash is already partitioned
Device didn't reply in time...
Traceback (most recent call last):
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 339, in <module>
    vfs_tools.initialize(fwpath, args.calibration_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 249, in initialize
    self.pair(fwpath, calib_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 220, in pair
    self.retry_command(init_flash_command, max_retries=5)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 112, in retry_command
    raise(err)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 103, in retry_command
    command()
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 219, in init_flash_command
    init_flash()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 97, in init_flash
    partition_flash(flash_layout_hardcoded, client_public)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 75, in partition_flash
    raise Exception('Flash is already partitioned')
Exception: Flash is already partitioned

Initializer fails: Unexpected TLS Version 4 0

I am running arch and got stuck in the initialization process

WARNING: cgroup v2 is not fully supported yet, proceeding with partial confinement
Found device <DEVICE ID 138a:0097 on Bus 001 Address 004>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe to extract 6_07f_lenovo_mis.xpfwext
Extracting "Synaptics Metallica MOC Touch Fingerprint Reader Driver for Windows 8.1 64-bit" - setup data version 5.5.0
 - "app/WBF_Drivers/6_07f_lenovo_mis.xpfwext"
Done.
Found firmware at /tmp/tmpg2p72nqj/app/WBF_Drivers/6_07f_lenovo_mis.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 0x97
Factory reset...
Sleeping...
Pairing the sensor with device 20HES01100
Opening device 0x97
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Try 1 failed with error: Failed: 04af
Opening device 0x97
Initializing flash...
Sleeping...
Try 2 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 3 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 4 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 5 failed with error: Unexpected TLS version 4 0
Device didn't reply in time...
Traceback (most recent call last):
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 339, in <module>
    vfs_tools.initialize(fwpath, args.calibration_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 249, in initialize
    self.pair(fwpath, calib_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 220, in pair
    self.retry_command(init_flash_command, max_retries=5)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 112, in retry_command
    raise(err)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 103, in retry_command
    command()
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 219, in init_flash_command
    init_flash()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 97, in init_flash
    partition_flash(flash_layout_hardcoded, client_public)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 70, in partition_flash
    info = get_flash_info()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/flash.py", line 28, in get_flash_info
    rsp=tls.cmd(unhex('3e'))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 104, in cmd
    rsp=self.app(cmd)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 138, in app
    return self.parse_tls_response(self.usb.cmd(self.make_app_data(b)))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 336, in parse_tls_response
    raise Exception('Unexpected TLS version %d %d' % (mj, mn))
Exception: Unexpected TLS version 4 0

Is there something I can do about it?

Manjaro dependency conflicts

Hi, I am using Manjaro and I am getting package conflicts issues while installing.

The initialization process went through correctly with no issues so far, I got the LED blinking as planned.

Then as said in the tutorial, I first install fprintd from the official depot, which also installs libfprint as a dependency.

Then, when I try to get libfprint-vfs0090-git, I get dependency conflicts :

Capture dโ€™รฉcran de 2021-10-13 11-07-07

This means "To uninstall : fprintd, libfprint" and "To build : libfprint-vfs009x-git".

So when presing "Ok", I can't use the fprintd commands to enroll my fingerprints.

How should I proceed ?

not possible to enroll finger (Exception: Point is not on the curve)

I'm running dualboot Windows and Ubuntu 20.10 on a Lenovo Thinkpad Yoga 370 which has a 138a:0097 fingerprint reader. I installed libfprint-2-tod-vfs0090 from your PPA and validity-sensors-tools from snap. I enrolled my finger in Windows and tried to enroll it also in Ubuntu but it does not work:
sudo validity-sensors-tools -t enroll
Found device <DEVICE ID 138a:0097 on Bus 001 Address 005>
Opening device 0x97
Traceback (most recent call last):
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 379, in <module>
vfs_tools.open_device(init=True)
File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 127, in open_device
vfs_tls.parseTlsFlash(read_flash(1, 0, 0x1000))
File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 414, in parseTlsFlash
self.handle_priv(body)
File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 512, in handle_priv
raise Exception('Point is not on the curve')
Exception: Point is not on the curve
fprintd-enroll also fails with no devices available

Enroll result: enroll-failed

Enrolled a fingerprint in Windows, still throws this error every single time. Installed every package and dependency possible, every command listed on here too. Not sure why it's not working. The LED test works fine, but not the actual enroll

image

Enroll fingerprints of t460p jammy with windows dual boot

Dual boot windows

install uunicorn/python-validity#129 (comment)
according to the comment
boot into windows
enroll in windows
boot into linux
check that sudo systemctl status python3-validity.service throws no error

โ— python3-validity.service - python-validity driver dbus service
     Loaded: loaded (/lib/systemd/system/python3-validity.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-06-25 13:23:53 CEST; 17min ago
   Main PID: 1496 (python3)
      Tasks: 3 (limit: 9059)
     Memory: 31.5M
        CPU: 363ms
     CGroup: /system.slice/python3-validity.service
             โ””โ”€1496 python3 /usr/lib/python-validity/dbus-service --debug

Jun 25 13:40:19 r4-t460p python3[1496]: DEBUG:root:In EnrollStart right-index-finger for {r4}
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:In ListEnrolledFingers r4
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:>tls> 17: 4b00000b0053746757696e64736f7200
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:>cmd> 17030300504129a12eba3cb867bfad483ca465af8748cc6f5475b0ad87>
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:<cmd< 170303005025a0a63baa2cf6043fbce1645bf27b8fca928323356b7819>
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:<tls< 17: 0000030001000b00000005004c0053746757696e64736f7200
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:>tls> 17: 4a000003004c00030000001c000000010500000000000515000000>
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:>cmd> 17030300904eca1f3e15ae2a0373598cd8957c51f562e2dc9033104b69>
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:<cmd< 170303004039f93ec755a6d765c4d59798fec69cb199b606c8fe473e5e>
Jun 25 13:40:40 r4-t460p python3[1496]: DEBUG:root:<tls< 17: b304

uninstall
sudo apt remove open-fprintd fprintd-clients python3-validity
install
sudo apt install libfprint-2-tod-vfs0090
(on jammy modify sudo nano /etc/apt/sources.list.d/3v1n0-ubuntu-libfprint-vfs0090-jammy.list replace jammy with focal)
sudo apt install fprintd
check service
sudo systemctl start fprintd.service
sudo systemctl status fprintd.service

โ— fprintd.service - Fingerprint Authentication Daemon
     Loaded: loaded (/lib/systemd/system/fprintd.service; static)
     Active: active (running) since Tue 2024-06-25 13:56:11 CEST; 17s ago
       Docs: man:fprintd(1)
   Main PID: 4997 (fprintd)
      Tasks: 5 (limit: 9059)
     Memory: 2.1M
        CPU: 205ms
     CGroup: /system.slice/fprintd.service
             โ””โ”€4997 /usr/libexec/fprintd

Jun 25 13:56:11 r4-t460p systemd[1]: Starting Fingerprint Authentication Daemon...
Jun 25 13:56:11 r4-t460p systemd[1]: Started Fingerprint Authentication Daemon.
Jun 25 13:56:11 r4-t460p fprintd[4997]: libusb: error [udev_hotplug_event] ignoring udev action change
Jun 25 13:56:11 r4-t460p fprintd[4997]: libusb: error [udev_hotplug_event] ignoring udev action change
Jun 25 13:56:13 r4-t460p fprintd[4997]: Authorization denied to :1.102 to call method 'Release' for device 'Validit>

check in system settings or with fprintd-enroll

other things to check fprintd-list

fprintd-list r4
found 1 devices
Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
Fingerprints for user r4 on Validity VFS0090 (press):
 - #0: right-index-finger

Fail to run -t led-dance or enroll command

my laptop is dual system on WIN11 23H3&archlinux
i am already enroll my finger on WIN11
after yay -S validity-sensors-tools-git libfprint-vfs009x-git
now mine 138a:0090 sensor can be recognition
but run -t led-dance -t enroll command output the same error
โžœ ~ sudo validity-sensors-tools -t led-dance Found device <DEVICE ID 138a:0090 on Bus 001 Address 005> Opening device 0x90 Traceback (most recent call last): File "/usr/bin/validity-sensors-tools", line 375, in <module> vfs_tools.open_device(init=True) File "/usr/bin/validity-sensors-tools", line 128, in open_device vfs_tls.open() File "/usr/lib/python3.12/site-packages/proto9x/tls.py", line 126, in open self.make_cert_verify()) + ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/proto9x/tls.py", line 243, in make_cert_verify s=sign(hexlify(buf).decode(), self.priv_key, prehashed=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/fastecdsa/ecdsa.py", line 50, in sign hex_digest = hexlify(msg).decode() ^^^^^^^^^^^^ TypeError: a bytes-like object is required, not 'str'
does it means the fingerprint information is already exist on my sensor flash-chip or what?
what should i do?

Support for 138a:0092 devices

Hi, I was trying to get my fingerprint reader working on my HP x360 1030 G2 EliteBook running Arch Linux, and I was able to get it working from uunicorn's python validity repository. I cloned the repository and switched to the device/0092 branch, copied the validitysensor files and installed numpy. Is there a way you guys could integrate that into this driver and 3v1n0's validity-sensors-tools repository?

Cannot enroll same finger for multiple users.

On my laptop I keep two accounts, one for work use, and one for personal use.

Enrolling fingers worked fine for my personal account, but when I try to do an fprintd-enroll on the work account i get the error:

Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-duplicate

Is there a way to allow duplicates or force so I can keep both accounts?

I don't want to train myself to use a different finger per account as that's kind of odd.

Any help would be appreciated.

error after run ninja in lifprint

Hi
I having Laptop Lenovo Tinkpad P50 and using Fedora 34 ...
For Using fingerprintreader
After executing ninja command, the following error is displayed :

AILED: libfprint/libnbis.a.p/nbis_bozorth3_bozorth3.c.o
cc -Ilibfprint/libnbis.a.p -Ilibfprint -I../libfprint -I. -I.. -Ilibfprint/nbis/include -I../libfprint/nbis/include -Ilibfprint/nbis/libfprint-include -I../libfprint/nbis/libfprint-include -I/usr/include/gio-unix-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/gusb-1 -I/usr/include/libusb-1.0 -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -O2 -g -Wall -Wcast-align -Wformat-nonliteral -Wformat-security -Wformat=2 -Wignored-qualifiers -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wpointer-arith -Wshadow -Wtype-limits -Wundef -Wunused -Werror=address -Werror=array-bounds -Werror=empty-body -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=redundant-decls -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-strict-aliasing -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56 -D_GNU_SOURCE '-DG_LOG_DOMAIN="libfprint"' -Wimplicit-function-declaration -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Werror=implicit -Werror=pointer-to-int-cast -fPIC -pthread -Wno-error=redundant-decls -Wno-redundant-decls -Wno-discarded-qualifiers -MD -MQ libfprint/libnbis.a.p/nbis_bozorth3_bozorth3.c.o -MF libfprint/libnbis.a.p/nbis_bozorth3_bozorth3.c.o.d -o libfprint/libnbis.a.p/nbis_bozorth3_bozorth3.c.o -c ../libfprint/nbis/bozorth3/bozorth3.c
../libfprint/nbis/bozorth3/bozorth3.c:87:13: warning: argument 2 of type โ€˜int[200]โ€™ with mismatched bound [-Warray-parameter=]
87 | int xcol[ MAX_BOZORTH_MINUTIAE ], /* INPUT: x cordinates */
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../libfprint/nbis/bozorth3/bozorth3.c:82:
../libfprint/nbis/include/bozorth.h:260:26: note: previously declared as โ€˜int[]โ€™
260 | extern void bz_comp(int, int [], int [], int [], int , int [][COLS_SIZE_2],
| ^~~~~~
../libfprint/nbis/bozorth3/bozorth3.c:88:13: warning: argument 3 of type โ€˜int[200]โ€™ with mismatched bound [-Warray-parameter=]
88 | int ycol[ MAX_BOZORTH_MINUTIAE ], /
INPUT: y cordinates */
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../libfprint/nbis/bozorth3/bozorth3.c:82:
../libfprint/nbis/include/bozorth.h:260:34: note: previously declared as โ€˜int[]โ€™
260 | extern void bz_comp(int, int [], int [], int [], int , int [][COLS_SIZE_2],
| ^~~~~~
../libfprint/nbis/bozorth3/bozorth3.c:89:13: warning: argument 4 of type โ€˜int[200]โ€™ with mismatched bound [-Warray-parameter=]
89 | int thetacol[ MAX_BOZORTH_MINUTIAE ], /
INPUT: theta values */
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../libfprint/nbis/bozorth3/bozorth3.c:82:
../libfprint/nbis/include/bozorth.h:260:42: note: previously declared as โ€˜int[]โ€™
260 | extern void bz_comp(int, int [], int [], int [], int *, int [][COLS_SIZE_2],
| ^~~~~~
In function โ€˜rtp_insertโ€™,
inlined from โ€˜bz_matchโ€™ at ../libfprint/nbis/bozorth3/bozorth3.c:558:3:
../libfprint/nbis/bozorth3/bozorth3.c:331:15: error: โ€˜__builtin_memmoveโ€™ offset [-17179869176, -8] is out of the bounds [0, 160000] of object โ€˜rtpโ€™ with type โ€˜int *[20000]โ€™ [-Werror=array-bounds]
331 | *r1-- = *r2--;
| ~~~~~~^~~~~~~
../libfprint/nbis/bozorth3/bozorth3.c: In function โ€˜bz_matchโ€™:
../libfprint/nbis/bozorth3/bozorth3.c:375:14: note: โ€˜rtpโ€™ declared here
375 | static int * rtp[ ROT_SIZE_1 ];
| ^~~
cc1: some warnings being treated as errors
[30/46] Compiling C object tests/test-fpi-device.p/test-fpi-device.c.o
ninja: build stopped: subcommand failed.

Initializer fails with Unexpected TLS version 4 0

sudo validity-sensors-tools.initializer
Found device <DEVICE ID 138a:0097 on Bus 001 Address 004>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe to extract 6_07f_lenovo_mis.xpfwext
Extracting "Synaptics Metallica MOC Touch Fingerprint Reader Driver for Windows 8.1 64-bit" - setup data version 5.5.0
 - "app/WBF_Drivers/6_07f_lenovo_mis.xpfwext"
Done.
Found firmware at /tmp/tmpo2gq_46o/app/WBF_Drivers/6_07f_lenovo_mis.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 0x97
Factory reset...
Sleeping...
Pairing the sensor with device 20HEA0TLUS
Opening device 0x97
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Try 1 failed with error: Failed: 04af
Opening device 0x97
Initializing flash...
Sleeping...
Try 2 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 3 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 4 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 5 failed with error: Unexpected TLS version 4 0
Device didn't reply in time...
Traceback (most recent call last):
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 339, in <module>
    vfs_tools.initialize(fwpath, args.calibration_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 249, in initialize
    self.pair(fwpath, calib_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 220, in pair
    self.retry_command(init_flash_command, max_retries=5)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 112, in retry_command
    raise(err)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 103, in retry_command
    command()
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 219, in init_flash_command
    init_flash()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 97, in init_flash
    partition_flash(flash_layout_hardcoded, client_public)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 70, in partition_flash
    info = get_flash_info()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/flash.py", line 28, in get_flash_info
    rsp=tls.cmd(unhex('3e'))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 104, in cmd
    rsp=self.app(cmd)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 138, in app
    return self.parse_tls_response(self.usb.cmd(self.make_app_data(b)))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 336, in parse_tls_response
    raise Exception('Unexpected TLS version %d %d' % (mj, mn))
Exception: Unexpected TLS version 4 0

Any help here?

Broken since fprintd 1.92.0

/usr/lib/fprintd: symbol lookup error: /usr/lib/fprintd: undefined symbol: fp_device_has_feature, version LIBFPRINT_2.0.0

Failed to restore initial working directory

Unable to execute this on my Thinkpad T460s

sudo validity-sensors-tools.initializer                                                                                    ๎‚ฒ โœ” 
[sudo] password for user: 
Found device <DEVICE ID 138a:0090 on Bus 001 Address 004>
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.
find: Failed to restore initial working directory: /home/user: Permission denied
Traceback (most recent call last):
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 329, in <module>
    fwpath = vfs_tools.download_and_extract_fw(fwdir,
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 163, in download_and_extract_fw
    fwpath = subprocess.check_output([
  File "/usr/lib/python3.8/subprocess.py", line 415, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['find', '/tmp/tmpxujopoha', '-name', '6_07f_Lenovo.xpfwext']' returned non-zero exit status 1.

snap can't connect raw-usb hardware-observe

snap can't connect raw-usb hardware-observe

jack@debian:$ sudo snap connect validity-sensors-tools:raw-usb
error: cannot resolve connection, slot snap name is empty
jack@debian:
$

No Devices Available on Ubuntu 20.10

Hi! I have installed python-validity as a snap, and did everything as per instructions, but I keep getting

list_devices failed: No devices available

from fprintd. I am running t470s with 138a:0097

[138a:0090] Delay since fprintd 1.90.4

The fprintd project redirected me to this project.
https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/102

With fprintd 1.90.1 everything is fine.

Now every time I need use my finger print for root stuff, I need to wait
2 seconds in the terminal
5 seconds in the GUI (pkexec)
5 seconds in the login screen GUI

(fprintd:85521): fprintd-DEBUG: 11:45:15.867: About to load configuration file '/etc/fprintd.conf'
(fprintd:85521): fprintd-DEBUG: 11:45:15.867: Launching FprintObject
(fprintd:85521): libfprint-context-DEBUG: 11:45:15.871: No driver found for USB device 17EF:1010
(fprintd:85521): libfprint-context-DEBUG: 11:45:15.871: No driver found for USB device 1D6B:0003
(fprintd:85521): libfprint-context-DEBUG: 11:45:15.871: No driver found for USB device 058F:9540
(fprintd:85521): libfprint-context-DEBUG: 11:45:15.871: No driver found for USB device 04F2:B541
(fprintd:85521): libfprint-context-DEBUG: 11:45:15.871: No driver found for USB device 8087:0A2B
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:15.967: Initializing device
libusb: error [udev_hotplug_event] ignoring udev action change
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:16.222: [vfs0090] PROBE_STATE_LAST entering state 0
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:16.223: [vfs0090] PROBE_STATE_LAST entering state 1
(fprintd:85521): libfprint-context-DEBUG: 11:45:16.223: No driver found for USB device 046D:C05A
(fprintd:85521): libfprint-context-DEBUG: 11:45:16.223: No driver found for USB device 17EF:100F
(fprintd:85521): libfprint-context-DEBUG: 11:45:16.223: No driver found for USB device 17EF:1010
(fprintd:85521): libfprint-context-DEBUG: 11:45:16.223: No driver found for USB device 1D6B:0002
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:16.223: [vfs0090] PROBE_STATE_LAST entering state 2
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:16.223: [vfs0090] PROBE_STATE_LAST completed successfully
libusb: error [udev_hotplug_event] ignoring udev action change
(fprintd:85521): libfprint-device-DEBUG: 11:45:16.224: Device reported probe completion
(fprintd:85521): libfprint-device-DEBUG: 11:45:16.224: Completing action 1 in idle!
(fprintd:85521): fprintd-DEBUG: 11:45:16.229: entering main loop
(fprintd:85521): fprintd-DEBUG: 11:45:16.229: D-Bus service launched with name: net.reactivated.Fprint

(fprintd:85521): fprintd-DEBUG: 11:45:24.608: Requesting device 'Validity VFS0090' authorization for method ListEnrolledFingers from :1.325
(fprintd:85521): fprintd-DEBUG: 11:45:24.609: Getting authorization to perform Polkit action net.reactivated.fprint.device.setusername
(fprintd:85521): fprintd-DEBUG: 11:45:24.614: Getting authorization to perform Polkit action net.reactivated.fprint.device.verify
(fprintd:85521): fprintd-DEBUG: 11:45:24.617: Authorization granted to Validity VFS0090 to call method 'ListEnrolledFingers' for device :1.325!
(fprintd:85521): fprintd-DEBUG: 11:45:24.618: file_storage_discover_prints() for user 'martin' in '/var/lib/fprint/martin/vfs0090/0'
(fprintd:85521): fprintd-DEBUG: 11:45:24.620: Requesting device 'Validity VFS0090' authorization for method Claim from :1.325
(fprintd:85521): fprintd-DEBUG: 11:45:24.620: Getting authorization to perform Polkit action net.reactivated.fprint.device.setusername
(fprintd:85521): fprintd-DEBUG: 11:45:24.624: Getting authorization to perform Polkit action net.reactivated.fprint.device.verify
(fprintd:85521): fprintd-DEBUG: 11:45:24.627: Authorization granted to Validity VFS0090 to call method 'Claim' for device :1.325!
(fprintd:85521): fprintd-DEBUG: 11:45:24.627: user 'martin' claiming the device: 0
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:24.724: Initializing device
libusb: error [udev_hotplug_event] ignoring udev action change
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:24.973: [vfs0090] INIT_STATE_LAST entering state 0
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:24.973: [vfs0090] INIT_STATE_LAST entering state 1
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:24.973: [vfs0090] INIT_STATE_LAST entering state 2
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:24.974: [vfs0090] INIT_STATE_LAST entering state 3
libusb: error [udev_hotplug_event] ignoring udev action change
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.133: [vfs0090] INIT_STATE_LAST entering state 4
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.146: [vfs0090] INIT_STATE_LAST entering state 5
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.147: [vfs0090] INIT_STATE_LAST entering state 6
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] INIT_STATE_LAST entering state 7
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] INIT_STATE_LAST entering state 8
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] INIT_STATE_LAST entering state 9
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] INIT_STATE_LAST entering state 10
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] INIT_STATE_LAST entering state 11
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.152: [vfs0090] TLS_HANDSHAKE_STATE_LAST entering state 0
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.155: [vfs0090] TLS_HANDSHAKE_STATE_LAST entering state 1
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.157: [vfs0090] TLS_HANDSHAKE_STATE_LAST entering state 2
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.159: [vfs0090] TLS_HANDSHAKE_STATE_LAST entering state 3
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.463: [vfs0090] TLS_HANDSHAKE_STATE_LAST entering state 4
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.463: [vfs0090] TLS_HANDSHAKE_STATE_LAST completed successfully
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.463: [vfs0090] INIT_STATE_LAST completed successfully
(fprintd:85521): libfprint-device-DEBUG: 11:45:25.463: Device reported open completion
(fprintd:85521): libfprint-device-DEBUG: 11:45:25.463: Completing action 2 in idle!
(fprintd:85521): fprintd-DEBUG: 11:45:25.463: claimed device 0
(fprintd:85521): fprintd-DEBUG: 11:45:25.467: Requesting device 'Validity VFS0090' authorization for method VerifyStart from :1.325
(fprintd:85521): fprintd-DEBUG: 11:45:25.467: Getting authorization to perform Polkit action net.reactivated.fprint.device.verify
(fprintd:85521): fprintd-DEBUG: 11:45:25.472: Authorization granted to Validity VFS0090 to call method 'VerifyStart' for device :1.325!
(fprintd:85521): fprintd-DEBUG: 11:45:25.472: file_storage_discover_prints() for user 'martin' in '/var/lib/fprint/martin/vfs0090/0'
(fprintd:85521): fprintd-DEBUG: 11:45:25.472: adding finger 7 to the gallery
(fprintd:85521): fprintd-DEBUG: 11:45:25.473: file_storage_print_data_load(): loaded '/var/lib/fprint/martin/vfs0090/0/7' Erfolg
(fprintd:85521): fprintd-DEBUG: 11:45:25.473: start identification device 0
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.473: [vfs0090] ACTIVATE_STATE_LAST entering state 0
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:25.473: Checking internal database for previously saved fingers
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.474: [vfs0090] ACTIVATE_STATE_LAST entering state 1
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:25.474: Enrolled fingers found in the internal memory
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.474: [vfs0090] ACTIVATE_STATE_LAST entering state 2
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.475: [vfs0090] ACTIVATE_STATE_LAST entering state 3
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.476: [vfs0090] ACTIVATE_STATE_LAST entering state 4
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.477: [vfs0090] ACTIVATE_STATE_LAST entering state 5
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.478: [vfs0090] ACTIVATE_STATE_LAST entering state 6
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.478: [vfs0090] ACTIVATE_STATE_LAST entering state 7
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.479: [vfs0090] ACTIVATE_STATE_LAST entering state 8
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.559: [vfs0090] ACTIVATE_STATE_LAST entering state 9
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.639: [vfs0090] ACTIVATE_STATE_LAST entering state 10
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.650: [vfs0090] ACTIVATE_STATE_LAST entering state 11
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:25.650: Waiting for finger...
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.650: [vfs0090] ACTIVATE_STATE_LAST completed successfully
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:25.650: [vfs0090] SCAN_STATE_LAST entering state 0
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:26.782: Finger is on the sensor...
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:26.782: [vfs0090] SCAN_STATE_LAST entering state 1
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:26.782: Finger on sensor...
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:26.822: Scan in progress...
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:26.822: [vfs0090] SCAN_STATE_LAST entering state 2
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:26.866: Fingerprint scan completed...
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:26.866: [vfs0090] SCAN_STATE_LAST entering state 5
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:26.978: Fingerprint scan success...
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:26.978: [vfs0090] SCAN_STATE_LAST entering state 6
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:26.978: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 0
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.037: Got image of 144x144, 8 bit per pixel
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.038: Getting 8180 bytes of image data
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.038: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 1
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.056: Getting 8192 bytes of image data
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.056: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 2
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.066: Getting 4364 bytes of image data
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.066: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 3
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.070: Detecting minutiae
(fprintd:85521): libfprint-image-DEBUG: 11:45:27.118: Minutiae scan completed in 0,047821 secs
(fprintd:85521): libfprint-print-DEBUG: 11:45:27.119: score 24
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.119: Identified finger minutiae: match
(fprintd:85521): libfprint-device-DEBUG: 11:45:27.119: Device reported identify result
(fprintd:85521): fprintd-DEBUG: 11:45:27.119: report_verify_status: result verify-match
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.119: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 4
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.119: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 5
(fprintd:85521): fprintd-DEBUG: 11:45:27.119: Requesting device 'Validity VFS0090' authorization for method VerifyStop from :1.325
(fprintd:85521): fprintd-DEBUG: 11:45:27.120: Authorization granted to Validity VFS0090 to call method 'VerifyStop' for device :1.325!
(fprintd:85521): libfprint-device-DEBUG: 11:45:27.120: Idle cancelling on ongoing operation!
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] DEACTIVATE_STATE_LAST entering state 0
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] DEACTIVATE_STATE_LAST entering state 1
(fprintd:85521): libfprint-vfs009x-DEBUG: 11:45:27.120: USB read transfer cancelled

(fprintd:85521): libfprint-vfs009x-CRITICAL **: 11:45:27.120: LED blinking failed with error Vorgang wurde abgebrochen
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 6
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST entering state 9
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] IMAGE_DOWNLOAD_STATE_LAST completed successfully
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:27.120: [vfs0090] SCAN_STATE_LAST completed successfully

(fprintd:85521): libfprint-vfs009x-CRITICAL **: 11:45:30.120: USB write transfer error: transfer timed out

(fprintd:85521): libfprint-vfs009x-CRITICAL **: 11:45:30.120: Data exchange failed at state 1, usb error: transfer timed out
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:30.120: [vfs0090] SSM DEACTIVATE_STATE_LAST failed in state 1 with error: transfer timed out
(fprintd:85521): libfprint-SSM-DEBUG: 11:45:30.120: [vfs0090] DEACTIVATE_STATE_LAST completed with error: transfer timed out

(fprintd:85521): libfprint-vfs009x-CRITICAL **: 11:45:30.120: Deactivation failed at state 1, unexpected device reply during deactivation
(fprintd:85521): libfprint-device-DEBUG: 11:45:30.120: Device reported generic error during action; action was: 6
(fprintd:85521): libfprint-device-DEBUG: 11:45:30.120: Device reported identify completion
(fprintd:85521): libfprint-device-DEBUG: 11:45:30.120: Completing action 6 in idle!
(fprintd:85521): fprintd-DEBUG: 11:45:30.120: identify_cb: result verify-no-match
(fprintd:85521): fprintd-DEBUG: 11:45:30.122: Requesting device 'Validity VFS0090' authorization for method Release from :1.325
(fprintd:85521): fprintd-DEBUG: 11:45:30.122: Authorization granted to Validity VFS0090 to call method 'Release' for device :1.325!
(fprintd:85521): libfprint-device-DEBUG: 11:45:30.123: Device reported close completion
(fprintd:85521): libfprint-device-DEBUG: 11:45:30.123: Completing action 3 in idle!
(fprintd:85521): fprintd-DEBUG: 11:45:30.123: released device 0

Protocol error with 138a:0097 on Arch Linux

I have a Validity Sensors 0097:
Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc.

I have fprintd-1.90.1-1 installed, with libfprint-vfs009x-git-1.90.1.r3.gc6f5f0e-1 installed from the AUR. I get the following error when trying to enroll my right-index-finger:

fprintd-enroll -f right-index-finger
Using device /net/reactivated/Fprint/Device/0
failed to claim device: Open failed with error: The driver encountered a protocol error with the device.

I've already enrolled all of my fingers with validity-sensors-tools, as root. It took a few tries, with a couple of re-initiliazations, but I have all ten fingers enrolled that way.

The journal is rather telling. I see the following output every time I try fprintd-enroll:

Sep 26 16:38:09 ferrum systemd[1]: Starting Fingerprint Authentication Daemon...
Sep 26 16:38:10 ferrum systemd[1]: Started Fingerprint Authentication Daemon.
Sep 26 16:38:10 ferrum fprintd[24570]: Expected len: 84, but got 108
Sep 26 16:38:10 ferrum fprintd[24570]: 0000 00 00 01 00 01 00 08 00  dd a6 4e 57 01 00 34 46  | ..........NW..4F
Sep 26 16:38:10 ferrum fprintd[24570]: 0010 02 00 07 00 60 39 00 00  01 00 84 08 01 00 07 00  | ....`9..........
Sep 26 16:38:10 ferrum fprintd[24570]: 0020 00 04 00 00 02 00 84 28  03 00 12 00 e0 10 00 00  | .......(........
Sep 26 16:38:10 ferrum fprintd[24570]: 0030 02 00 76 36 01 00 0c 00  10 0a 00 00 01 00 86 47  | ..v6...........G
Sep 26 16:38:10 ferrum fprintd[24570]: 0040 00 00 01 00 50 5a 00 00  02 00 23 77 00 00 01 00  | ....PZ....#w....
Sep 26 16:38:10 ferrum fprintd[24570]: 0050 80 2f 00 00 02 00 66 37  01 00 0c 00 f0 22 02 00  | ./....f7....."..
Sep 26 16:38:10 ferrum fprintd[24570]: Data exchange failed at state 3, usb error: The driver encountered a protocol error with the device.
Sep 26 16:38:10 ferrum fprintd[24570]: g_task_return_error: assertion 'G_IS_TASK (task)' failed

I installed fprintd-libfprint2-1.90.1+91+g4e47222-2 from the AUR, and changed the PKGBUILD to depend on libfprint-vfs009x-git instead of libfprint, but I get the same results:

Sep 26 17:13:36 ferrum systemd[1]: Starting Fingerprint Authentication Daemon...
Sep 26 17:13:37 ferrum systemd[1]: Started Fingerprint Authentication Daemon.
Sep 26 17:13:37 ferrum fprintd[70757]: Expected len: 84, but got 108
Sep 26 17:13:37 ferrum fprintd[70757]: 0000 00 00 01 00 01 00 08 00  dd a6 4e 57 01 00 34 46  | ..........NW..4F
Sep 26 17:13:37 ferrum fprintd[70757]: 0010 02 00 07 00 60 39 00 00  01 00 84 08 01 00 07 00  | ....`9..........
Sep 26 17:13:37 ferrum fprintd[70757]: 0020 00 04 00 00 02 00 84 28  03 00 12 00 e0 10 00 00  | .......(........
Sep 26 17:13:37 ferrum fprintd[70757]: 0030 02 00 76 36 01 00 0c 00  10 0a 00 00 01 00 86 47  | ..v6...........G
Sep 26 17:13:37 ferrum fprintd[70757]: 0040 00 00 01 00 50 5a 00 00  02 00 23 77 00 00 01 00  | ....PZ....#w....
Sep 26 17:13:37 ferrum fprintd[70757]: 0050 80 2f 00 00 02 00 66 37  01 00 0c 00 f0 22 02 00  | ./....f7....."..
Sep 26 17:13:37 ferrum fprintd[70757]: Data exchange failed at state 3, usb error: The driver encountered a protocol error with the device.
Sep 26 17:13:37 ferrum fprintd[70757]: g_task_return_error: assertion 'G_IS_TASK (task)' failed

I have run this a few times, and I consistently get the following log line:

Sep 26 16:38:10 ferrum fprintd[24570]: Expected len: 84, but got 108

So either something is wrong with fprintd, or there's something wrong with libfprint-vfs009x-git. I know this fingerprint sensor works, I was using it prior to getting it serviced under warranty for some failed hardware. Before I had this serviced, I had to enroll my fingerprints using a Windows 10 VM in VirtualBox. I was delighted to learn there's a pure Linux method available for my fingerprint reader. It feels so close.

EDIT: Not sure if @3v1n0 sees these. Pinging them for visibility.

Sometimes unable to enroll fingers

Most of the time I try to enroll a finger it fails with an unknown error, sometimes it works but after it works it seems to have to cool down or something before it can be used again?! When it fails it fails with the following error:
Console logs:

[user@p50 tmp]$ fprintd-enroll -f "right-index-finger" "$USER";
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-unknown-error

Journalctl logs:

Oct 26 00:54:02 p50 kernel: usb 1-9: reset full-speed USB device number 3 using xhci_hcd
Oct 26 00:54:05 p50 fprintd[606312]: fpi_print_add_print: assertion 'print->type == FPI_PRINT_NBIS' failed
Oct 26 00:54:05 p50 fprintd[606312]: Driver did not set the type on the returned print!
Oct 26 00:54:05 p50 fprintd[606312]: Device reported an error during enroll: Driver provided incorrect print data!

I am using the most recent commit as of posting this (c6f5f0e) on Linux kernel 5.8.11 with Manjaro + KDE plasma the sensor in use is the troubled 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor

EDIT: I've found it seems to work a good 50% of the time if you let the sensor sit for about 1-2 minutes

Cannot use with Yoga 260 0090 sensor

OS: pop_OS 20.04 LTS
Kernel: 5.11.0-7633-generic

lsusb:

Bus 001 Device 009: ID 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor

Setup completes successfully, however it fails to work.

sudo validity-sensors-tools.initializer
Found device <DEVICE ID 138a:0090 on Bus 001 Address 009>
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/tmptd6w7b8k/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 20FD0004US
Opening device 0x90
Initializing flash...
Detected Flash IC: W25Q80B, 1048576 bytes
Sleeping...
Opening device 0x90
Clean slate
Uploading firmware...
Sensor: VSI 55E  FM72-001  
Loaded FWExt version 1.0 (Tue Nov  8 04:05:20 2016), 6 modules
Sleeping...
Opening device 0x90
Calibrating using device data
Sensor: VSI 55E  FM72-001  
FWExt version 1.0 (Tue Nov  8 04:05:20 2016), 6 modules
len=131480
Calibration data saved at /tmp/tmparsgll2k/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 009> finished
May the leds be with you...!

Enrolling first finger succeeds, but can never validate that finger.

fprintd-enroll 
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-completed

fprintd-verify 
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
 - #0: right-index-finger
Verify started!
Verifying: right-index-finger
Verify result: verify-no-match (done)

Enrolling a second finger throws an error:

Dec 26 22:00:01 pop-os fprintd[10174]: Data exchange failed at state 1, usb err>
Dec 26 22:00:01 pop-os fprintd[10174]: Deactivation failed at state 1, unexpect>
Dec 26 22:00:03 pop-os fprintd[10174]: Reply mismatch, expected at char 6 (actu>
Dec 26 22:00:03 pop-os fprintd[10174]: Reply mismatch, expected at char 6 (actu>
Dec 26 22:00:03 pop-os fprintd[10174]: Reply mismatch, expected at char 6 (actu>
Dec 26 22:00:05 pop-os fprintd[10174]: LED blinking failed with error Operation>
Dec 26 22:00:08 pop-os fprintd[10174]: USB write transfer error: transfer timed>
Dec 26 22:00:08 pop-os fprintd[10174]: Data exchange failed at state 1, usb err>
Dec 26 22:00:08 pop-os fprintd[10174]: Deactivation failed at state 1, unexpect>
Dec 26 22:00:38 pop-os systemd[1]: fprintd.service: Succeeded.

validity-sensors-tools.initializer Fails to run - Exception: Unexpected TLS version 4 0

apologies if this has already been answered I've been banging my head against this sensor for a few hours and need help.

when running the program this is the output I get

jmurphy@jmurphy:/tmp$ sudo validity-sensors-tools.initializer
Found device <DEVICE ID 138a:0097 on Bus 001 Address 004>
Downloading https://download.lenovo.com/pccbbs/mobiles/n1mgf03w.exe to extract 6_07f_lenovo_mis.xpfwext
Extracting "Synaptics Metallica MOC Touch Fingerprint Reader Driver for Windows 8.1 64-bit" - setup data version 5.5.0
 - "app/WBF_Drivers/6_07f_lenovo_mis.xpfwext"
Done.
Found firmware at /tmp/tmpabf89xou/app/WBF_Drivers/6_07f_lenovo_mis.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 0x97
Factory reset...
Sleeping...
Pairing the sensor with device 20JES0S700
Opening device 0x97
Initializing flash...
Detected Flash IC: AT25SF081, 1048576 bytes
Sleeping...
Try 1 failed with error: Failed: 04af
Opening device 0x97
Initializing flash...
Sleeping...
Try 2 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 3 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 4 failed with error: Unexpected TLS version 4 0
Opening device 0x97
Initializing flash...
Sleeping...
Try 5 failed with error: Unexpected TLS version 4 0
Device didn't reply in time...
Traceback (most recent call last):
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 339, in <module>
    vfs_tools.initialize(fwpath, args.calibration_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 249, in initialize
    self.pair(fwpath, calib_data)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 220, in pair
    self.retry_command(init_flash_command, max_retries=5)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 112, in retry_command
    raise(err)
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 103, in retry_command
    command()
  File "/snap/validity-sensors-tools/65/vfs-tools/validity-sensors-tools.py", line 219, in init_flash_command
    init_flash()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 97, in init_flash
    partition_flash(flash_layout_hardcoded, client_public)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/init_flash.py", line 70, in partition_flash
    info = get_flash_info()
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/flash.py", line 28, in get_flash_info
    rsp=tls.cmd(unhex('3e'))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 104, in cmd
    rsp=self.app(cmd)
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 138, in app
    return self.parse_tls_response(self.usb.cmd(self.make_app_data(b)))
  File "/snap/validity-sensors-tools/65/vfs-tools/proto9x/tls.py", line 336, in parse_tls_response
    raise Exception('Unexpected TLS version %d %d' % (mj, mn))
Exception: Unexpected TLS version 4 0
jmurphy@jmurphy:/tmp$ 

here's the usb information, I'm on a Lenovo x1 yoga gen2

jmurphy@jmurphy:/tmp$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 138a:0097 Validity Sensors, Inc. 
Bus 001 Device 003: ID 13d3:5682 IMC Networks SunplusIT Integrated Camera
Bus 001 Device 005: ID 056a:50b8 Wacom Co., Ltd Pen and multitouch sensor
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
jmurphy@jmurphy:/tmp$ 

Client :1.243 not authorized for device Validity VFS0090: Not Authorized: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: DBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not get UID of name ':1.243': no such name

Dear developer, since my arch updated fprint to 1.90.6 I often get this error message and the fprint stops working until I restart the fprint service.

Then it works again until this problem happens.

Maybe it gets fixed if this project gets rebased on top of 1.90.6? Currently it is on 1.90.1.

Client :1.243 not authorized for device Validity VFS0090: Not Authorized: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: DBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not get UID of name ':1.243': no such name

journalctl log:
journalctl_fprint.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.