The Synaptics fingerprint sensor (06cb:009a) present on my T480 is not supported by libfprint
and fprintd
as it requires a non-free binary blob. uunicorn created open-fprintd
, a replacement for fprintd
, that allows for loading of binary blobs. In conjunction with their python-validity
driver we are able to make use of the inbuilt fingerprint reader. The following instructions were tested against Fedora Linux 35.
sudo dnf copr enable tigro/python-validity
sudo dnf install open-fprintd fprintd-clients fprintd-clients-pam python3-validity
sudo touch /usr/share/python-validity/backoff
sudo touch /usr/share/python-validity/calib-data.bin
sudo validity-sensors-firmware
sudo python3 /usr/share/python-validity/playground/factory-reset.py
sudo chmod 0755 /usr/share/python-validity/6_07f_lenovo_mis_qm.xpfwext
sudo systemctl enable python3-validity open-fprintd-resume open-fprintd-suspend
sudo systemctl start python3-validity
fprintd-enroll
fprintd-verify
sudo authselect current
sudo authselect enable-feature with-fingerprint
sudo authselect apply-changes
So a little update. I need to periodically restart both
open-fprintd
andpython3-validity
, and it needs to happen in that exact order. I'm on Debian, so you might need to adapt this to your own distro's way of doing things.To my system's
crontab
I've added this to restart both services once an hour on the hour:And I created the script
/usr/lib/systemd/system-sleep/fprint_wakeup
to run after a wakeup from suspend:Make that script executable:
I'm sure there's a better way to do both of these things, if anyone suggests something better I'm all ears. Since implementing these two things I haven't hit any snags. What also helped was realizing my right index finger just doesn't have a fingerprint anymore. I still see there being a longer than expected delay before PAM does all of the right things, either with reading my fingerprint or typing in a text password.