D-k-bo/libfprint-goodixtls

Description

libfprint fork for goodixtls devices. Currently supports 5110. Note you will need to flash your device with goodix-fp-dump to use this.

Installation Instructions

Instructions not filled in by author. Author knows what to do. Everybody else should avoid this repo.

Active Releases

The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).

* Total number of packages downloaded in the last seven days.


This is a companion discussion topic for the original entry at https://copr.fedorainfracloud.org/coprs/d-k-bo/libfprint-goodixtls/

Does this “driver” work? Could it be adapted to include Goodix device 27c6:538c (Dell Inspiron 5482)?

Hi, i have installed the dirver with the copr repo on a Huawei Matebook D14 with Fedora 37 and a fingerprint reader Shenzhen Goodix Technology Co.,Ltd. 27c6:5110. I have also disabled Selinux but it still not working. There is something that i can do to understand why?

This is the trace of journalctl -xe:

nov 26 23:34:52 huawei-matebook-d14 gnome-control-c[4781]: gtk_widget_is_ancestor: assertion ‘GTK_IS_WIDGET (widget)’ failed
nov 26 23:34:57 huawei-matebook-d14 audit[4913]: USER_AUTH pid=4913 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication grantors=pam_usertype,pam_localuser,pam_unix acct=“gdramis>
nov 26 23:34:57 huawei-matebook-d14 audit[4913]: USER_ACCT pid=4913 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:accounting grantors=pam_unix,pam_localuser acct=“gdramis” exe=”/usr/lib/p>
nov 26 23:34:57 huawei-matebook-d14 polkitd[808]: Operator of unix-session:2 successfully authenticated as unix-user:gdramis to gain TEMPORARY authorization for action net.reactivated.fprint.device.enroll for system-bus-name::1.184 [gnom>
nov 26 23:34:57 huawei-matebook-d14 fprintd[4854]: Failed to clear storage before first enrollment: Device has no storage.
nov 26 23:34:57 huawei-matebook-d14 kernel: usb 3-1: usbfs: process 4854 (fprintd) did not claim interface 1 before use
nov 26 23:34:57 huawei-matebook-d14 fprintd[4854]: length: 32, offset: 59120314, flags: -1157496829
nov 26 23:34:59 huawei-matebook-d14 audit[4854]: AVC avc: denied { read } for pid=4854 comm=“pool-fprintd” name=“nr_hugepages” dev=“proc” ino=55363 scontext=system_u:system_r:fprintd_t:s0 tcontext=system_u:object_r:sysctl_vm_t:s0 tcla>
nov 26 23:34:59 huawei-matebook-d14 audit[4854]: AVC avc: denied { open } for pid=4854 comm=“pool-fprintd” path=“/proc/sys/vm/nr_hugepages” dev=“proc” ino=55363 scontext=system_u:system_r:fprintd_t:s0 tcontext=system_u:object_r:sysctl>
nov 26 23:34:59 huawei-matebook-d14 audit[4854]: AVC avc: denied { getattr } for pid=4854 comm=“pool-fprintd” path=“/proc/sys/vm/nr_hugepages” dev=“proc” ino=55363 scontext=system_u:system_r:fprintd_t:s0 tcontext=system_u:object_r:sys>
nov 26 23:34:59 huawei-matebook-d14 fprintd[4854]: Failed to detect minutiae: No keypoints found
nov 26 23:34:59 huawei-matebook-d14 fprintd[4854]: [ INFO:0@51,809] global /builddir/build/BUILD/opencv-4.6.0/modules/core/src/parallel/registry_parallel.impl.hpp (96) ParallelBackendRegistry core(parallel): Enabled backends(2, sorted by>
nov 26 23:34:59 huawei-matebook-d14 fprintd[4854]: [ INFO:0@51,809] global /builddir/build/BUILD/opencv-4.6.0/modules/core/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp (54) ParallelForBackend Initializing TBB parallel backe>
nov 26 23:34:59 huawei-matebook-d14 fprintd[4854]: [ INFO:0@51,809] global /builddir/build/BUILD/opencv-4.6.0/modules/core/src/parallel/parallel.cpp (77) createParallelForAPI core(parallel): using backend: TBB (priority=1000)
nov 26 23:34:59 huawei-matebook-d14 fprintd[4854]: length: 32, offset: 59120314, flags: -1157496829
nov 26 23:35:00 huawei-matebook-d14 fprintd[4854]: Failed to detect minutiae: No keypoints found
nov 26 23:35:00 huawei-matebook-d14 fprintd[4854]: length: 32, offset: 59120314, flags: -1157496829
nov 26 23:35:01 huawei-matebook-d14 fprintd[4854]: Failed to detect minutiae: No keypoints found
nov 26 23:35:02 huawei-matebook-d14 fprintd[4854]: length: 32, offset: 59120314, flags: -1157496829
nov 26 23:35:03 huawei-matebook-d14 fprintd[4854]: Didn’t excpect a reply for command: 0x32

Bus 003 Device 004: ID 27c6:55b4 Shenzhen Goodix Technology Co.,Ltd. Fingerprint Reader

Using fedora 37. Followed the provided instructions and the fingerprint sensor works like a charm.

  • As expected, the gnome keyring needs to be unlocked separately, after logging in with the fingerprint for the first time.
  • As expected, dual booting Windows 11 replaces the fingerprint device firmware with the default one. So, the goodix-fp-dump process has to be done again, after booting back to linux. A workaround to this is to disable the fingerprint sensor in Windows device manager.

I didn’t know that copr automatically creates a discussion here. I just found it via the search results :grin:.

Your device is already supported by the closed-source libfprint-2-tod1-goodix drivers. There is no progress on an open source implemention for this device.

What error(s) do you get when running sudo fprintd-enroll {username} / sudo fprintd-verify {username}?

How do you use libfprint-2-tod1-goodix on Fedora? The procedure in the link mentioned in the OP, instructs changing the last line to the driver that covers the installed device. There is no driver to cover the one I have.

libfprint-2-tod1-goodix is a completely separate project by Dell/Goodix. There is no flashing required. I guess you have to manually drop the .so and .rules files into the appropriate location. Maybe there are some RPM packages available to make this easier.

this is the response of sudo fprintd-enroll gdramis:

Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan
Enroll result: enroll-retry-scan

and this is the response of sudo fprintd-verify gdramis command:

Using device /net/reactivated/Fprint/Device/0
ListEnrolledFingers failed: GDBus.Error:net.reactivated.Fprint.Error.NoEnrolledPrints: Failed to discover prints

Hey @d-k-bo !

Could you make a build based on libfprint 1.94.5 ?
This is the libfprint version on Fedora 38 as of now and it gets higher priority when installing through dnf, compared to your build (which is based on 1.94.4).

Also, while trying to install the specific package on Fedora 38, I get the following:

$ dnf install libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1

Problem: conflicting requests

  • nothing provides libopencv_core.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
  • nothing provides libopencv_features2d.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
  • nothing provides libopencv_stitching.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
    (try to add ‘–skip-broken’ to skip uninstallable packages)

Why do we get these opencv dependencies? They are not required when installing the normal libfprint package.

I’ll look into it!

These Goodix sensors require a new fingerprint matching algorithm which depends on OpenCV.

Unfortunately, it looks to me like this branch can’t be simply rebased to the latest version, so this will require manual work and I don’t know yet when and if I will be able to do it.

If you have a 27c6:5510 sensor, you should try to use the RPM that can be downloaded as a part of deb-rpm-arch-packages.zip at Actions · goodix-fp-linux-dev/libfprint · GitHub.

I see, it’s okay! Thanks for the quick reply!

I installed opencv or opencv-core and I get the same error:

$ dnf install libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1
Last metadata expiration check: 4:21:46 ago on Wed 15 Mar 2023 18:06:14 CET.
Error: 
 Problem: conflicting requests
  - nothing provides libopencv_core.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
  - nothing provides libopencv_features2d.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
  - nothing provides libopencv_stitching.so.406()(64bit) needed by libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64
(try to add '--skip-broken' to skip uninstallable packages)

I don’t know if this depends on that I use Fedora 38 which is beta right now. Anyway, I think I 'll wait for a while and we will see how things turn out.

By the way, I use a 27c6:55b4.

Edit:

I also tried the following:

$ dnf install libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1 --releasever=37
Error: 
 Problem: package libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64 requires libopencv_core.so.406()(64bit), but none of the providers can be installed
  - package libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64 requires libopencv_features2d.so.406()(64bit), but none of the providers can be installed
  - package libfprint-1.94.4.goodixtls.0.0.git.786.9dabd120-1.x86_64 requires libopencv_stitching.so.406()(64bit), but none of the providers can be installed
  - package opencv-core-4.6.0-7.fc37.x86_64 requires libgdal.so.31()(64bit), but none of the providers can be installed
  - package gdal-libs-3.5.2-1.fc37.x86_64 requires libspatialite.so.7()(64bit), but none of the providers can be installed
  - package libspatialite-5.0.1-15.fc37.x86_64 requires libminizip.so.3.0()(64bit), but none of the providers can be installed
  - installed package minizip-ng-3.0.7-3.fc38.x86_64 obsoletes minizip < 3.0.3 provided by minizip-3.0.2-7.fc37.x86_64
  - conflicting requests
  - problem with installed package minizip-ng-3.0.7-3.fc38.x86_64
(try to add '--skip-broken' to skip uninstallable packages)

So it seems like when using the release version 37 it recognises that it needs opencv-core but then fails because of other packages’ incompatibilities. Okay, so I thinnk that either there is something weird with the fedora 38 goodixtls libfprint package in this copr or with opencv/opencv-core in fedora 38.

Hey again @d-k-bo !

So, it seems like 1.94.4.goodixtls.0.0.git.786.9dabd120-1 looks for a specific version of opencv libraries

libopencv_core.so.406
libopencv_features2d.so.406
libopencv_stitching.so.406

which are provided by an older version of opencv (which is present in Fedora 37 and not in Fedora 38).

On Fedora 38, the version of opencv libraries provided is bumped from 406 to 407.

$ dnf repoquery -l opencv-core | grep -i opencv_core
Last metadata expiration check: 0:36:18 ago on Mon 20 Mar 2023 10:49:08 CET.
/usr/lib64/libopencv_core.so.4.7.0
/usr/lib64/libopencv_core.so.407
/usr/lib/libopencv_core.so.4.7.0
/usr/lib/libopencv_core.so.407

So, could we possibly rebuild the same version of libfprint for our goodix sensors but bump the dependencies, so that it is going to be compatible with Fedora 38?

I just triggered a rebuild and it used opencv-4.7.0-2.fc38.x86_64.rpm as a dependency, so it should work (if you manage to use it despite the outdated libfprint verion).

Awesome. This solved the installation issues.

I checked immediately with fprintd-verify and all my old fingeprints were there and could be verified.

However, the Gnome gui could not detect the fingerprint functionality, even though I rebooted the device. This was solved by doing:

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

Now fingerprint authentication works with Gnome log in and in terminal in Fedora 38. :slight_smile:

Note that dnf is going to insist on installing libfprint version 1.94.5 from the main fedora repo.
This can be bypassed by blacklisting libfprint only for this repo.

Add this:

[fedora]

exclude=libfprint

to /etc/yum.repos.d/fedora.repo. Then do dnf list libfprint to verify that libfprint is now provided by this copr.

Hey,

apparently your package is not longer working for Goodix 227c6:5110.

I am running Fedora 39 (latest updates installed) and I am trying to use the fingerprint reader in my Huawei MateBook 14 AMD from 2020.

Trying your package from copr result in following issue:
Print out from “journalctl -xe” when running " fprintd-enroll " :

Jan 07 17:21:33 kernel: usb 1-4: usbfs: process 55122 (fprintd) did not claim interface 1 before use
Jan 07 17:21:33 fprintd[55122]: length: 32, offset: 59120314, flags: -1157496829
Jan 07 17:21:34 fprintd[55122]: Failed to detect minutiae: No minutiae found
Jan 07 17:21:35 fprintd[55122]: length: 32, offset: 59120314, flags: -1157496829
Jan 07 17:21:36 fprintd[55122]: Failed to detect minutiae: No minutiae found
Jan 07 17:21:36 fprintd[55122]: length: 32, offset: 59120314, flags: -1157496829
Jan 07 17:21:37 fprintd[55122]: Failed to detect minutiae: No minutiae found
Jan 07 17:21:37 fprintd[55122]: length: 32, offset: 59120314, flags: -1157496829

Using “goodix-fp-dump” to flash the device works and produces a valid image.

Only thing I could think of, is that something in opencv changed?
Current latest version and installed is:

Name : opencv
Version : 4.8.1
Release : 1.fc39
Architektur : i686
Größe : 116 k
Quelle : opencv-4.8.1-1.fc39.src.rpm

Basically I am following up with the same issue mkswap reported.

Would be amazing to get it working, thx in advance :slight_smile:

My device is not supported unfortunately
Bus 003 Device 004: ID 27c6:55a2 Shenzhen Goodix Technology Co.,Ltd.

Hey @d-k-bo ! I know it may be a little too early, but could you try to build also for Fedora 40? :slight_smile: