Please see the Goodix Linux Development Discord for more information and help if you need it.
Tested on Arch and Manjaro. If you don't have access to the AUR, it's still possible to install this, you'll just need to build it by hand. Join the Discord if you need help.
To download this repo: git clone --recurse-submodules https://github.com/knauth/goodix-521d-explanation.git
Follow this guide at your own risk. This software is experimental and not guaranteed to do anything. It might break stuff; I'm not responsible for that. Ensure you understand every command you run on your system before you execute it. Don't use this in secure situations or as your only authentication method.
You'll need all of the following things, which should be in this git repo:
- A simple C program to reset the reader
- The goodix-fp-dump folder provided by the good people at Goodix Linux Development Discord, with some modifications by infinytum
We need to flash the firmware of the sensor with an earlier version. Enter the goodix-fp-dump
directory and run sudo python run_521d.py
to flash the firmware. It might fail with a timeout error. In this case, go to the usbreset directory and do the following:
- Compile the code with
gcc usbreset.c -o usbreset.out
- Run
lsusb | grep FingerPrint
to find the usb address of the reader. Look specifically at the "bus" and "device" fields. - Run
sudo ./usbreset.out /dev/bus/usb/<bus>/<device>
, substituting <bus> and <device> with the values from the last command, for examplesudo ./usbreset.out /dev/bus/usb/003/002
Then run the Python code again. Eventually it should flash successfully. Now we can move on to step 2.
Install the latest version of fprintd by running sudo pacman -S fprintd
.
The final step! Install the AUR package libfprint-goodix-521d
.
Now, finally, run systemctl restart fprintd
to restart the fingerprint service. You should be done! Use fprintd-enroll
to enroll a new finger.
For getting this working for authentication, checkout this Arch Wiki page.
As of version 5.24, KDE Plasma supports fingerprint authentication natively using libfprint as a backend. This should be painless once libfprint itself is configured. The setup is located in Settings > Users.
Thanks to everyone who got this code working, especially Infinytum (NilaTheDragon on Discord) who did amazing work to complete the driver and helped me get it installed as well :).
Windows is kinda like those seagulls from Finding Nemo when it comes to hardware. It aggressively installs and updates drivers without user intervention. For this reason, you may find your reader breaking after using Windows. To fix this issue you'll need to muddle with the config a bit before you can reflash. Here's how:
- Stop the fprintd service:
sudo systemctl stop fprintd
- Reset the reader (follow the instructions above)
- Flash the firmware (instructions above)
- Start the service again:
sudo systemctl start fprintd
And you should be good to go.