Skip to content

Instantly share code, notes, and snippets.

@drewdomi
Created November 12, 2025 01:03
Show Gist options
  • Select an option

  • Save drewdomi/25e4b5ee3ef6447e4c59c327b6644153 to your computer and use it in GitHub Desktop.

Select an option

Save drewdomi/25e4b5ee3ef6447e4c59c327b6644153 to your computer and use it in GitHub Desktop.

Fingerprint Reader Setup on Linux - Synaptics Sensors

Complete guide for configuring Synaptics fingerprint readers (including Metallica MIS Touch) on Linux distributions using python-validity and fprintd.

Device Compatibility

This guide specifically covers Synaptics fingerprint sensors that require proprietary drivers:

  • Synaptics Metallica MIS Touch (06cb:009a)
  • Synaptics Prometheus (06cb:0081)
  • Synaptics VFS series (various IDs)

Check your device:

lsusb | grep -i synaptics
# Example output: Bus 001 Device 011: ID 06cb:009a Synaptics, Inc. Metallica MIS Touch Fingerprint Reader

Table of Contents

  1. Arch/Manjaro Installation
  2. Ubuntu/Debian Installation
  3. Fedora Installation
  4. Fingerprint Enrollment
  5. PAM Configuration
  6. GNOME Integration
  7. KDE Plasma Integration
  8. Troubleshooting
  9. Uninstallation

Arch/Manjaro

Installation

# Install required packages
yay -S python-validity fprintd

# Enable and start python-validity service
sudo systemctl enable --now python3-validity.service

# Download firmware (if prompted)
sudo validity-sensors-firmware

Verification

# Check service status
systemctl status python3-validity.service

# Verify device detection
fprintd-list $USER

Ubuntu/Debian

Installation

# Update package list
sudo apt update

# Install dependencies
sudo apt install -y fprintd libfprint-2-2 python3-pip python3-dev \
    libssl-dev libusb-1.0-0-dev git build-essential

# Clone python-validity repository
cd /tmp
git clone https://github.com/uunicorn/python-validity.git
cd python-validity

# Install python-validity
sudo pip3 install .

# Install systemd service
sudo python3 validity-sensors-firmware
sudo systemctl enable --now python3-validity.service

Alternative: PPA Method (Ubuntu 20.04+)

# Add PPA (community-maintained)
sudo add-apt-repository ppa:uunicorn/open-fprintd
sudo apt update

# Install packages
sudo apt install -y python3-validity fprintd

# Enable service
sudo systemctl enable --now python3-validity.service

Verification

systemctl status python3-validity.service
fprintd-list $USER

Fedora

Installation

# Install dependencies
sudo dnf install -y fprintd fprintd-pam python3-pip python3-devel \
    openssl-devel libusbx-devel git gcc

# Clone python-validity repository
cd /tmp
git clone https://github.com/uunicorn/python-validity.git
cd python-validity

# Install python-validity
sudo pip3 install .

# Download firmware and install service
sudo python3 validity-sensors-firmware
sudo systemctl enable --now python3-validity.service

SELinux Configuration (if enabled)

# Check SELinux status
sestatus

# If enforcing, create policy for python-validity
sudo ausearch -c 'python3' --raw | audit2allow -M python-validity-policy
sudo semodule -i python-validity-policy.pp

# Restart service
sudo systemctl restart python3-validity.service

Verification

systemctl status python3-validity.service
journalctl -u python3-validity.service -f

Fingerprint Enrollment

Command Line Enrollment

# Enroll default finger (right index)
fprintd-enroll

# Enroll specific finger
fprintd-enroll -f left-index-finger

# Available fingers:
# left-thumb, left-index-finger, left-middle-finger, left-ring-finger, left-little-finger
# right-thumb, right-index-finger, right-middle-finger, right-ring-finger, right-little-finger

Process:

  1. Follow prompts to scan the same finger 5 times
  2. Vary finger placement slightly for better recognition
  3. Ensure finger is clean and dry

List Enrolled Fingerprints

# Show enrolled fingerprints for current user
fprintd-list $USER

# Delete specific fingerprint
fprintd-delete $USER

# Delete and re-enroll
fprintd-delete $USER && fprintd-enroll

Test Authentication

# Verify fingerprint authentication
fprintd-verify

# Expected output:
# Using device /net/reactivated/Fprint/Device/0
# Verify result: verify-match (or verify-no-match)

PAM Configuration

Sudo Authentication

sudo nano /etc/pam.d/sudo

Add before the first auth line:

auth sufficient pam_fprintd.so

Result: Fingerprint prompt for sudo commands, password fallback.

System Login

GDM (GNOME Display Manager):

sudo nano /etc/pam.d/gdm-password

SDDM (KDE Plasma):

