This is a step by step guide shows how to enable fingerprint reader support for Lenovo ThinkPad T480/T480s, X1 Carbon 6th gen, X1 Yoga 3rd gen, X280, etc with 06cb:009a
device in Ubuntu 22.04.
Ubuntu has fingerprint reader support out-of-the-box using libfprint, and provides option to enable fingerprint login in Users settings page. However, the library has a list of unsupported devices, including 06cb:009a
that’s built-in in my used ThinkPad T480s laptop.
Thankfully, there’s a free open-source alternative python-validity that works in my case. Here’s how to install and set it up in Ubuntu 22.04, while Ubuntu 20.04 is also supported.
NOTE: This tutorial may also work in many other fingerprint readers, however, the project so far does NOT provide a page to list all supported devices.
Step 1: Tell Which Fingerprint Reader device do your laptop have
First of all, you may press Ctrl+Alt+T
on keyboard to open up a terminal window.
Then run command to find out the device name of your fingerprint reader:
lsusb
In my case, it’s 06cb:009a
. Not only for this device, the steps below should also work for 138a:0090, 138a:0097, 138a:009d.
Step 2: Install python3-validity driver
1. In a terminal window, first run command to uninstall the pre-installed libfprint driver:
sudo apt remove fprintd
2. Then, add the software developer’s PPA that contains the new driver packages:
sudo add-apt-repository ppa:uunicorn/open-fprintd
NOTE: The PPA so far supports Ubuntu 18.04, Ubuntu 20.04, and Ubuntu 22.04.
For Ubuntu 23.10 and Ubuntu 24.04, I’ve built the package into this unofficial PPA (without testing), run this command instead to add the PPA:
sudo add-apt-repository ppa:ubuntuhandbook1/open-fprintd
3. Finally, install the driver packages by running command:
sudo apt install open-fprintd fprintd-clients python3-validity
Linux Mint user needs to run sudo apt update
first to refresh package cache after adding PPA.
Step 3: Enable python3-validity service
After installing the driver package, it should automatically start the service.
To verify, simply run command in terminal:
systemctl status python3-validity.service
If it’s not in active running status, try running commands below to enable & start the service:
systemctl enable python3-validity.service
systemctl start python3-validity.service
Step 4: Enroll your fingerprint
Next, run the command below in terminal:
fprintd-enroll
It outputs “Enrolling right-index-finger finger“, and the LED light is turning on.
Now, touch the fingerprint sensor repeatedly. As you press your finger on the fingerprint sensor and lift it, it outputs a line says either Enroll result: enroll-stage-passed
or Enroll result: enroll-retry-scan
. Do it repeatedly, until it outputs “enroll-completed”.
NOTE: Fprintd enroll failed in my case in Ubuntu 24.04 LTS. It outputs some ‘enroll-stoage-passed’, but finally output ‘result:enroll-failed’. However, the fingerprint reader somehow just works after reboot in my T480s!!
Step 5: Enable Fingerprint Authentication
If everything’s goes well, you can now run the single command below to manage PAM module:
sudo pam-auth-update
In next screen, use up/down
arrow keys to choose “Fingerprint authentication”, then press space-bar
to enable/disable it. Finally, press Tab
to highlight OK and hit Enter.
After that, either lock screen then try using your fingerprint to un-lock. Or, run something or some commands that need user authentication, it will prompt you to “Place your finger on the fingerprint reader“.
In case fingerprint is not working after waking up from suspend, also run command to enable the service to automatically restart device after resume.
sudo systemctl enable open-fprintd-resume open-fprintd-suspend
Uninstall
So, if the driver does not work for your fingerprint reader, do following steps one by one to undo the changes.
- First, open terminal (Ctrl+Alt+T) and run command to re-configure PAM:
sudo pam-auth-update
In the screen, disable
fingerprint authentication
then, hit Tab and enter. - Next, run command to uninstall the python3-validity driver:
sudo apt remove --autoremove open-fprintd fprintd-clients python3-validity
Also, remove the Ubuntu PPA by running command:
sudo add-apt-repository --remove ppa:uunicorn/open-fprintd
If you want, you may install back the original fprintd driver via command:
sudo apt install fprintd
That’s all. Enjoy!
Thank you, Ji. My 1st comment here.
Your website is helpful and always with clear instructions. One of the best out there.
I just to report that I’ve tried the instructions on my ThinkPad X1 Carbon 6th running Ubuntu Cinnamon 23.10.
All worked as expected but then as you mentioned the driver is broken after resuming from sleep. The “sudo systemctl enable open-fprintd-resume open-fprintd-suspend” doesn’t seem to help for me.
Also, when unresponsive, I have trouble manually entering the password.
Thank you!
Worked for my T480.
:^)
hey i get the fail to start error, as follows
× python3-validity.service – python-validity driver dbus service
Loaded: loaded (/lib/systemd/system/python3-validity.service; enabled; ven>
Active: failed (Result: exit-code) since Thu 2024-05-09 09:06:51 +03; 15s >
Process: 6913 ExecStart=/usr/lib/python-validity/dbus-service –debug (code>
Main PID: 6913 (code=exited, status=1/FAILURE)
CPU: 134ms
How do I choose a fingerprint reader for my Ubuntu 24.04 Desktop?
Choosing one randomly that will create a nightmare scenario isnt something I want to do..
I am a complete novice at Ubuntu and unlikely to learn/remember command line instructions.. I am a ‘monkey see, monkey do Ubuntu lover’
The project seems not supporting this so far. You may request this feature by reporting to https://github.com/uunicorn/python-validity
Aaaah without your help I would have not done it, thank you
Thank you, Ji m. Worked for my T480s
Thank you so much
It worked for you?
I am getting a 404 when I attempt to retieve the open-frpintd/ubuntu package:
Err:10 https://ppa.launchpadcontent.net/uunicorn/open-fprintd/ubuntu noble Release
404 Not Found [IP: 2620:2d:4000:1::81 443]
It said enroll failed for me also but after forcing all the steps I can now log in using my fingerprintd as well as confirm sudo in the terminal Much appreciated!
t480s / linux mint 22
Thank you very very much!!!!
I try to do that really many different sites, but none of them works.
No it works perfectly!!!!
Thank you!
Worked for my x280….!!! :)
Thanks man – works well on my Lenovo Yoga x380
Hello. Thanks for article. i have lenovo thinkpad e580.
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 09da:c10a A4Tech Co., Ltd. USB Mouse
Bus 001 Device 004: ID 5986:2113 Bison Electronics Inc. SunplusIT Integrated Camera
Bus 001 Device 005: ID 06cb:00a2 Synaptics, Inc. Metallica MOH Touch Fingerprint Reader
Bus 001 Device 006: ID 8087:0032 Intel Corp. AX210 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
But not working.
systemctl status python3-validity.service
× python3-validity.service – python-validity driver dbus service
Loaded: loaded (/usr/lib/systemd/system/python3-validity.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Sun 2024-11-10 10:40:43 +03; 7s ago
Duration: 4.085s
Process: 5816 ExecStart=/usr/lib/python-validity/dbus-service –debug (code=exited, status=1/FAILURE)
Main PID: 5816 (code=exited, status=1/FAILURE)
CPU: 3.424s
File “/usr/lib/python3/dist-packages/validitysensor/init.py”, line 47, in open
usb.open()
File “/usr/lib/python3/dist-packages/validitysensor/usb.py”, line 50, in open
self.open_dev(dev)
File “/usr/lib/python3/dist-packages/validitysensor/usb.py”, line 62, in open_dev
raise Exception(‘No matching devices found’)
Exception: No matching devices found
python3-validity.service: Main process exited, code=exited, status=1/FAILURE
python3-validity.service: Failed with result ‘exit-code’.
python3-validity.service: Consumed 3.424s CPU time, 157.7M memory peak, 0B memory swap peak.
$ systemctl enable python3-validity.service
$ systemctl start python3-validity.service
$ fprintd-enroll
list_devices failed:
Please help.
Sadly, your fingerprint reader (06cb:00a2) is not supported, due to technical reasons.
Thank you. I hope someone solves this problem.