After reinstalling linux on the framwork laptop the fingerprint reader in not behaving properly
I installed Fedora 35 on the framework laptop and set up fingerprint reader for login and sudo.
The for some reason I formatted the laptop and installed Fedora 35 again. Then strange behavior started: When I wanted to enroll the same finger, it would go well, but before the last step it would error: "Fingerprint device disconnected".
Then I tried enrolling another finger which succeeds, but then on the first usage (login or sudo), it will fail and never suggest to use the fingerprint again.
I guess I need to clean the old enrolled fingerprints from the device, but could not find any resources regarding this.
How should I proceed? Thanks
EDIT: The output of: systemctl status fprintd
● fprintd.service - Fingerprint Authentication Daemon
Loaded: loaded (/usr/lib/systemd/system/fprintd.service; static)
Active: active (running) since Tue 2021-11-30 09:18:23 PST; 24s ago
Docs: man:fprintd(1)
Main PID: 19931 (fprintd)
Tasks: 5 (limit: 38206)
Memory: 1.6M
CPU: 83ms
CGroup: /system.slice/fprintd.service
└─19931 /usr/libexec/fprintd
Nov 30 09:18:22 fedora.mycompany.com.beta.tailscale.net systemd[1]: Starting Fingerprint Authentication Daemon...
Nov 30 09:18:22 fedora.mycompany.com.beta.tailscale.net fprintd[19931]: Failed to open /sys/bus/usb/devices/3-9/power/persist
Nov 30 09:18:23 fedora.mycompany.com.beta.tailscale.net systemd[1]: Started Fingerprint Authentication Daemon.
Nov 30 09:18:23 fedora.mycompany.com.beta.tailscale.net fprintd[19931]: libusb: error [udev_hotplug_event] ignoring udev action change
Nov 30 09:18:23 fedora.mycompany.com.beta.tailscale.net fprintd[19931]: libusb: error [udev_hotplug_event] ignoring udev action change
From here, this python script can clear all enrolled fingerprints:
#! /usr/bin/python3
import gi
gi.require_version('FPrint', '2.0')
from gi.repository import FPrint
ctx = FPrint.Context()
for dev in ctx.get_devices():
print(dev)
print(dev.get_driver())
print(dev.props.device_id);
dev.open_sync()
prints = dev.list_prints_sync()
print("num prints stored: %d" % len(prints))
for p in prints:
print('deleting print:')
date = p.props.enroll_date
print(' %04d-%02d-%02d valid: %d' % (date.get_year(), date.get_month(), date.get_day(), date.valid()))
print(' ' + str(p.props.finger))
print(' ' + str(p.props.username))
print(' ' + str(p.props.description))
dev.delete_print_sync(p)
print('deleted')
dev.close_sync()
I saved it as clear_fingerprints.py
and ran sudo python clear_fingerprints.py
, then restarted (just to be cautious) and enrolled my fingerprints again.