O ThinkPad T480 vem com o leitor Synaptics Metallica MIS Touch Fingerprint Reader (06cb:009a), que não é suportado pelo libfprint/fprintd padrão. O serviço até sobe, mas retorna “No devices available”.
A solução é usar o driver python-validity junto com o open-fprintd (um substituto do fprintd que aceita backends alternativos), ambos disponíveis no AUR.
O problema
$ fprintd-list $USER
No devices available
Mesmo com fprintd e libfprint instalados, o sensor Synaptics 06cb:009a simplesmente não é reconhecido. Isso acontece porque esse modelo específico usa um protocolo proprietário que o libfprint não implementa.
Nota: Se você já tinha o fingerprint funcionando e ele parou após uma atualização do sistema, provavelmente o
fprintdpadrão foi reinstalado no lugar dopython-validity+open-fprintd. A solução abaixo resolve isso.
A solução
Comando único (copiar e colar)
sudo pacman -Rns fprintd && yay -S python-validity open-fprintd && sudo systemctl enable --now python3-validity open-fprintd && sudo fprintd-enroll $USER && fprintd-verify
Passo a passo
1. Remover o fprintd padrão (conflita com open-fprintd):
sudo pacman -Rns fprintd
2. Instalar os pacotes do AUR:
yay -S python-validity open-fprintd
3. Habilitar e iniciar os serviços:
sudo systemctl enable --now python3-validity open-fprintd
Atenção: o nome do serviço é
python3-validity(com o 3), nãopython-validity.
4. Registrar a digital:
sudo fprintd-enroll $USER
Passe o dedo várias vezes no sensor até completar o registro.
5. Verificar:
fprintd-verify
Configuração do PAM (opcional)
Para usar a digital em sudo e na tela de bloqueio, adicione a seguinte linha no início dos arquivos /etc/pam.d/sudo e /etc/pam.d/polkit-1:
auth sufficient pam_fprintd.so
USB Power Management
Se mesmo após instalar os pacotes corretos o sensor não for detectado, verifique se o gerenciamento de energia USB não está suspendendo o dispositivo:
# Encontrar o device ID do sensor
for device in /sys/bus/usb/devices/*; do
if [ -f "$device/idVendor" ]; then
vendor=$(cat "$device/idVendor" 2>/dev/null)
product=$(cat "$device/idProduct" 2>/dev/null)
if [ "$vendor" = "06cb" ] && [ "$product" = "009a" ]; then
echo "Device: $(basename $device) - Power: $(cat $device/power/control)"
fi
fi
done
Se o power control estiver em auto, mude para on:
# Substitua 1-9 pelo ID encontrado acima
echo 'on' | sudo tee /sys/bus/usb/devices/1-9/power/control
Dispositivo
Bus 001 Device 026: ID 06cb:009a Synaptics, Inc. Metallica MIS Touch Fingerprint Reader
Ambiente
- ThinkPad T480
- Arch Linux
- Hyprland (Omarchy)