Last active
April 27, 2026 12:32
-
-
Save giannello/367b868618950e5687ef344d82d1e204 to your computer and use it in GitHub Desktop.
Install fprintd-tod with support for Broadcom readers on Debian testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env sh | |
| #################################################################### | |
| ### ____ _____ ____ ___ _ _ _ ___ _ _ _ __ __ ### | |
| ### | _ \| ____| __ )_ _| / \ | \ | | / _ \| \ | | | \ \ / / ### | |
| ### | | | | _| | _ \| | / _ \ | \| | | | | | \| | | \ V / ### | |
| ### | |_| | |___| |_) | | / ___ \| |\ | | |_| | |\ | |___| | ### | |
| ### |____/|_____|____/___/_/ \_\_| \_| \___/|_| \_|_____|_| ### | |
| #################################################################### | |
| ####### _ _ ___ _ _ ____ _ _ _ _ _____ _ _ ######## | |
| ####### | \ | |/ _ \ | | | | __ )| | | | \ | |_ _| | | | ######## | |
| ####### | \| | | | | | | | | _ \| | | | \| | | | | | | | ######## | |
| ####### | |\ | |_| | | |_| | |_) | |_| | |\ | | | | |_| | ######## | |
| ####### |_| \_|\___/ \___/|____/ \___/|_| \_| |_| \___/ ######## | |
| #################################################################### | |
| TEMPDIR=$(mktemp -d) | |
| # Install build dependencies | |
| sudo DEBIAN_FRONTEND=noninteractive apt -qq build-dep -y libfprint-2-2 | |
| # Clone the closed-source library and firmware | |
| cd "${TEMPDIR}" || exit | |
| git clone --depth=1 --branch ubuntu/latest git://git.launchpad.net/libfprint-2-tod1-broadcom | |
| cd libfprint-2-tod1-broadcom || exit | |
| sudo cp lib/udev/rules.d/60-libfprint-2-device-broadcom.rules /usr/lib/udev/rules.d/60-libfprint-2-device-broadcom.rules | |
| sudo chown -R root:root /usr/lib/udev/rules.d/60-libfprint-2-device-broadcom.rules | |
| sudo mkdir -p /usr/lib/x86_64-linux-gnu/libfprint-2/tod-1 | |
| sudo cp usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so /usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so | |
| sudo chown -R root:root /usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so | |
| sudo cp -r var/lib/fprint/fw /var/lib/fprint/ | |
| sudo chown -R root:root /var/lib/fprint/fw | |
| # Clone libfprint, switch to the correct tag, patch and build | |
| # LIBFPRINT_VERSION=$(dpkg-query --showformat='${Version}' --show fprintd | cut -d '-' -f 1) | |
| LIBFPRINT_VERSION=$(dpkg-query --showformat='${Version}' --show libfprint-2-2 | cut -d '-' -f 1 | cut -d ":" -f 2) | |
| cd "${TEMPDIR}" || exit | |
| git clone --branch v${LIBFPRINT_VERSION}+tod1 --depth=1 https://gitlab.freedesktop.org/3v1n0/libfprint.git | |
| cd "${TEMPDIR}"/libfprint || exit | |
| sed -e "/subdir('tests')/s/^/#/g" -i meson.build | |
| sed -e "/subdir('examples')/s/^/#/g" -i meson.build | |
| meson build --prefix=/usr | |
| cd build || exit | |
| meson compile | |
| sudo cp libfprint/tod/libfprint-2-tod.so.1 /usr/lib/x86_64-linux-gnu/libfprint-2-tod.so.1 | |
| sudo chown root:root /usr/lib/x86_64-linux-gnu/libfprint-2-tod.so.1 | |
| sudo ln -sf /usr/lib/x86_64-linux-gnu/libfprint-2-tod.so.1 /usr/lib/x86_64-linux-gnu/libfprint-2-tod.so | |
| sudo cp libfprint/libfprint-2.so.2 /usr/lib/x86_64-linux-gnu/ | |
| sudo chown root:root /usr/lib/x86_64-linux-gnu/libfprint-2.so.2 | |
| ## Remove file incorrectly copied in a previous revision of this gist | |
| sudo rm -f /usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod.so.1 | |
| cd "${TEMPDIR}" | |
| # Configure fprintd to not sleep | |
| sudo mkdir -p /etc/systemd/system/fprintd.service.d | |
| cat > override.conf <<EOF | |
| [Service] | |
| ExecStart= | |
| ExecStart=/usr/libexec/fprintd --no-timeout | |
| EOF | |
| sudo cp override.conf /etc/systemd/system/fprintd.service.d/override.conf | |
| sudo udevadm control --reload-rules | |
| sudo systemctl daemon-reload | |
| sudo systemctl restart fprintd | |
| rm -rf "${TEMPDIR}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just to add after some further testing, if I wait about 1 minute after starting enroll it seems to register my prints, so at least I know the sensor is physically working now, but I get a certain amount through the registration and then it locks up:
Checking the service logs it shows ongoing registration at the time but at the point of failure above I get one of two errors:
I have tried reinstalling the script/driver using ubuntu/jammy as suggested earlier in the thread, but that had the same exact outcome, so I have reinstalled again using the default ubuntu/latest.
I have also tried resetting my TPM chip in the BIOS as a post I found suggested that previously registered Windows Hello data, which is held in the reader's local memory, could be blocking registration in Linux - no dice. :(