ThinkPad T480 Synaptics fingerprint reader — board 01LW329

The ThinkPad T480 ships with the Synaptics Metallica MIS Touch Fingerprint Reader (06cb:009a), which is not supported by the standard libfprint/fprintd. The service starts fine but returns “No devices available”.

The fix is to use the python-validity driver along with open-fprintd (an fprintd replacement that accepts alternative backends), both available in the AUR.

The problem

$ fprintd-list $USER
No devices available

Even with fprintd and libfprint installed, the Synaptics 06cb:009a sensor is simply not recognized. This happens because this specific model uses a proprietary protocol that libfprint doesn’t implement.

Note: If your fingerprint reader was working before and stopped after a system update, the standard fprintd was probably reinstalled over python-validity + open-fprintd. The solution below fixes that.

The solution

One-liner (copy and paste)

sudo pacman -Rns fprintd && yay -S python-validity open-fprintd && sudo systemctl enable --now python3-validity open-fprintd && sudo fprintd-enroll $USER && fprintd-verify

Step by step

1. Remove the standard fprintd (conflicts with open-fprintd):

sudo pacman -Rns fprintd

2. Install the AUR packages:

yay -S python-validity open-fprintd

3. Enable and start the services:

sudo systemctl enable --now python3-validity open-fprintd

Heads up: the service name is python3-validity (with the 3), not python-validity.

4. Enroll your fingerprint:

sudo fprintd-enroll $USER

Swipe your finger several times on the sensor until enrollment is complete.

5. Verify:

fprintd-verify

PAM configuration (optional)

To use the fingerprint reader with sudo and the lock screen, add the following line at the top of /etc/pam.d/sudo and /etc/pam.d/polkit-1:

auth    sufficient pam_fprintd.so

USB Power Management

If the sensor is still not detected after installing the correct packages, check whether USB power management is suspending the device:

# Find the sensor's device ID
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

If the power control is set to auto, change it to on:

# Replace 1-9 with the ID found above
echo 'on' | sudo tee /sys/bus/usb/devices/1-9/power/control

Device

Bus 001 Device 026: ID 06cb:009a Synaptics, Inc. Metallica MIS Touch Fingerprint Reader

Environment

  • ThinkPad T480
  • Arch Linux
  • Hyprland (Omarchy)