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-validitysudo 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.xpfwextsudo systemctl enable python3-validity open-fprintd-resume open-fprintd-suspend
sudo systemctl start python3-validityfprintd-enroll
fprintd-verifysudo authselect current
sudo authselect enable-feature with-fingerprint
sudo authselect apply-changes
So a little update. I need to periodically restart both
open-fprintdandpython3-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
crontabI've added this to restart both services once an hour on the hour:And I created the script
/usr/lib/systemd/system-sleep/fprint_wakeupto 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.