[TRACKING] Fingerprint scanner compatibility with linux (ubuntu, fedora, etc)

I’ve been able to get the fingerprint scanner working smoothly under a dual boot environment with Windows 11 and Ubuntu 21.04. Neither OS detected fingerprints that were enrolled in the other, and enrolling in the second OS did not cause issues in the first OS. Hopefully the process becomes easier over time to set this up, as it did take some effort and research on other forums to get set up. My only concern at this point is if I will have issues when I reinstall both of my OSes when Windows 11 officially releases (I plan to switch to Arch).

I actually have the same issue with being unable to enroll fingerprints. I installed Fedora initially and enrolled a finger, but then I wiped that and installed Arch Linux. Every time I tried to enroll that finger, it would error out (with journald showing “fingerprint too similar”), so I used a Windows to Go USB to clear the fingerprints. Now, I’m unable to enroll any fingerprints under Linux (but Windows works fine).

If I try to enroll the same finger as I did last time (right index), fprintd-enroll quits with

Enroll Result: enroll-disconnected

and the journald log shows

Sep 22 11:29:45 framework fprintd[1801]: Device reported an error during identify for enroll: Corrupted message received

If I try to enroll a different finger, I instead get

Enroll result: enroll-stage-passed

but the logs show something different

Sep 22 11:32:29 framework fprintd[1889]: parse fingerlist error
Sep 22 11:32:29 framework systemd[1]: fprintd.service: Main process exited, code=dumped, status=5/TRAP
Sep 22 11:32:29 framework systemd[1]: fprintd.service: Failed with result 'core-dump'.

I’ve also tried running the script suggested above, but I just get

(process:1962): libfprint-ERROR **: 11:35:46.564: parse fingerlist error
Trace/breakpoint trap

and this seems to occur while executing the following line:

prints = dev.list_prints_sync()

(I’m running fprintd 1.94.0-1)

1 Like

Thanks! I had installed Fedora 34 and decided I wanted to go Manjaro and didn’t realize I would need to clear the fingers first, this saved my bacon.

1 Like

Can you try running the same script from a live USB and report back please. You may have to get python3 installed first, but my theory is that if it works from a live distro, then that could be a way to fix the problem without wiping the whole OS just to clear the fingerprints.

Thank you!

It solved my issue about a fingerprint which got stucked in the fingerprint internal memory after a reinstall!

Edit: it work from an install and a live USB in my case.

2 Likes

Older versions of libfprint and fprintd appear to not initialize the fingerprint reader device correctly, resulting in a very high temperature of the device. For me, this was fixed in versions v1.94.0 of both. See also Fingerprint reader - #8 by Ryan_Helinski

1 Like

I’ve tried a Fedora live USB (latest respin of Workstation) and Arch Linux (live USB and current install), and I get the same issue each time I run the script.

@kylemsguy @Charlene_Klingele Ditto. I tried Manjaro and Fedora live USBs. Still getting the parse fingerprint list error.

Interesting.

I’ll do a test later, see if I can replicate the issue.

@Charlene_Klingele there’s a new version of libfprint 1.94.1 with a goodix reader specific bugfix. It’ll be great if you could try that out.

I just compiled it on Arch, and assuming I did that correctly, I’m getting the same behaviour. I think my fingerprint reader is in a state that libfprint just doesn’t understand anymore.

If I had to guess, if your fingerprint reader can be reset with the Python script above, this new version would be helpful, though.

Installed Fedora 34, wiped and installed Arch Linux, and then booted into a Windows install and cleared the fingerprints the “Official Windows” way.

I think the key is to wipe the Linux fingerprint database and then Windows’s.

Oops yes, I enrolled the fingerprint originally under Fedora

Ok so to summarize what I did:

Installed Fedora 34, enrolled some fingers.
Installed Manjaro, forgetting to wipe said fingers.
Googled, found the python script, ran it. Finger prints gone.
Enrolled new one in Manjaro, saved a copy of the script because this will happen again.

Thanks for checking this @Charlene_Klingele! I still haven’t had any luck getting around the “parse fingerlist error” in Linux. Fingerprint working just fine in Windows. My guess is — not erasing old fingerprints in previous Linux installs and then installing Windows put it in this weird state? @kylemsguy is that what you did as well?

Yep, this is exactly what happened to me.

@Atul_Ingle @kylemsguy have you both also tried taking a finger you wouldn’t ever use like your pinky finger let’s say and registering it like this:

fprintd-enroll -u username -f right-index-finger

Doing that will force it to set it as that finger in the database, but since it won’t match anything you have tried before, it may allow registration and consequently then allow deletion or even perhaps running of the script to clear up the database.

I haven’t had a chance to do anything else with testing the new version of libfprint, been busy but thought this might help as it was something I tried when troubleshooting originally.

Unfortunately, this just causes fprintd to crash like detailed before.

Is -u a flag from a newer version of fprintd?

I think that may have just been a mistype from memory. On Manjaro username is a positional argument not an optional one:

Usage:
  fprintd-enroll [OPTION…] [username] Enroll a fingerprint

Help Options:
  -h, --help        Show help options

Application Options:
  -f, --finger      Finger selected to verify (default is automatic)

fprintd-enroll didn’t work for me. I got a message saying Enroll result: enroll-stage-passed and then no response when I touched the fingerprint reader.

Running journalctl -xeu fprintd.service shows these logs:

Sep 27 19:30:52 atul-laptop fprintd[4628]: parse fingerlist error
Sep 27 19:30:52 atul-laptop systemd[1]: fprintd.service: Main process exited, code=dumped, status=5/TRAP