Setting Up Goodix Fingerprint Reader on Fedora 35
Let’s cut to the chase: the Dell XPS 13 9300 is one of the best Linux laptops available!
However, Dell’s decision to incorporate a fingerprint scanner from Goodix, a company known for limited support for non-Windows platforms and proprietary code, poses challenges. This post will help you navigate the installation of the Goodix sensor on Fedora 35.
While some reverse-engineering work has been done on some other Goodix sensors, it doesn’t include the 533c variant present in the XPS 9300. For more insights and community support, consider visiting the dedicated Discord channel.
This guide is an updated version of the instructions provided by Cher’s Tech Blog, with a few modifications for Fedora 35.
Prerequisites
Make sure you have installed systemfprintd
and libfrint
:
sudo yum install fprintd fprintd-pam
Also, ensure the necessary dependencies are in place:
sudo 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 ninja-build cairo cairo-devel cmake libgudev1-devel valgrind-devel
sudo yum groupinstall 'Development Tools'
Installing the Goodix Driver
Clone and switch to the right version of the libfprint
repository:
git clone https://gitlab.freedesktop.org/3v1n0/libfprint.git
cd libfprint/
git checkout tags/v1.94.1+tod1
Build and install libfprint
:
meson builddir && cd builddir
meson compile
meson install
Replace the existing system’s libfprint
with our built version:
sudo cp libfprint/libfprint-2.so.2.0.0 /usr/lib64/
sudo cp libfprint/tod/libfprint-2-tod.so /usr/lib64/
sudo cp libfprint/tod/libfprint-2-tod.so.1 /usr/lib64/
Fetch and install the Goodix driver and udev rules:
wget http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-goodix/libfprint-2-tod1-goodix_0.0.6.orig.tar.gz
tar -xvf libfprint-2-tod1-goodix_0.0.6.orig.tar.gz
sudo mkdir -p /usr/lib/libfprint-2/tod-1/
sudo mkdir -p /usr/local/lib64/libfprint-2/tod-1/
sudo cp libfprint-2-tod1-goodix-0.0.6/usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so /usr/lib/libfprint-2/tod-1/
sudo ln -s /usr/lib/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so /usr/local/lib64/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so
sudo chmod 755 /usr/lib/libfprint-2/tod-1/libfprint-tod-goodix-53xc-0.0.6.so
sudo cp libfprint-2-tod1-goodix-0.0.6/lib/udev/rules.d/60-libfprint-2-tod1-goodix.rules /lib/udev/rules.d/
sudo mkdir -p /var/lib/fprint/goodix
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
sudo su
cat libfprint-2-tod1-goodix_0.0.4-0ubuntu1somerville1/libfprint-2-tod1-goodix/debian/modaliases >> /lib/modules/$(uname -r)/modules.alias
exit
sudo systemctl enable fprintd
sudo systemctl start fprintd
Finally, make sure dnf does not upgrade libfprint in the future.
This would otherwise replace again the version we just built.
Run:
sudo nano /etc/dnf/dnf.conf
And add:
exclude=libfprint*
With these steps complete, your Goodix fingerprint scanner should now be ready for use on Fedora 35.