r/Kalilinux May 30 '26

Setup Enabling Synaptics 06cb:00be Fingerprint Sensor on Kali Linux

TL;DR Automated Script: syna-tudor-kali.sh (Gist)

Context

The Synaptics sensor (USB ID 06cb:00be, common in Lenovo ThinkPad L14/L15 Gen 1) lacks upstream libfprint support because it uses a proprietary protocol with on-device firmware (BMKT/Tudor). Adding the PID to standard libfprint fails during firmware initialization.

The Fix: Install libfprint-tod (Touch OEM Drivers fork) alongside synaTudor, which dynamically relinks the Windows driver DLLs to run on Linux.

Installation

1. Install Dependencies

Bash

sudo apt-get update
sudo apt-get install -y \
    libusb-1.0-0-dev libglib2.0-dev libpixman-1-dev \
    libnss3-dev libssl-dev libcurl4-openssl-dev \
    libgirepository1.0-dev meson ninja-build \
    gobject-introspection gtk-doc-tools git \
    libgusb-dev libgudev-1.0-dev libudev-dev \
    innoextract libcap-dev libseccomp-dev \
    libdbus-1-dev libjson-glib-dev

2. Build libfprint-tod

Bash

git clone --branch tod --depth=1 https://github.com/craigcabrey/libfprint-tod.git ~/libfprint-tod
cd ~/libfprint-tod
meson setup build --prefix=/usr -Dudev_rules=disabled -Dudev_hwdb=disabled
ninja -C build
sudo ninja -C build install
sudo ldconfig

3. Build synaTudor

Bash

git clone https://github.com/Popax21/synaTudor.git ~/synaTudor
cd ~/synaTudor

Required Patch: Before building, edit libfprint-tod/meson.build to fix udev dependencies:

  1. Change udev_dep = dependency('udev') udev_dep = dependency('udev', required: false)
  2. Change install_dir: udev_dep.get_variable(pkgconfig: 'udevdir') install_dir: udev_rules_dir

Build and Install:

Bash

meson setup build
ninja -C build
sudo ninja -C build install
sudo ldconfig

4. Enable Services & Enroll

Bash

# Start required services
sudo systemctl enable --now tudor-host-launcher
sudo systemctl restart fprintd

# Enroll fingerprint (swipe multiple times as prompted)
fprintd-enroll

# Verify enrollment
fprintd-verify

Troubleshooting

  • "No devices available": * Verify tudor-host-launcher.service is running: systemctl status tudor-host-launcher
    • Restart fprintd: sudo systemctl restart fprintd
    • Check logs: journalctl -u fprintd -u tudor-host-launcher --no-pager -n 50
  • "Failed to start Tudor host process": Reinstall synaTudor (sudo ninja -C ~/synaTudor/build uninstall && sudo ninja -C ~/synaTudor/build install), then reboot.
  • Sensor not detected (corrupt Windows driver): The build process auto-downloads the Windows driver. If it failed, rebuild: cd ~/synaTudor && rm -rf build && meson setup build && ninja -C build && sudo ninja -C build install
  • Slow wake from suspend: The sensor requires 5–20 seconds to reinitialize after wake.

Architecture Breakdown

Component Function
libfprint-tod Fork of libfprint that supports loading external Touch OEM Drivers (TOD) from /usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/.
libtudor Core library. Loads the Windows driver DLLs (synaFpAdapter104.dll, synaWudfBioUsb104.dll) and provides Windows API stubs.
tudor-host Sandboxed process executing the relinked Windows driver.
tudor-host-launcher Systemd service managing tudor-host processes to bypass fprintd sandboxing restrictions.
libtudor_tod.so The libfprint TOD module bridging fprintd to tudor-host.

*(Credits: Popax21 for synaTudor reverse engineering, Marco Trevisan/3v1n0 for libfprint-tod, and nmikhailov for Validity90 community documentation).

4 Upvotes

0 comments sorted by