How to use fingerprint unlocking - How to set up Fprintd (English)

I had such a bad experience with the fingerprint setup that I disabled it after a couple days.
It works, it uses the fingerprint and unlocks the screen, or even sudo in the terminal, which is super convinient.
The problem is when your laptop is closed and you’re using a screen. It literally didn’t allow me to type the password in the gdm/login screen. In the terminal is a bit inconvinent, you need to crlt+c the fingerprint prompt, but at least then you have an option.

Maybe I was unlucky, but it wasn’t for me!

1 Like

@tscolari – How exactly did you get the actual fingerprint reader to unlock the screen, work with sudo, etc. I followed these steps, and any other references I can find, and I can only enroll fingers using sudo, which defeats the purpose, and every other time I get errors about either no devices found, or not authorized to enroll fingerprints. Pullin my hair out over here…!

Because:

$ sudo lsusb -v|rg Fingerprint
969:Bus 003 Device 002: ID 27c6:5125 Shenzhen Goodix Technology Co.,Ltd. Goodix Fingerprint Device
982:  iProduct                2 Goodix Fingerprint Device

So I

  services.fprintd.enable = true;
  services.fprintd.tod.enable = true;
  services.fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix;

However, it cannot work.

$ fprintd-enroll wzy
Impossible to enroll: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No devices available

Hey sorry, I didn’t see your reply before!
I literally followed the steps above, on my dell laptop I had to use one driver, on lenovo the other one - but if you can enroll fingerprints I think you got the correct one already.
Everything else just worked out of the box from that point. I’m using gnome.
Some people pointed out that it needs to be enabled in the gnome / profile GUI configuration, but I had no such option there.

I’m on a surface laptop and not able to get this working.

I’m not seeing any interface settings and when I try to manually enroll I got the same error as Freed-Wu.

Impossible to enroll: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No devices available

Do I need a different driver? I tried both of the ones listed above.

Have you tried sudo fprintd-enroll?

It has been a bit since I enrolled mine, but I do recall one step the surprised me by requiring elevated permissions. I think it was the enroll step.

Unfortunately, no luck with that. Still gave the same error, which points to a driver issue.

I have a Microsoft Surface Laptop Go 2 w/ fingerprint scanner of course. :wink:

Is maybe the surface finger print hardware not supported for Linux in general?
Looks like you might need some custom kernel according to Reddit https://www.reddit.com/r/SurfaceLinux/comments/rkfctj/surface_laptop_go_fingerprint_support/

Thanks tscolari, I did find that in my research. I’m guessing there should also be some code added to the hardware configuration if it’s not being recognized?

Is it possible to just run two different kernels or running a primary with a spliced in custom code? I’m not exactly sure how kernels work, but I thought it was one at a time.

I see in the wiki it seems to be possible to run custom kernel, but I’m likely to screw that up as I’m new to that part of Linux.

Can running a custom kernel or add-on kernel be as easy as adding a few lines to the config?

Just to add my experience. My system: NixOS 24.05.20240228.9099616 (Uakari); Laptop Thinkpad X1 gen 9. I run Flake and home-manager. In addition to adding fprintd package I added this to my configuration.nix:

services.fprintd = {
  enable = true;
  package = pkgs.fprintd-tod;
  tod = {
    enable = true;
    driver = pkgs.libfprint-2-tod1-vfs0090;
  };
};

Next I ran fprintd-enroll and it asked for password. After that it just worked for sudo and for gdm.

2 Likes

For me, services.fprintd.enable was enough. I didn’t need to use tod at all.

I used kde’s UI to enroll fingerprints, it worked like a charm as well.

2 Likes

This worked perfectly for me on a Dell Precision 5480.

FYI, I also just switched my Framework laptop to NixOS. To get the fingerprint reader working, all I had to do was add services.fprintd.enable = true; to configuration.nix (and do a rebuild switch, of course) and it just worked - “Configure Fingerprint Authentication” appeared in the settings UI, under Users (Plasma DM.)

edit: lsusb shows ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC for the reader.

Hi there, a quick setup for laptops which commonly work with fprintd out of the box:
Add this to your configuration.nix

  environment.systemPackages = [
    pkgs.fprintd
  ];
  # fprintd 
  services.fprintd.enable = true;

Note: this is for system package, but you can also install it as a user package.

Tested on Thinkpad X1 Carbon Gen10.

Note: remember to run fprintd-enroll !!

Hello,

I’m a bit of a noob on Linux and NixOS, but I’ve been trying to work out the fingerprint reader.

I’ve installed fprintd and it seems to be working, without any error messages.
I can enrol a finger both via terminal (fprintd-enrol) and via the GUI on Gnome (System > Users)

But when it prompts for the password, my fingerprint will NOT work.

If I try to do fprintd-verify, it doesn’t give me any errors, but it goes straight through:

[thisuser@nix:~]$ fprintd-verify
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
** - #0: right-index-finger**
Verify started!
Verifying: right-index-finger
Verify result: verify-disconnected (done)

[thisuser@nix:~]$

Do anyone experience this? Or have any tips for me?

Thank you!
Cheers

It should look like this:

$ fprintd-verify 
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
 - #0: right-index-finger
Verify started!
Verifying: right-index-finger
Verify result: verify-match (done)

I suspect your device might be dropping out or something, check dmesg and journal.

Hi mate,

Thanks for that.
I ran dmesg and this is what i found regarding the fingerprint reader:

[ 1.642504] usb 5-3: new full-speed USB device number 4 using xhci_hcd
[ 1.780673] usb 5-3: New USB device found, idVendor=0483, idProduct=2016, bcdDevice= 0.01
[ 1.780678] usb 5-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1.780680] usb 5-3: Product: Biometric Coprocessor
[ 1.780682] usb 5-3: Manufacturer: STMicroelectronics

Enrolling fingerprints works fine, but it doesn’t “read” it when doing the fprintd-verify OR just when a password is needed.

Do you think it could be a driver issue?

Thank again,

Cheers

Check the log while you’re doing it; snip before and after.

I don’t know what the cause might be, you have to use logs etc. to figure this out.

For those with Dell laptops (presumably using the tod.driver = pkgs.libfprint-2-tod1-broadcom; package), is your fingerprint reader currently working?

fprintd is working for me, but it does not detect my fingerprint reader, despite that package being explicitly made for Dell Latitude 7300. Checking Bus 001 Device 003: ID 0a5c:5842 Broadcom Corp. 58200, I do have the correct fingerprint reader.

# Fingerprint sensor
## https://wiki.archlinux.org/title/Fprint
services.fprintd = {
  enable = true;
  package = pkgs.fprintd-tod;
  tod.enable = true;
  # Search for "libfprint" in packages to find other drivers
  tod.driver = pkgs.libfprint-2-tod1-broadcom;
};

this is the full snippet in my configuration.nix