Skip to content

Instantly share code, notes, and snippets.

@borcean
Last active December 7, 2024 19:47
Show Gist options
  • Save borcean/f32c47f6cc52cee33dfc2265ce63f777 to your computer and use it in GitHub Desktop.
Save borcean/f32c47f6cc52cee33dfc2265ce63f777 to your computer and use it in GitHub Desktop.
ThinkPad T480 fingerprint reader on Fedora Linux

ThinkPad T480 fingerprint reader on Fedora Linux

Background

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.

Installing open-fprintd and python-validity

sudo dnf copr enable tigro/python-validity
sudo dnf install open-fprintd fprintd-clients fprintd-clients-pam python3-validity

Prepare the fingerprint reader

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

Enable services

sudo systemctl enable python3-validity open-fprintd-resume open-fprintd-suspend
sudo systemctl start python3-validity

Enroll and test fingerprint

fprintd-enroll
fprintd-verify

Enable authentication with fingerprint

sudo authselect current
sudo authselect enable-feature with-fingerprint
sudo authselect apply-changes
@baumkuchen42
Copy link

Might be obvious for some, but: don't forget to restart after executing this gist!

@kavemang
Copy link

kavemang commented Apr 15, 2024

anyone know if this is still working in fedora 39? I tried some things last year I couldnt get to work but dont recall trying a guide that dipped into selinux modification

PS: this is partially working for me but when waking from sleep I cant use fingerprint and there is a long delay after using password before it lets me in

@Boffice
Copy link

Boffice commented Jun 25, 2024

Last metadata expiration check: 0:00:58 ago on Tue 25 Jun 2024 06:07:26 PM EDT.
Error:
Problem 1: conflicting requests

  • nothing provides python(abi) = 3.11 needed by open-fprintd-0.6-7.fc39.noarch from copr:copr.fedorainfracloud.org:tigro:python-validity
    Problem 2: conflicting requests
  • nothing provides python(abi) = 3.11 needed by python3-validity-0.14-2.fc39.noarch from copr:copr.fedorainfracloud.org:tigro:python-validity
  • nothing provides python3.11dist(cryptography) >= 2.1.4 needed by python3-validity-0.14-2.fc39.noarch from copr:copr.fedorainfracloud.org:tigro:python-validity
  • nothing provides python3.11dist(pyusb) >= 1 needed by python3-validity-0.14-2.fc39.noarch from copr:copr.fedorainfracloud.org:tigro:python-validity
  • nothing provides python3.11dist(pyyaml) >= 3.12 needed by python3-validity-0.14-2.fc39.noarch from copr:copr.fedorainfracloud.org:tigro:python-validity
    (try to add '--skip-broken' to skip uninstallable packages)

@Evanston09
Copy link

I don't know if you still have that error but for everyone else you need to use a different copr. You can use either: sneexy/python-validity or taaem/python-validity

@AQSAMA
Copy link

AQSAMA commented Aug 1, 2024

I used them but got this error: chmod: cannot access '/usr/share/python-validity/6_07f_lenovo_mis_qm.xpfwext': No such file or directory

And after this command: sudo chmod 0755 /usr/share/python-validity/6_07f_lenovo_mis_qm.xpfwext

@Stredoslovak
Copy link

Stredoslovak commented Nov 5, 2024

Hello, I am trying to get the Fingerprint reader on my T480s getting to work, as I am following the provided guide, I am facing some interesting errors and I was wondering if anyone would be able to help me.

$ sudo python3 /usr/share/python-validity/playground/factory-reset.py
Traceback (most recent call last):
  File "/usr/share/python-validity/playground/factory-reset.py", line 6, in <module>
    factory_reset()
    ~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/validitysensor/sensor.py", line 87, in factory_reset
    assert_status(usb.cmd(b'\x10' + b'\0' * 0x61))
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/validitysensor/util.py", line 12, in assert_status
    raise Exception('Failed: %04x' % s)
Exception: Failed: 0404

This over here I am not able to fix by any means. Can somebody please explain me what is going on?

OS: Fedora Workstation 41

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment