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

When I try to install a couple of the pipe packages, it can’t find suitable copies, same message as I mentioned before. Only two packages weren’t found.
libsystemd and libdbus-dev

Where does Ubuntu go to look for these things?

The first round, it didn’t find any to install?


Finally got everything installed, using a combination of above and correcting some user errors.

Got an enrollment finger and logged in.

Thank you all for providing instructions.

I also added install to the ninja -C builddir commands.

There is a lot to install, isn’t there.

I finally figured out my issue with the fingerprint reader. Since I think the issue was at the hardware/firmware level, I’m moving over here from the Fedora 34 thread.

TL;DR

  1. fingerprint reader was working fine in Ubuntu 21.04,
  2. replaced Ubuntu with Fedora 34
  3. couldn’t enroll my finger - every attempt ended with “enroll-unknown-error”
  4. discovered it was failing, because the sensor said it was already enrolled - it had never occurred to me to try enrolling one of my nine other fingers
  5. other fingers enroll fine

Here’s my original comment regarding the issue.

After finally figuring out how to get fprintd into debug mode (here, at the very bottom of the page), the problem seemed obvious.

Aug 08 20:15:49 fedora fprintd[10147]: [goodixmoc] SSM FP_ENROLL_NUM_STATES failed in state 2 with error: Finger is too similar to another>
Aug 08 20:15:49 fedora fprintd[10147]: [goodixmoc] FP_ENROLL_NUM_STATES completed with error: Finger is too similar to another, try use a >
Aug 08 20:15:49 fedora fprintd[10147]: Device reported enroll completion

As you can see above, I found out enroll was failing because the finger I was trying to enroll was already enrolled… but on a brand new Linux install???

This leads me to believe that my fingerprint from enrolling in Ubuntu is stored within the fingerprint reader (or TPM?), which prevented me from enrolling the same finger again.

I was able to enroll any other finger without a problem, but I still don’t know how to delete/unenroll my right index finger from the reader, or get the OS to recognize that it is already enrolled from a previous OS.

Also, in all my troubleshooting, at some point, the ability to enroll fingerprints in Gnome settings disappeared and I can’t figure out how to get it back! So I can enroll and verify with fprintd, but can’t get the OS to use it as an authentication option :man_facepalming:

8 Likes

My OS: pop!_os, which is using Ubuntu 21.04 kernel 5.11

I finally was able to get the fingerprint reader working after using a combination of all the guides on this page. However, on pop!_os, running fprintd-enroll didn’t work, until I installed libpam-fprintd.

sudo apt install libpam-fprintd

6 Likes

@Adrian_Sanabria very interesting issue! We’ll dig into that and see what the right way to unenroll fingerprints in Linux for this module is.

6 Likes

I finally had a chance to try this out and I followed @Ian_Cleary’s instructions and got the lib and the daemon to build without issues. However, fprintd doesn’t seem to be working correctly. Checking my user account in the Gnome settings shows me a grayed out option for fingerprint logins which disappears entirely after about 30 seconds. Running fprintd-enroll directly gives me an error after 25 seconds saying that it couldn’t connect to the service and timed out. Systemctl says that the fprintd module loaded, then immediately errored out, but I can’t tell what the underlying error was (“failed with result: ‘exit-code’”). The only thing that might be a useful error was the line “undefined symbol: fp_device_has_feature, version LIBFPRINT_2.0.0” which doesn’t give very meaningful results in Google. Any ideas?

I was able to get a fingerprint enrolled on Ubuntu 21.04 using the most recent instructions from Ian, except I had to also install libsystemd-dev and I had to add the install command at the end of the ninja commands so that libfprint and fprintd would get installed to /usr/local/

Specifically,

sudo apt install libsystemd-dev

and then for libfprint and fprintd:

ninja -C builddir install

Then, fprintd-enroll worked.

12 Likes

Have you figured anything out on this? I got myself into the same situation, same finger even. There is a “Clear TPM” checkbox in the BIOS Security screen, but it does not reset the fingerprint.

4 Likes

No, but I think the Framework folks are looking into it.

3 Likes