sudo nano /etc/pam.d/sddm

LightDM:

sudo nano /etc/pam.d/lightdm

Add:

auth sufficient pam_fprintd.so

Lock Screen

GNOME:

sudo nano /etc/pam.d/gnome-screensaver

KDE:

sudo nano /etc/pam.d/kde

Add:

auth sufficient pam_fprintd.so

Polkit (Administrative Actions)

sudo nano /etc/pam.d/polkit-1

Add:

auth sufficient pam_fprintd.so

Result: Use fingerprint for privileged GUI operations (software installation, system settings).


GNOME Integration

Settings GUI

# Open user accounts settings
gnome-control-center user-accounts

Steps:

  1. Navigate: Settings → Users
  2. Click Unlock (authenticate)
  3. Select Fingerprint Login
  4. Click + Add Fingerprint
  5. Choose finger and scan 5 times

Validation

# Lock screen (Super + L or Ctrl + Alt + L)
# Unlock with fingerprint

KDE Plasma Integration

Install KCM Module (Arch/Manjaro)

yay -S kcm-fingerprint

Install KCM Module (Ubuntu/Debian)

sudo apt install -y plasma-settings-fingerprint

Install KCM Module (Fedora)

sudo dnf install -y plasma-kcm-fingerprint

Settings GUI

Steps:

  1. Open System Settings → Users
  2. Navigate to Fingerprint tab
  3. Click Add Fingerprint
  4. Select finger and enroll

Validation

# Lock screen (Meta + L)
# Unlock with fingerprint

Troubleshooting

Device Not Detected

# Check service status
systemctl status python3-validity.service

# View logs
journalctl -u python3-validity.service -b

# Restart services
sudo systemctl restart python3-validity.service fprintd.service
sudo killall fprintd

Enrollment Fails

# Clear fprintd data
sudo rm -rf /var/lib/fprint/*

# Re-enroll
fprintd-enroll

USB Device Not Accessible

# Check USB permissions
lsusb | grep -i synaptics
# Note Bus and Device numbers (e.g., Bus 001 Device 011)

ls -la /dev/bus/usb/001/011

# Add user to plugdev group (if exists)
sudo usermod -aG plugdev $USER

# Reboot
sudo reboot

fprintd Debug Mode

# Stop service
sudo systemctl stop fprintd.service
sudo killall fprintd

# Run in debug mode
sudo fprintd -t -d

# In another terminal, test enrollment
fprintd-enroll

PAM Configuration Not Working

# Verify PAM syntax
sudo pam-auth-update --force

# Test PAM stack
pamtester sudo $USER authenticate

# Check logs
journalctl -xe | grep fprintd

Python-validity Installation Issues

# Check Python dependencies
pip3 show python-validity

# Reinstall
sudo pip3 uninstall python-validity
cd /tmp/python-validity
sudo pip3 install --force-reinstall .

# Restart service
sudo systemctl restart python3-validity.service

Firmware Download Fails

# Manual firmware download
sudo validity-sensors-firmware --verbose

# Alternative: Check GitHub releases
# https://github.com/uunicorn/python-validity/releases

Uninstallation

Arch/Manjaro

# Stop services
sudo systemctl stop python3-validity.service fprintd.service
sudo systemctl disable python3-validity.service

# Remove packages
yay -R python-validity fprintd

# Clean fingerprint data
sudo rm -rf /var/lib/fprint/*

Ubuntu/Debian

# Stop services
sudo systemctl stop python3-validity.service fprintd.service
sudo systemctl disable python3-validity.service

# Uninstall python-validity
sudo pip3 uninstall python-validity

# Remove packages
sudo apt remove --purge fprintd libfprint-2-2
sudo apt autoremove

# Clean data
sudo rm -rf /var/lib/fprint/*

Fedora

# Stop services
sudo systemctl stop python3-validity.service fprintd.service
sudo systemctl disable python3-validity.service

# Uninstall python-validity
sudo pip3 uninstall python-validity

# Remove packages
sudo dnf remove fprintd fprintd-pam

# Clean data
sudo rm -rf /var/lib/fprint/*

Remove PAM Configuration

# Edit PAM files and remove lines containing pam_fprintd.so
sudo nano /etc/pam.d/sudo
sudo nano /etc/pam.d/gdm-password  # or sddm, lightdm
sudo nano /etc/pam.d/gnome-screensaver  # or kde

Additional Resources


Credits

  • python-validity: @uunicorn
  • fprintd: freedesktop.org
  • Community Contributors: Arch/Ubuntu/Fedora communities

License

This documentation is provided under the MIT License. Free to use, modify, and distribute.


Last Updated: November 2025
Tested On: Manjaro GNOME, Ubuntu 24.04 LTS, Fedora 42

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment