Fingerprint scanner compatibility with linux (ubuntu, fedora, etc)

Has anyone succeeded in using fingerprint login with Linux + Windows dual boot environment? Any gotchas? If I enroll (or remove) fingerprints in one OS, does it affect the other OS?

I use the same finger for w10, and Ubuntu 21.04 after getting it working

3 Likes

I have fingerprint login working for both Linux and Windows. Unfortunately, I had to set fingerprint twice – was not able to reuse fingerprint set in Ubunty on Windows login. Fortunately, when I set it in Win10 as well – it hasn’t overrided my Ubunty fingerprint.

1 Like

I’m on Ubuntu 20.04.3 and while I have the fingerprint scanner showing up, I get a device error or a failure to connect.

I get a failure to connect if I try to register a finger that I have used for Windows login. And then device error if I use a finger I haven’t registered.

The scanner works under Windows though.

I’m wondering if it is just because I am on LTS?

That seems unlikely (most of the fingerprint driver is in userspace, to the kernel it’s just another USB device), but it’d probably be easy enough to test a live USB containing 21.04 with libfprint 1.92.1 and fprintd 1.92.0 copied into the image from your root partition after it’s done loading.

Here’s a potential solution for those who were having the issue with fingerprints being too similar. Although I’m not actually using a framework laptop, it worked for me and should work for you guys too.
Source of this python script

#! /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()
19 Likes

I can confirm that this worked on the Framework laptop when run with sudo on Arch Linux. Thanks @Bob_U!

Nice! This is exactly what I was waiting for before enabling the fingerprint scanner.

2 Likes

Did not work for me, unfortunately. I get libfprint-ERROR: parse fingerlist error

I guess my problem is that I had enrolled some fingerprints in previous Linux installs (Fedora, then Ubuntu) that I have since overwritten with a new Manjaro installation. I didn’t delete my fingerprints in those prior Linux installations and I’m afraid it’s too late now.

So I removed fprintd from system packages and this didn’t work for me on Ubuntu 21.04 - I think /usr/share/dbus-1/system-services/net.reactivated.Fprint.service was missing totally after this was done, and nothing replaced it in the source packages, which caused fprintd to hang indefinitely trying to find… something… related to this.

I didn’t debug much further, reinstalling the packages solved the problem and fprintd is using the freshly compiled version.

Same issue if you setup a fingerprint with Windows first. I think it is just an issue of the fingerprint module being associated with the fingerprint on one OS at a time. I saw some stuff on the forum about erasing registered fingerprints after deleting the first OS fingerprints were registered to. That might be something you check out.

1 Like

Where would I find that? The forum is pretty big now.

Fingerprint scanner compatibility with linux (ubuntu, fedora, etc)

No known reliable solution for the problem you’re experiencing.

Maybe that’s one factor, but I’ve been using it with Windows 10 and Manjaro (Gnome) without any issues. Registered the same two fingers in both OSs. I set up Windows first, then set up dual boot about a day later after I got frustrated with Windows.

2 Likes

So I was able to delete my fingerprint from the fingerprint module using the python script on this thread, however I can’t seem to get the fingerprint scanner to work under OpenSUSE Tumbleweed. I must be missing some packages. I installed libfprint-2-2 as well as fprintd and fprintd-pam, but gnome just keeps spamming on gdm that the fingerprint isn’t working, even without press. Does anyone have any advice for me with OpenSUSE?

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