Okay, I tried building everything again from scratch, adding in @Ryan_Helinski’s comment about libsystemd-dev and this time watching the meson build output. I noticed during the build of libfprint that it seemed to be missing a reference to the Cairo graphics library, so I also added
sudo apt install libcairo-dev
as well. Built libfprint, built fprintd, and everything seems to be working as expected now.

1 Like

@R_L_Royall_Jr I also found that I did not have to install libfprint-2-dev. I have since also learned that other instructions recommend that you first remove the older, system-provided libfprint and fprintd with the command:

sudo apt purge --auto-remove fprintd libfprint-2-2

The new fprintd-* commands will still work with the system-provided software installed, but you might as well save some space and possible contention / confusion.

1 Like

I am having what looks like the same problem as some others have reported. I had successfully enrolled my right index finger and middle finger fingerprints on my first Fedora 34 respin install a few days ago. I reinstalled the exact same respin and got the error “Failed to enroll new fingerprint”. I was able to enroll some other fingerprints, so appears as if something is not cleared out on install. I repeated the experience with the respin that just came out today, August 16. After the successful enroll of a different fingerprint, I saw that a button for something like “Delete Fingerprints” appeared, so I tried that, hoping it would clear out the data that seems to be preventing me from being able to register my index or middle fingers on this fresh install. (edit: It did not resolve the problem.)

dnf info libfprint says I’ve got the following installed:

Version : 1.90.7
Release : 3.fc34

1 Like

I’ve solved the issue of the fingerprint option disappearing in Fedora34/Gnome40!

Found the solution here: https://www.reddit.com/r/Fedora/comments/oik8sq/need_help_setting_up_fingerprint_auth_in_fedora_34/h4xvrqv

In short, these three commands brought it back in the UI (though I still have no idea why it disappeared in the first place - something I did while troubleshooting fprintd)

$ sudo authselect current
$ sudo authselect enable-feature with-fingerprint
$ sudo authselect apply-changes

Note - this doesn’t fix any issues with fprintd or the fingerprint reader itself. At this point, I had verified that fprintd-enroll was working perfectly, I just didn’t have the UI integration piece working.

4 Likes

On Ubuntu 21.04, I just installed libfprint and fprintd v1.94.0 following a slightly modified version of @Ian_Cleary 's instructions. Instead of sudo pip install I installed python packages in a virtual environment. It worked no problem for libfprint 1.94.0. When installing fprintd, however, I was stuck with this error message, even though I had installed the dependencies including python3-pypamtest:
meson.build:134:8: ERROR: Problem encountered: Python3 module 'pypamtest' required by test suite not found

My workaround was to comment out this line in meson.build:
'pypamtest': get_option('pam')

1 Like

Has anyone succeeded in using fingerprint for things other than the login screen? e.g. sudo on the terminal, or other dialog boxes that ask for authentication?

3 Likes

@Atul_Ingle my fingerprint works in terminal on the Respin of Fedora that Framework recommended.

3 Likes

@Atul_Ingle I use it to unlock 1Password, works perfectly. On first boot, I have to use my master password to unlock 1Password, but after that, I can just use my fingerprint.

UPDATE: Ooooh, I just noticed I can also use my fingerprint to sudo!

4 Likes

Oh. That is SLICK!

1 Like

if anyone’s wondering, setting up the fingerprint to work with sudo is simple for Ubuntu 21.04. just need to run sudo pam-auth-update and use the spacebar to enable fingerprint auth. there’s a stackexchange on this as well sudo - Use fingerprint authentication not only for login - Ask Ubuntu.

obviously, you need to have built libfprintd with the directions laid out above and enrolled your fingerprint. for me, i needed @Ian_Cleary’s directions and @Ryan_Helinski’s addition of using install at the end of the ninja command. additionally, i had to use sudo to install ninja since meson was looking for it in usr/local/bin. i built the latest version from source which is libfprintd v1.94 i believe.

5 Likes

@garrett528 I don’t see a fingerprint option when I run sudo pam-auth-update. I think I may have to manually edit some files in /etc/pam.d/

I have this problem. It appears the fingerprint reader has storage of its own, and when fprintd can’t tell the fingerprint reader what fingerprint to delete, it can’t tell the reader to wipe its memory and start over.

1 Like