Goodix Fingerprint Reader on Fedora Linux


Written by

My Dell XPS 9500 has a built in Goodix fingerprint reader, there are drivers for this in Windows but originally the Linux driver didn’t exist.

A driver for Ubuntu has now arrive but there is no Fedora support. The driver is a libfrpint-2-tod driver. Someone has ported the finger print driver into the Arch User Repo as libfprint-2-tod1-xps9300-bin and it reported to work. My work below is derived from both these sources.

The following is my attempt within Fedora Linux 32:

# Install default systemfprintd and libfrint
yum install fprintd fprintd-pam

# Build libfprint and libfprint-tod
git clone https://gitlab.freedesktop.org/3v1n0/libfprint.git
yum install -y gcc gcc-c++ glib glib-devel glibc glibc-devel glib2 glib2-devel libusb libusb-devel nss-devel pixman pixman-devel libX11 libX11-devel libXv libXv-devel gtk-doc libgusb libgusb-devel gobject-introspection gobject-introspection-devel
cd libfprint
git switch tod
meson builddir && cd builddir
meson compile
meson install

# Over write the system libfprint with our version
cp libfprint/libfprint-2.so.2.0.0 /usr/lib64/
cp libfprint/tod/libfprint-2-tod.so /usr/lib64/
cp libfprint/tod/libfprint-2-tod.so.1 /usr/lib64/

# Get the Goodix libfprint driver/udev rules
wget http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-goodix/libfprint-2-tod1-goodix_0.0.4-0ubuntu1somerville1.tar.gz
tar -xvf libfprint-2-tod1-goodix_0.0.4-0ubuntu1somerville1.tar.gz

# Move the libfprint driver to where we think it should go
mkdir -p /usr/lib/libfprint-2/tod-1/
cp libfprint-2-tod1-goodix/usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.4.so /usr/lib/libfprint-2/tod-1/
sudo chmod 755 /usr/lib/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.4.so
cp libfprint-2-tod1-goodix/lib/udev/rules.d/60-libfprint-2-tod1-goodix.rules /lib/udev/rules.d/

# Add some things into the module alias file
cat debian/modaliases >> /lib/modules/uname -r/modules.alias

If anyone knows where I’ve gone wrong, give me an email.