Обновить

Запуск USB-сканера отпечатков пальцев Chipsailing CS9711 на Linux.

Эти сканеры продаются на маркетплейсах по цене 1-2 т.р. Команда lsusb опознаёт их как
ID 2541:0236 Chipsailing CS9711Fingprint

На Arch драйвер должен ставиться из коробки, рецепт для Fedora есть тут, рецепт для Ubuntu приведен ниже.

TL;DR: Суть - аккуратно подменить системную библиотеку libfprint-2 версией отсюда.

1. Скачать и скомпилировать форк libfprint-2 с поддержкой сканера

git clone https://github.com/archeYR/libfprint-CS9711
cd libfprint-CS9711
meson setup build

Последняя команда может выдать ошибку, не найдя в системе пакетов с нужными библиотеками (libgusb-dev, libopencv-dev и т.п.). Надо их поставить и выполнить её снова.

Скомпилировать

ninja -C build

Для проверки работы позапускать примеры

cd build/examples
sudo ./enroll
sudo ./verify

Установить библиотеку, если всё хорошо (обратите внимание на комментарии к посту)

cd ..              # предполагаю, что из build/examples никуда не уходили
sudo ninja install

В итоге должен появиться файл /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 (и еще другие, но они не важны)

2. Установить пакет с демоном распознавания по отпечатку пальца

sudo apt install fprintd

Эта команда установит также пакеты с libfprint-2 из системных репозиториев, без поддержки нашего сканера, т.к. fprintd от них зависит.

3. Подменяем библиотеку libfprint-2

Варианты: (1) сказать ld.so загрузить нужную библиотеку перед запуском fprintd, (2) создать в /usr/lib/x86_64-linux-gnu симлинк на правильный файл. У каждого есть плюсы и минусы, что выбрать, решаете Вы.

3.1. Загрузка нужной libfprint-2 в ld.so

sudo systemctl edit fprintd

В открывшемся окне редактора добавить две строки (там сказано, куда)

[Service]
Environment="LD_PRELOAD=/usr/local/lib/x86_64-linux-gnu/libfprint-2.so"

... сохранить файл и закрыть редактор.

3.2. Установка правильной ссылки (ld.so не трогаем)

sudo update-alternatives --install\
  /usr/lib/x86_64-linux-gnu/libfprint-2.so.2\
  libfprint\
  /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 100

После любой из манипуляций надо перезапустить fprintd и проверить, что он не выдаёт ошибок:

sudo systemctl restart fprintd
sudo systemctl status fprintd

Ожидаемый вывод:

● fprintd.service - Fingerprint Authentication Daemon
     Loaded: loaded (/usr/lib/systemd/system/fprintd.service; static)
    Drop-In: /etc/systemd/system/fprintd.service.d
             └─override.conf
     Active: active (running) since Tue 2026-02-24 16:02:45 MSK; 1s ago
       Docs: man:fprintd(1)
   Main PID: 61913 (fprintd)
      Tasks: 6 (limit: 37635)
     Memory: 3.3M (peak: 4.5M)
        CPU: 93ms
     CGroup: /system.slice/fprintd.service
             └─61913 /usr/libexec/fprintd

фев 24 16:02:45 machine-name systemd[1]: Starting fprintd.service - Fingerprint Authentication Daemon...
фев 24 16:02:45 machine-name systemd[1]: Started fprintd.service - Fingerprint Authentication Daemon.

4. Зарегистрировать пальцы командой fprintd-enroll

По умолчанию регистрируется правый указательный, остальное написано в man fprintd-enroll

5. Включить вход по отпечатку

sudo pam-auth-update

... поставить звёздочку рядом с Fingerprint Authentication и нажать Ok.

Проверено на Kubuntu 24.04.4 LTS.

Ссылки по теме:
https://github.com/archeYR/libfprint-CS9711
https://man7.org/linux/man-pages/man8/ld.so.8.html
https://manpages.ubuntu.com/manpages/noble/man5/pam.conf.5.html

Теги:
+1
Комментарии6

Публикации