What is libfprint TOD and why it is not in official repos?

So recently I bought a Lenovo ThinkBook 13s gen4. Even though it is not an officially supported by Lenovo as Linux laptop, Fedora 38 beta mostly works on it. Things that do not work is resuming from suspend (pretty much known why) and a fingerprint reader. Fingerprint reader is Goodix with ID: 27c6:550a. It is marked in libfprint’s wiki as unsupported: Unsupported Devices · Wiki · libfprint / wiki · GitLab and same page notes that these devices are unlikely to ever be supported. However after searching around a bit I found a driver for this particular fingerprint reader provided by lenovo for Ubuntu (different laptop, but same sensor): Goodix FingerPrint Driver for Linux - ThinkPad E14 Gen 4, E15 Gen 4 - Lenovo Support US

So after a bit more of searching around I found some random repo by some random person which provides libfprint-tod package for fedora, I replaced libfprint package with it, manually copied .so file I extracted from that .deb package to /usr/lib64/libfprint-2/tod-1/, also manually copied udev rules for it and bob’s your uncle - I have perfectly working fingerprint reader now.

So, I understand that this is a proprietary driver and as such cannot be distributed by Fedora, but the question is: what exactly is libfprint-tod and why it is not available as part of Fedora?

3 Likes

libfprint-tod is a fork of libfprint for touch-based devices.

Because nobody has packaged it for Fedora.

There are some Copr builds of libfprint-tod. You can refer to their spec files as a starting point.

Although, it would be preferable if the fork was merged into upstream libfprint, then a separate package would not be needed. You could also look into making that happen.

2 Likes

Thanks for the reply. I was just trying to understand the history of this whole thing, still not clear why it is a fork if it just supersedes the libfprint with the ability to load drivers as shared objects. Guess should ask the author of the fork directly, just not sure how to do that.

And you probably do not want me as a package maintainer, I am very bad at… maintaining. :slight_smile:

1 Like

i have the same issue and would like to use my fingerprint reader =D could you share that repo?

I believe I’ve got the package from either from here: Show home:sp1rit / libfprint-tod - openSUSE Build Service even though this is some openSuSe build system it builds for Fedora too. Or maybe from here: Index of /linux/packages/fedora

Use it at you own risk - for all I know it could be some malware.

Continuing the discussion from What is libfprint TOD and why it is not in official repos?:

Hello, I tried to install the same drivers by following your steps but I think I messed up since Fedora broke after rebooting. Am I missing something? For what it’s worth, I used this link for the libfprint-tod.

What do you mean by ‘broke’ and how exactly did you install the package?

I installed the package and driver by:

  1. Downloading the package and following the instructions in the link
  2. Extract the deb file that I got from the Lenovo’s driver page
  3. Copy the extracted .so file to /usr/lib64/libfprint-2/tod-1/
  4. Copy the extracted udev rules to usr/lib/udev/rules.d/
  5. Reboot

After rebooting, it resulted to boot efi not mounting properly.

Don’t know, I believe I just swapped libfprint package with libfprint-tod. Can’t think of any way it could interfere with filesystem mounts.

In any case - dealing with unofficial packages is inherently messy and if you do not feel really adventurous - probably best to avoid doing that.

Hello Everyone, I’m new to fedora, coming from arch, my laptop is an thinkbook 13x, and it has the same fingerprint reader, in arch it worked because of this aur package: AUR (en) - libfprint-2-tod1-goodix but here in fedora I can’t find the same package, I found a couple packages with similar names in copr but they do not work, I really can’t experiment right now since I really need my laptop stable, being one of the reasons of moving from arch to fedora, thanks everyone!

Hey guys, I did the steps mentioned and in the post and FPR works but only through cli when I do fprintd-verify and fprintd-enroll, but there is no option to enroll new fingerprint through GNOME settings, so I cannot use any fingerprint to login to the laptop. Any idea what could be the reason?

Wait, how did you do it on Fedora?

Followed the same steps like you mentioned before in the post

Hi @takuvata, people in this post,

I’m trying to get the finger print reader working on my Lenovo laptop. It has the same device 27c6:550a. I downloaded the “.so” file from the Lenovo support website link you provided. But, I don’t know the next set of steps. Can you please help.

Thanks,
Mallikarjun.

Would be helpful if we had a updated COPR repo which actually works. The one’s I’ve tried don’t really work

I have tried opening an issue for it in “libfprint”.
I hope they will consider it soon.

Mallikarjun.

I have built a custom rpm package which copies the .so file to /usr/lib64/libfprint-2/tod-1/
libfprint-tod-goodix copr repo.
Thanks

1 Like

Thanks man. It works now!

1 Like

Hey @antiderivative ,

Thanks a lot man. I’m interested to give it a try.

The installations instructions would be,

sudo dnf copr enable manciukic/libfprint-tod-goodix

sudo dnf install libfprint-tod-goodix

sudo systemctl restart fprintd

fprintd-enroll

sudo rpm -i libfprint-tod-goodix-0.0.9-1.fc39.x86_64.rpm

Please let me know if I’m right.

Mallikarjun.

hey man, I just uploaded mine on COPR, so you have to just change a bit. check the message above

sudo dnf copr enable antiderivative/libfprint-tod-goodix-0.0.9

sudo dnf install libfprint-tod-goodix

sudo systemctl restart fprintd

fprintd-enroll