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

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

@Adrian_Sanabria did you need to do anything to get fingerprint working with 1password? I have it working for sudo and login, but 1password hasn’t noticed the fingerprint reader.

And if not, how did you install 1password? I installed via the ubuntu app store, and I was wondering if a different method might get me a newer version or something like that.

Managed to get it working last night by working through the instructions for Ubuntu 2.1.04 had to add I believe it was Cmake and libfprint-dev then it was picked up in gnome and works great

Ok, after looking through the 121 posts… Has anyone come up with a definitive guide to get fprint to work on Ubuntu/Kubuntu ? I’ve tried a couple above and still no joy… If I missed it, I apologize now…

1 Like

@Reese_Borel I got mine working on Pop!_OS (which is ubuntu based) using version 1.94.0 but I want to re-do it for version 1.94.1. The only problem I had was setting up the PAM module built from source. I had to install the libpam-fprintd package from apt, which also brought along an older versoin of fprintd with it as a dependency. Still works but I’d rather not have duplicate versions. Once I figure that out I’ll write up a guide.

2 Likes

I solved this by building my own deb packages for fprintd and libfprint with appropriate version numbers. This ensures dependencies are met but the packages don’t get replaced or duplicated accidentally.

I wrote up how I did that here:

Since Pop is ultimately based on Debian the same procedure should work for you.

4 Likes

I’m trying to replicate your process on Pop but I’m running into some problems, (I’ve never built a deb before).

I’ve tried v1.92.1 and v1.94.1, getting the same problem with both.

First difference is the name of deb source:
apt source --download-only libfprint
yields the file:
libfprint_1.90.7+git20210222+tod1-0ubuntu2.debian.tar.xz

Next difference, the following section doesn’t exist in the rules file:

We’ll also need to comment out the lines for moving around the autosuspend files (as far as I can tell they’re only needed for the ELAN driver)

Here is my resulting rules file:

#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = optimize=-lto

export DPKG_GENSYMBOLS_CHECK_LEVEL = 2

BUILDDIR = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)

# Configuration arguments
CONFIG_ARGS = \
	-Dudev_hwdb_dir=/lib/udev/hwdb.d \
	-Ddrivers=goodixmoc \
	-Dgtk-examples=false

%:
	dh $@ --with gir

override_dh_auto_configure:
	dh_auto_configure -- $(CONFIG_ARGS)

override_dh_auto_test:
	dh_auto_test -- -C $(BUILDDIR) --timeout-multiplier 5

Another Difference is that /debian already has the .symbols file you provide, I tried it with your and the original one.

Final Difference is the libfprint-2-2.install file already uses hwdb.d instead of rules.d, it also has a [0-9] regex isntead of *, but i tried it both ways:

Next up, we need to modify debian/libfprint-2-2.install to install hwdb.d and not rules.d

Here’s my libfprint-2-2.install:

lib/udev/hwdb.d/
usr/lib/${DEB_HOST_MULTIARCH}/libfprint-[0-9].so.*

The package build seems to get pretty far but errors out on line 16 of debian/rules. Here’s the end of the output:

   dh_install
dh_install: warning: Cannot find (any matches for) "usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so.*" (tried in ., debian/tmp)

dh_install: warning: libfprint-2-2 missing files: usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so.*
dh_install: warning: Cannot find (any matches for) "usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so.*" (tried in ., debian/tmp)

dh_install: warning: libfprint-2-tod1 missing files: usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so.*
dh_install: warning: Cannot find (any matches for) "usr/include/libfprint-[0-9]/tod-[0-9]/*" (tried in ., debian/tmp)

dh_install: warning: libfprint-2-tod-dev missing files: usr/include/libfprint-[0-9]/tod-[0-9]/*
dh_install: warning: Cannot find (any matches for) "usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so" (tried in ., debian/tmp)

dh_install: warning: libfprint-2-tod-dev missing files: usr/lib/x86_64-linux-gnu/libfprint-[0-9]-tod.so
dh_install: warning: Cannot find (any matches for) "usr/lib/x86_64-linux-gnu/pkgconfig/libfprint-[0-9]-tod-[0-9].pc" (tried in ., debian/tmp)

dh_install: warning: libfprint-2-tod-dev missing files: usr/lib/x86_64-linux-gnu/pkgconfig/libfprint-[0-9]-tod-[0-9].pc
dh_install: error: missing files, aborting
make: *** [debian/rules:16: binary] Error 255
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

debian/usr/lib/x86_64-linux-gnu/ has the following files after the error:

setebos@setebos ~/D/f/libfprint ((v1.94.1))> ls -la debian/tmp/usr/lib/x86_64-linux-gnu/
total 1288
drwxr-xr-x 1 root root     150 Sep 30 11:48 ./
drwxr-xr-x 1 root root      32 Sep 30 11:48 ../
drwxr-xr-x 1 root root      36 Sep 30 11:48 girepository-1.0/
lrwxrwxrwx 1 root root      16 Sep 30 11:48 libfprint-2.so -> libfprint-2.so.2*
lrwxrwxrwx 1 root root      20 Sep 30 11:48 libfprint-2.so.2 -> libfprint-2.so.2.0.0*
-rwxr-xr-x 1 root root 1307544 Sep 30 11:48 libfprint-2.so.2.0.0*
drwxr-xr-x 1 root root      28 Sep 30 11:48 pkgconfig/

Your framework page was great, I hope you can provide some insight into this .deb build issue!