Установка
Итак, у нас на руках есть Dell 5411 с датчиком отпечатка пальца и система Manjaro с ядром Linux 6.6.32-1-MANJARO. Инструкция подходит и для других ноутбуков Dell/Thinkpad с датчиком Broadcom.
Проверим, какой датчик у нас стоит:
1 2 3 4 5 6 7 |
$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0a5c:5843 Broadcom Corp. 58200 Bus 001 Device 003: ID 0c45:6a09 Microdia Integrated_Webcam_HD Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub |
У нас установлен Broadcom 58200, с idVendor = 0a5c, idProduct = 5843. Обратившись к сайту https://linux-hardware.org/?id=usb:0a5c-5843 узнаем, что поддержка есть, но не без танцев с бубном
В обычной ситуации, мы бы установили fprintd (отвечает за работу с датчиком отпечатка пальца и передачу его в систему). Он в свою очередь в качестве зависимости устанавливает libfprint.
Но если мы сейчас так сделаем, то получим конфликт со следующим пакетом. Поэтому, в данной ситуации, нам нужно сначала установить libfprint-2-tod1-broadcom
1 |
$ pamac build libfprint-2-tod1-broadcom |
В свою очередь этот пакет установит также libfprint-tod (форк libfprint для работы с сенсорными датчикам отпечатка пальца) и libfprint. Пакет libfprint-2-tod1-broadcom – это проприетарные драйвера Dell для датчиков Broadcom из репозитория ubuntu.
Не всегда они вовремя обновляются, поэтому скачиваем актуальные драйвера (Dell ControlVault3 Driver and Firmware) с сайта Dell для вашего устройства. В моем случае это 5.14.10.10, A26 (Dell-ControlVault3-Driver-and-Firmware_8CHRT_WIN_5.14.10.10_A26_01.EXE). Открываем любым архиватором и распаковываем. В моем случае это File Roller.
По пути production/Windows10-x64/18356/Drivers/cv/firmware лежат драйвера для вашего устройства. Копируем их в /var/lib/fprint/fw
1 |
# cp /home/user/production/Windows10-x64/18356/Drivers/cv/firmware/* /var/lib/fprint/fw |
Перед следующим шагом рекомендую открыть journalctl и проконтроллировать процесс обновления прошивки
1 |
# journalctl -f |
Учитывайте, что обновление прошивки может занимать несколько минут. Если выполнить перезапуск демона fprint, можно получить ошибку таймаута. Пугаться не стоит, нужно подождать и проверить, что отображается в журнале. В моем случае:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
янв 01 01:50:49 user systemd[1]: Starting Fingerprint Authentication Daemon... янв 01 01:50:49 user fprintd[24831]: In cvif_IsUshThere(), cv_get_ush_ver() status: (0x0) янв 01 01:50:49 user fprintd[24831]: Control Vault getting chip type янв 01 01:50:49 user fprintd[24831]: Citadel A0 CID7 Chip Found.... янв 01 01:50:49 user fprintd[24831]: Current AAI Version = 5.12.18.0 янв 01 01:50:49 user fprintd[24831]: Current SBI Version = 181 янв 01 01:50:49 user fprintd[24831]: AAI version available for upgrade = 5.14.3.0 янв 01 01:50:49 user fprintd[24831]: SBI version available for upgrade = 202 янв 01 01:50:49 user fprintd[24831]: Updating ControlVault firmware from 5.12.18.0 to 5.14.3.0 янв 01 01:50:49 user fprintd[24831]: Event: FwUpgradeStarted янв 01 01:50:49 user fprintd[24831]: Upgrade the SBI from 181 to 202, first clear SCD янв 01 01:50:49 user fprintd[24831]: Writing /var/lib/fprint/fw/bcm_cv_clearscd.bin to flash янв 01 01:50:49 user fprintd[24831]: cv_flash_update() successful янв 01 01:50:49 user fprintd[24831]: Reset to SBI to update the SBI.... янв 01 01:50:52 user fprintd[24831]: In cvif_IsUshThere(), cv_get_ush_ver() status: (0x13) янв 01 01:50:52 user kernel: usb 1-10: USB disconnect, device number 7 янв 01 01:50:53 user kernel: usb 1-10: new high-speed USB device number 8 using xhci_hcd янв 01 01:50:53 user kernel: usb 1-10: New USB device found, idVendor=0a5c, idProduct=5841, bcdDevice= 1.02 янв 01 01:50:53 user kernel: usb 1-10: New USB device strings: Mfr=1, Product=2, SerialNumber=3 янв 01 01:50:53 user kernel: usb 1-10: Product: 58200 янв 01 01:50:53 user kernel: usb 1-10: Manufacturer: Broadcom Corp янв 01 01:50:53 user kernel: usb 1-10: SerialNumber: 0123456789ABCD янв 01 01:50:53 user mtp-probe[24874]: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-10" янв 01 01:50:53 user mtp-probe[24874]: bus: 1, device: 8 was not an MTP device янв 01 01:50:53 user mtp-probe[24888]: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-10" янв 01 01:50:53 user mtp-probe[24888]: bus: 1, device: 8 was not an MTP device янв 01 01:50:53 user fprintd[24831]: In cvif_IsUshThere(), cv_get_ush_ver() status: (0x0) янв 01 01:50:53 user fprintd[24831]: Found ControlVault Chip Type: CITADEL A0 CID7 янв 01 01:50:53 user fprintd[24831]: Event: FwUpgradeInProgress 1 янв 01 01:50:53 user fprintd[24831]: Going to update SBI (bcmsbiCitadelA0_7.otp) янв 01 01:50:53 user fprintd[24831]: Writing /var/lib/fprint/fw/bcmsbiCitadelA0_7.otp to flash янв 01 01:50:58 user fprintd[24831]: cv_flash_update() successful янв 01 01:50:58 user fprintd[24831]: BCM Update attempt 1 янв 01 01:50:58 user fprintd[24831]: Event: FwUpgradeInProgress 2 янв 01 01:50:58 user fprintd[24831]: Going to clear SCD янв 01 01:50:58 user fprintd[24831]: Writing /var/lib/fprint/fw/bcm_cv_clearscd.bin to flash янв 01 01:50:49 user fprintd[23772]: More fingers needed янв 01 01:50:49 user fprintd[23772]: Capture Initiated, Please place your finger now on the sensor now янв 01 01:50:49 user fprintd[23772]: The interrupt processed data 3 янв 01 01:50:49 user fprintd[23772]: Update enrollment is successful янв 01 01:50:49 user fprintd[23772]: Enrollment procedure successfully completed янв 01 01:50:49 user fprintd[23772]: call cv_fingerprint_commit_enrollment янв 01 01:50:49 user fprintd[23772]: Capture Initiated, Please place your finger now on the sensor now |
Далее, необходимо установить fprintd
1 |
# pacman -S fprintd |
После установки, проверим видит ли fprint наше устройство
1 |
$ fprintd-list user |
И добавим наш отпечаток пальца
1 |
$ fprintd-enroll |
На этом установка закончена. Теперь средствами системы можно включить\выключить вход по отпечатку пальца, и вход в sudo
Возможные проблемы
Проблема 1. ERROR: A failure occurred in package()
До конца не понял причину ее появления, решил просто пошагово выполнить то, что лежит в PKGBUILD. Для этого склонировал репозиторий с AUR. Запустил makepkg, а затем из директории src скопировал нужные файлы
1 2 3 4 5 6 7 |
$ git clone https://aur.archlinux.org/libfprint-2-tod1-broadcom.git $ makepkg $ cd src/libfprint-2-tod1-broadcom # cp usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so /usr/lib/libfprint-2/tod-1/ # cp lib/udev/rules.d/60-libfprint-2-device-broadcom.rules /usr/lib/udev/rules.d/ # mkdir -p /var/lib/fprint/fw/ # cp var/lib/fprint/fw/* /var/lib/fprint/fw/ |
Проблема 2. После спящего режима датчик отпечатка пальца не работает, исчезает из lsusb
Проблема связана с тем, что датчик для сна отключился и не запустился. Первое решение – перевести питание в режим auto, что делается в пакете libfprint-2-tod1-broadcom.
1 2 3 |
# cat /usr/lib/udev/rules.d/60-libfprint-2-device-broadcom.rules SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="5842", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto" SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="5842", ENV{LIBFPRINT_DRIVER}="Broadcom Sensors" |
Проверьте, что ваше устройство там есть. Если нет, добавьте сами. idVendor:idProduct можно найти, если выполнить lsusb. Чтобы устройство вновь появилось, выключите и включите ноутбук (только холодный запуск, перезагрузка не поможет)
В моем случае код устройства почему-то изменился на 5841, поэтому я добавил строчку с ним
1 2 3 |
# nano /usr/lib/udev/rules.d/60-libfprint-2-device-broadcom.rules SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="5841", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto" SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="5841", ENV{LIBFPRINT_DRIVER}="Broadcom Sensors" |
При желании можно отключить режим сна для устройства
Проблема 3. Во время обновления прошивки устройства появляется segfault (fprintd.service: Main process exited, code=dumped)
Решилось тем, что я полностью удалил fprintd/libfprint и установил заново. Интернет подсказывает, что библиотека используемая в libfprint-2-tod1-broadcom не подошла к текущей версии libc
Проблема 4. FwUpgradeError. Check Firmware Files or CID used or Hardware etc.
Случилась, когда не все файлы были скопированы по пути /var/lib/fprint/fw/
Проблема 5. Impossible to verify: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No devices available
Скорее всего устройство либо выключено, либо не хватает библиотеки ibfprint-2-tod-1-broadcom.so. Fprintd не видит устройство
Отдельная благодарность этому человеку, за статью с описанием как обновить прошивку
Теги: Broadcom fingerprint reader 0a5c:5843 driver, Dell ControlVault broadcom, bcmCitadel_7.otp, 0a5c disappear after deep sleep, usb fingerprint disappear after deep sleep, Fingerprint reader not detected after suspend