Fingerprint reader on ThinkPad T480s
Wstęp
ThinkPad T480s ma wbudowany czytnik linii papilarnych Synaptics o ID 06cb:009a (“Metallica MIS”, match-in-sensor). Domyślny libfprint w Ubuntu 26.04 go nie obsługuje — fprintd i libpam-fprintd są zainstalowane fabrycznie, ale bez pasującego sterownika nic nie wykryją. Poniżej cała ścieżka, która faktycznie zadziałała, razem z dwoma pułapkami po drodze (autosuspend USB i globalny common-auth), na które warto się przygotować od razu, zamiast dochodzić do nich metodą prób i błędów.
Krok 1: Potwierdź model czytnika
lsusb | grep -i synaptics
Szukamy ID 06cb:009a. Dla tego właśnie modelu standardowy libfprint nie ma sterownika — jedyna działająca opcja to reverse-engineered python-validity.
Krok 2: Podmień sterownik na python-validity
sudo apt remove -y fprintd libpam-fprintd
sudo add-apt-repository -y ppa:ubuntuhandbook1/open-fprintd
sudo apt update
sudo apt install -y open-fprintd fprintd-clients python3-validity
sudo systemctl enable --now python3-validity.service
sudo systemctl enable --now open-fprintd-resume.service open-fprintd-suspend.service
Krok 3: Wyłącz USB autosuspend dla czytnika
Bez tego czytnik po ~2 sekundach bezczynności usypia na poziomie USB, a python-validity nie budzi go automatycznie (usługi resume/suspend z kroku 2 reagują tylko na pełne uśpienie systemu, nie na zwykły autosuspend). Objaw: czytnik w ogóle nie reaguje, a w logu journalctl -u open-fprintd widać w pętli The service is suspended / offline, delay the call.
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="06cb", ATTR{idProduct}=="009a", TEST=="power/control", ATTR{power/control}="on"' | sudo tee /etc/udev/rules.d/99-fprint-no-autosuspend.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=usb
sudo systemctl restart python3-validity.service open-fprintd.service
Krok 4: Zarejestruj odcisk
fprintd-enroll
Domyślnie zapisuje prawy wskazujący. Żeby wskazać inny palec:
fprintd-enroll -f left-thumb
Dostępne nazwy: left-thumb, left-index-finger, left-middle-finger, left-ring-finger, left-little-finger i analogicznie dla right-*.
Test bez logowania:
fprintd-verify
Krok 5: Włącz odcisk w PAM — ale ostrożnie
sudo pam-auth-update --enable fprintd
To dopisuje pam_fprintd.so do /etc/pam.d/common-auth, czyli pliku dołączanego przez wszystkie usługi PAM w systemie — także gdm-password, sudo, su. Efekt uboczny: GDM ma już własną, dedykowaną ścieżkę gdm-fingerprint z wpisanym na stałe pam_fprintd.so, więc odcisk na ekranie blokady działał od razu. Ale wpisywanie hasła też zaczęło przechodzić przez common-auth, a więc też robiło pełną, do 10-sekundową próbę odczytu palca (max_tries=1 timeout=10), zanim w ogóle sprawdziło hasło. Tyle samo dotyczyło sudo w terminalu.
cat /etc/pam.d/gdm-fingerprint — jeśli tam już jest pam_fprintd.so, to wpis w common-auth jest zbędny i tylko spowalnia każde logowanie hasłem w systemie.Rozwiązanie — usunąć fprintd z globalnego stosu:
sudo pam-auth-update --remove fprintd
Po tym odcisk na ekranie blokady dalej działa (bo gdm-fingerprint ma go zaszytego na stałe), a wpisywanie hasła — w GDM i w sudo — znowu jest natychmiastowe.
Zarządzanie odciskami
fprintd-list $USER # lista zarejestrowanych odcisków
fprintd-delete $USER # usuń wszystkie odciski danego użytkownika
Podsumowanie
Dla Synaptics 06cb:009a na ThinkPadzie T480s: python-validity + open-fprintd zamiast domyślnego fprintd, wyłączony USB autosuspend dla urządzenia, i odcisk włączony wyłącznie tam, gdzie faktycznie ma sens — nie przez globalny common-auth, tylko przez dedykowaną ścieżkę GDM (gdm-fingerprint), która i tak już go obsługuje.
Comments powered by Talkyard.