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 fprintd padrão foi reinstalado no lugar do python-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ão python-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)