Skip to content

Instantly share code, notes, and snippets.

@borcean
Last active October 30, 2025 19:41
Show Gist options
  • Select an option

  • Save borcean/f32c47f6cc52cee33dfc2265ce63f777 to your computer and use it in GitHub Desktop.

Select an option

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
@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

@kavemang
Copy link

kavemang commented May 1, 2025

@Stredoslovak this was working in Fedora 40 but no longer works in Fedora 41 and 42 Fprint no longer recognizes the synaptics reader used in the t480 and t480s not sure why

@rodrigorafaelb
Copy link

Running Fedora 43 with Python 3.14 here, still waiting on any fix/workaround...

@michelepagnucci
Copy link

michelepagnucci commented Oct 11, 2025

Lenovo Thinkpad 480 + Fedora 42 Workstation here.
Thank you @rubin110 , it works.

So a little update. I need to periodically restart both open-fprintd and python3-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:

0 0 *   * * *   root    service open-fprintd restart ; service python3-validity restart

And I created the script /usr/lib/systemd/system-sleep/fprint_wakeup to run after a wakeup from suspend:

#!/bin/bash
# 
# Restarting fingerprint reader related services on wakeup
# https://gist.github.com/borcean/f32c47f6cc52cee33dfc2265ce63f777
#
# located in /usr/lib/systemd/system-sleep/

exec 2> /tmp/systemd_fprint_wakeup_err.txt
if [ "${1}" = "pre" ]; then
  # Do the thing you want before suspend here
  echo "we are suspending." > /tmp/systemd_fprint_wakeup_err.txt
elif [ "${1}" = "post" ]; then
  # Do the thing you want after resume here
        service open-fprintd restart
        service python3-validity restart
  echo "and we are back from being suspended" >> /tmp/systemd_fprint_wakeup_err.txt
fi

Make that script executable:

sudo chmod +x /usr/lib/systemd/system-sleep/fprint_wakeup

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.

bitmoji

@rodrigorafaelb
Copy link

Running Fedora 43 with Python 3.14 here, still waiting on any fix/workaround...

add Fedora 43.. here ---> https://copr.fedorainfracloud.org/coprs/sneexy/python-validity/

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