Setting up fingerprint scanner on Framework 16
I'm using Debian 12 which is not officially supported but appears to work more or less out of the box
Check which fingerprint device you have
Check which device you have with lsusb
~> lsusb
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0bda:5634 Realtek Semiconductor Corp. Laptop Camera
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 0e8d:e616 MediaTek Inc. Wireless_Device
Bus 001 Device 010: ID 32ac:0018 Framework Laptop 16 Keyboard Module - ISO
Bus 001 Device 009: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
Bus 001 Device 006: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 007: ID 32ac:0014 Framework Laptop 16 Numpad Module
Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 005: ID 32ac:0002 Framework HDMI Expansion Card
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 002: ID 32ac:0003 Framework DisplayPort Expansion Card
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
The fingerprint device on the Framework 16 is this line:
Bus 001 Device 009: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
You can check which devices are supported by fprintd from their compatibility table
Install fprintd
fprintd is a daemon and tools which allow interacting with fingerprint devices
Install with apt:
~> sudo apt update -y
~> sudo apt install fprintd libpam-fprintd
Configure PAM to allow fingerprint logins
There is a TUI tool called pam-auth-update
which edits the necessary files for us
~> sudo pam-auth-update
Use the arrow keys and spacebar to select [*] Fingerprint authentication, then tab and enter to click
Configure Polkit to allow us to register fingerprints
I had an issue where Polkit was preventing the registration of new fingerprints.
~> fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
EnrollStart failed: GDBus.Error:net.reactivated.Fprint.Error.PermissionDenied: Not Authorized: net.reactivated.fprint.device.enroll
I had to create a file /etc/polkit-1/rules.d/50-allow-fprintd.rules (the filename doesn't matter, polkit reads all files in that directory) with the following contents
~> cat /etc/polkit-1/rules.d/50-allow-fprintd.rules
polkit.addRule(function (action, subject) {
if (action.id == "net.reactivated.fprint.device.enroll")
{
return polkit.Result.YES;
}
})
This file tells polkit to allow anyone to register fingerprints on the device
Now we can enroll fingerprints, place your finger on the scanner in multiple positions, so it can pick up your fingerprint more easily when verifying.
~> fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-completed
Now when logging in via the tty or to sudo, it will prompt for fingerprint after entering your username
~> sudo -i
Place your right index finger on the fingerprint reader
root:~#
If it doesn't recognise your finger, it will prompt for password instead.
~> sudo -i
Place your right index finger on the fingerprint reader
Failed to match fingerprint
[sudo] password for matthew:
root:~#