F43 Fingerprint device disconnected mid enroll

Enrolling a fingerprint in F43

Jan 11 19:39:12 fedora systemd[1]: Started user@0.service - User Manager for UID 0.
Jan 11 19:39:12 fedora audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_>
Jan 11 19:39:12 fedora systemd[1]: Started session-c2.scope - Session c2 of User root.
Jan 11 19:39:12 fedora sudo[193567]: pam_systemd(sudo:session): Failed to check if /run/user/0/bus exists, ignoring: P>
Jan 11 19:39:12 fedora sudo[193567]: pam_unix(sudo:session): session opened for user root(uid=0) by johannes(uid=1000)
Jan 11 19:39:12 fedora audit[193567]: AUDIT1105 pid=193567 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unc>
lines 29826-29854/29854 (END)

The device is build in my Lenovo p61


 lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 27c6:6594 Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC
Bus 003 Device 003: ID 174f:11af Syntek Integrated Camera
Bus 003 Device 004: ID 2ce3:9563 Generic EMV Smartcard Reader
Bus 003 Device 005: ID 8087:0033 Intel Corp. AX211 Bluetooth
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

In my experience the fprintd is vulnerable against multiple requests triggered in quick succession (as during enrollment). The fprintd reports an error and does not respond afterwards for a short period (i.e. the fprint device is locked for subsequent requests). An enrollment GUI may treat such transient error as unrecoverable.

In case the problem persists then

  • inspect fprintd diagnostics using journalctl --unit fprintd.service
  • reset the service via systemctl restart fprintd.service
  • enroll via command-line (see man fprintd-enroll)
  • enable (temporarily) debugging to gather additional diagnostics
$ sudo systemctl edit --drop-in disabled.conf --stdin fprintd.service <<EOF
[Service]
Environment=G_MESSAGES_DEBUG=all
EOF
$ sudo systemctl daemon-reload

The fingerprint option is apparnetly not completely integrated in GNU/Linux. I´ve stopped using it until a working solution comes around.