Automated install scripts for Elan fingerprint readers not natively supported on Linux.
Tested on a LG Gram 17 2025 with sensor 04f3:0ca2 (ELAN:ARM-M4).
The version of libfprint available in official repositories does not support all recent Elan sensors. These scripts compile and install the community branch elanmoc2 of libfprint, and automatically inject your sensor ID into the source code if needed.
- sudo privileges
- Internet connection
- A supported distribution (see Compatibility)
Clone the repository:
git clone https://github.com/navycrow/elan-fingerprint-linux.git
cd elan-fingerprint-linuxThen run the script for your distribution:
chmod +x debian-install.sh
./debian-install.shchmod +x fedora-install.sh
./fedora-install.shBazzite uses an immutable filesystem, so the install runs in two passes:
Pass 1 — layers fprintd via rpm-ostree, then prompts for a reboot:
chmod +x bazzite-install.sh
./bazzite-install.shAfter the reboot, run the script again for Pass 2 — compiles the driver inside a Distrobox container and enrolls your fingerprint:
./bazzite-install.shEach script handles everything:
- Automatically detect your Elan sensor
- Install build dependencies
- Clone and compile
libfprint(elanmoc2branch) - Add your sensor ID to the driver if missing
- Install and configure
fprintd - Enable PAM authentication
- Launch fingerprint enrollment
Enroll a finger:
fprintd-enroll -f right-index-fingerAvailable fingers: right-index-finger, right-middle-finger, left-index-finger, left-middle-finger, etc.
List enrolled fingerprints:
fprintd-list $USERDelete all fingerprints:
fprintd-delete $USERRe-enroll (if a previous enrollment exists):
fprintd-delete $USER
fprintd-enroll -f right-index-fingerManage via GUI:
gnome-control-center users→ "Fingerprint Login" section
- Fingerprint authentication does not work on the GDM login screen (known Linux limitation)
- Works for:
sudo, screen unlock, in-session authentication - Bazzite: the compiled library is installed to
/usr/local/lib64/. This path survives updates but may need to be re-registered after a majorrpm-ostreerebase (re-run the script from pass 2)
If after installation you can no longer log in (password rejected), see RECOVERY.md.
Fedora only: If enrollment fails with No devices available, the library path may not be registered. The script handles this automatically, but if it persists:
echo '/usr/local/lib64' | sudo tee /etc/ld.so.conf.d/local-lib64.conf
sudo ldconfig
sudo systemctl restart fprintdBazzite: If enrollment fails with EnrollStart failed: PrintsNotDeletedFromDevice, a previous enrollment is stored on the chip. Delete it first:
fprintd-delete $USER
fprintd-enroll -f right-index-finger| Distro | Script | Tested |
|---|---|---|
| Ubuntu 24+ | debian-install.sh |
✅ |
| Debian 12+ | debian-install.sh |
|
| Linux Mint 22+ | debian-install.sh |
✅ |
| Fedora 43+ | fedora-install.sh |
✅ |
| Bazzite (latest) | bazzite-install.sh |
✅ |
| Arch | — | ❌ (coming soon) |
If you have a different Elan sensor and the script worked for you, open an issue or a PR with your machine model and PID (lsusb).
MIT