Вопрос или проблема
У меня есть Acer Swift 3 (SF314-57) с Arch, который имеет датчик отпечатков пальцев 0570 LighTuning Technology Inc. EgisTec Touch Fingerprint Sensor. Поддержка этого устройства стала доступна в последнем выпуске libfprint (v1.92.1), поэтому я пытался заставить его работать.
Я установил пакет fprintd из официального репозитория Arch, однако, когда я пытаюсь зарегистрировать отпечаток пальца, он просто «зависает» с сообщением Enrolling right-index-finger finger
и мерцающим курсором, и никакие попытки сканирования моего отпечатка пальца не дают никакого указания на то, что что-то происходит.
Устройство замечено моей системой, и fprintd.service работает:
[sudo] пароль для mipy:
● fprintd.service - Демон аутентификации по отпечаткам пальцев
Загрузка: загружено (/usr/lib/systemd/system/fprintd.service; static)
Активен: активен (работает) с Вс 2021-08-08 16:04:25 AEST; прошло 3с
Документы: man:fprintd(1)
Основной PID: 7381 (fprintd)
Задачи: 6 (предел: 18803)
Память: 1.6M
CPU: 57ms
CGroup: /system.slice/fprintd.service
└─7381 /usr/lib/fprintd
Авг 08 16:04:24 ruby-swift314-57 systemd[1]: Запуск демона аутентификации по отпечаткам пальцев...
Авг 08 16:04:25 ruby-swift314-57 systemd[1]: Демон аутентификации по отпечаткам пальцев запущен.
Шина 004 Устройство 001: ID 1d6b:0003 Корпорация Linux Foundation 3.0 root hub
Шина 003 Устройство 003: ID 04f2:b5c5 Chicony Electronics Co., Ltd HD WebCam
Шина 003 Устройство 002: ID 1c7a:0570 LighTuning Technology Inc. EgisTec Touch Fingerprint Sensor
Шина 003 Устройство 004: ID 8087:0026 Intel Corp. AX201 Bluetooth
Шина 003 Устройство 001: ID 1d6b:0002 Корпорация Linux Foundation 2.0 root hub
Шина 002 Устройство 001: ID 1d6b:0003 Корпорация Linux Foundation 3.0 root hub
Шина 001 Устройство 001: ID 1d6b:0002 Корпорация Linux Foundation 2.0 root hub
Единственные ошибки, которые я получаю от journalctl -f -u fprintd.service
, это:
fprintd[6957]: Не удалось очистить память перед первой регистрацией: устройство не имеет памяти.
Я должен добавить, что на моем диске доступно примерно 50 ГБ памяти, так что проблема не в хранилище на диске – я предполагаю, что у самого устройства?
Когда я собираю libfprint из исходников, используя meson compile
, а затем meson test
, и пытаюсь зарегистрировать отпечаток, используя примеры, это показывает:
Эта программа зарегистрирует выбранный палец, безоговорочно перезаписав любой отпечаток, который был зарегистрирован ранее для того же пальца. Если вы хотите продолжить, нажмите Enter, иначе - Ctrl+C
Выберите палец для регистрации:
[0] левый большой
[1] левый указательный
[2] левый средний
[3] левый безымянный
[4] левый мизинец
[5] правый большой
[6] правый указательный
[7] правый средний
[8] правый безымянный
[9] правый мизинец
> 6
(process:5575): libfprint-context-DEBUG: 15:21:02.406: Драйвер не найден для USB устройства 1D6B:0003
(process:5575): libfprint-context-DEBUG: 15:21:02.406: Драйвер не найден для USB устройства 04F2:B5C5
(process:5575): libfprint-context-DEBUG: 15:21:02.407: Драйвер не найден для USB устройства 8087:0026
(process:5575): libfprint-context-DEBUG: 15:21:02.407: Драйвер не найден для USB устройства 1D6B:0002
(process:5575): libfprint-context-DEBUG: 15:21:02.407: Драйвер не найден для USB устройства 1D6B:0003
(process:5575): libfprint-context-DEBUG: 15:21:02.407: Драйвер не найден для USB устройства 1D6B:0002
Выбрано устройство 0 (Egis Technology Inc. (aka. LighTuning) 0570), захваченное драйвером egis0570
(process:6437): libfprint-image_device-DEBUG: 15:33:00.490: Открытие устройства изображения завершено
(process:6437): libfprint-device-DEBUG: 15:33:00.490: Устройство сообщило о завершении открытия
(process:6437): libfprint-device-DEBUG: 15:33:00.491: Завершение действия FPI_DEVICE_ACTION_OPEN в режиме ожидания!
Устройство открыто. Теперь можно зарегистрировать ваш палец.
Вам нужно будет успешно сканировать ваш правый указательный палец 5 раз, чтобы завершить процесс.
Сканируйте палец сейчас.
(process:6437): libfprint-image_device-DEBUG: 15:33:00.492: Активация устройства изображения
(process:6437): libfprint-image_device-DEBUG: 15:33:00.492: Внутреннее состояние устройства изображения меняется с FPI_IMAGE_DEVICE_STATE_INACTIVE на FPI_IMAGE_DEVICE_STATE_ACTIVATING
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 0
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 1
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-image_device-DEBUG: 15:33:00.492: Завершение активации устройства изображения
(process:6437): libfprint-image_device-DEBUG: 15:33:00.492: Внутреннее состояние устройства изображения меняется с FPI_IMAGE_DEVICE_STATE_ACTIVATING на FPI_IMAGE_DEVICE_STATE_IDLE
(process:6437): libfprint-image_device-DEBUG: 15:33:00.492: Внутреннее состояние устройства изображения меняется с FPI_IMAGE_DEVICE_STATE_IDLE на FPI_IMAGE_DEVICE_STATE_AWAIT_FINGER_ON
(process:6437): libfprint-device-DEBUG: 15:33:00.492: Устройство сообщило об изменении статуса пальца: FP_FINGER_STATUS_NEEDED
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.492: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.493: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.494: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.495: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.496: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.497: [egis0570] SM_STATES_NUM вход в состояние 4
(process:6437): libfprint-image_device-DEBUG: 15:33:00.564: Устройство изображения сообщило о статусе пальца: выключен
(process:6437): libfprint-SSM-DEBUG: 15:33:00.564: [egis0570] SM_STATES_NUM вход в состояние 5
(process:6437): libfprint-SSM-DEBUG: 15:33:00.564: [egis0570] SM_STATES_NUM вход в состояние 1
(process:6437): libfprint-SSM-DEBUG: 15:33:00.564: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.564: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.564: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 2
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 3
(process:6437): libfprint-SSM-DEBUG: 15:33:00.565: [egis0570] SM_STATES_NUM вход в состояние 4
(process:6437): libfprint-egis0570-DEBUG: 15:33:00.632: Статус пальца (номер снимка, усредненное значение): 0 , 0
(process:6437): libfprint-egis0570-DEBUG: 15:33:00.632: Статус пальца (номер снимка, усредненное значение): 1 , 0
(process:6437): libfprint-egis0570-DEBUG: 15:33:00.632: Статус пальца (номер снимка, усредненное значение): 2 , 0
(process:6437): libfprint-egis0570-DEBUG: 15:33:00.632: Статус пальца (номер снимка, усредненное значение): 3 , 0
(process:6437): libfprint-egis0570-DEBUG: 15:33:00.632: Статус пальца (номер снимка, усредненное значение): 4 , 0
(process:6437): libfprint-image_device-DEBUG: 15:33:00.632: Устройство изображения сообщило о статусе пальца: выключен
И просто продолжает перебирать “Статус пальца” и “SM_STATES_NUM”, пока я не остановлю его.
Когда я пытаюсь использовать manage-prints из примеров, я получаю:
Эта программа сообщит о отпечатках, сохраненных в устройстве
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 1D6B:0003
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 04F2:B5C5
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 8087:0026
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 1D6B:0002
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 1D6B:0003
(process:7187): libfprint-context-DEBUG: 15:56:24.549: Драйвер не найден для USB устройства 1D6B:0002
Выбрано устройство 0 (Egis Technology Inc. (aka. LighTuning) 0570), захваченное драйвером egis0570
(process:7187): libfprint-image_device-DEBUG: 15:56:24.690: Открытие устройства изображения завершено
(process:7187): libfprint-device-DEBUG: 15:56:24.691: Устройство сообщило о завершении открытия
(process:7187): libfprint-device-DEBUG: 15:56:24.691: Завершение действия FPI_DEVICE_ACTION_OPEN в режиме ожидания!
(process:7187): libfprint-WARNING **: 15:56:24.691: Устройство Egis Technology Inc. (aka. LighTuning) 0570 не поддерживает память
(process:7187): libfprint-device-WARNING **: 15:56:24.691: Пользователь разрушил открытое устройство! Не корректная очистка!
libusb: предупреждение [libusb_exit] приложение оставило некоторые устройства открытыми
Когда я пробую запустить fwupdmgr update
, я просто получаю:
Устройства без доступных обновлений прошивки:
• Системная прошивка
• Прошивка UEFI
• UEFI dbx
• WDC PC SN520 SDAPNUW-512G-1014
Нет обновляемых устройств
Кто-нибудь знает, что происходит? Мне кажется, что я упустил что-то очевидное, но я не могу понять что.
Ответ или решение
Прежде всего, давайте разберемся с теоретической частью проблемы. У вас есть устройство Acer Swift 3 с датчиком отпечатков пальцев EgisTec 0570, и вы пытались настроить его работу под управлением Arch Linux с использованием последних версий libfprint и fprintd. Теоретически, данное устройство должно поддерживаться, однако вы столкнулись с проблемами на этапе регистрации отпечатка пальца: процедура зависает, демон fprintd запускается, но регистрации не происходит. Одна из ошибок, которую вы наблюдаете — "Failed to clear storage before first enrollment: Device has no storage."
Теперь перейдем к анализу примеров, которые вы предоставили. Вы описали, как fprintd и libfprint управляют устройством. В списке USB-устройств ваше устройство распознается системой, но процесс регистрации отпечатка не завершает успешно. Вы также указали, что попытка зарегистрировать отпечаток при помощи примеров из libfprint завершается безрезультатно — вы видите множество циклических "SM_STATES_NUM entering state" сообщений, однако сканирование не происходит.
Одним из ключевых предупреждений является то, что устройство "не поддерживает хранение" (doesn’t support storage). Это может указывать на то, что устройство не имеет внутренней памяти для хранения данных отпечатков пальцев, что необычно, поскольку сама библиотека должна управлять этим аспектом.
Что может быть не так и что можно сделать?
-
Проблемы совместимости и версия ПО. Несмотря на поддержку, только что добавленную в libfprint, стоит убедиться, что вы используете последнюю доступную версию не только libfprint, но и всех связанных компонентов (fprintd, systemd и других связанных систем). Возможно, последние исправления еще не вошли в репозитории вашего дистрибутива. Также проверьте наличие возможных обновлений микропрограмм (firmware) для вашего устройства. Хотя ‘fwupdmgr’ не предоставляет обновления, возможно, необходимы специфические micro-коды для правильной работы датчика.
-
Правильная настройка fprintd и libfprint. Проверьте, необходимо ли дополнительное конфигурирование fprintd, чтобы правильно сообщать устройству о регистрации. Возможно, ваша система использует устаревшие конфигурации, которые противоречат настройкам нового драйвера.
-
Тестирование и отладка. Рассмотрите возможность включения дополнительного уровня отладки в fprintd и libfprint. Это может дать более полное представление о том, что именно происходит в процессе регистрации. Запустите службы с дополнительной отладочной информацией, чтобы проанализировать все сообщения и понять более точно, где происходит сбой.
-
Обратная связь сообществу. Поскольку проблема может быть связана с только что добавленной поддержкой в libfprint, будет полезно сообщить об этом в сообщество или поддерживающий форум, такой как Arch Linux Forum или GitHub-репозиторий libfprint. Возможно, другие пользователи уже сталкивались с подобной проблемой и смогут предоставить готовое решение.
-
*Проблемы аппаратного обеспечения и драйверов. Если все вышеперечисленные шаги не помогают, и проблема сохраняется, рассмотрите возможность проверки аппаратного компонента на предмет неисправностей. Определите, как работает устройство на других операционных системах, чтобы исключить аппаратную проблему.
В качестве практических шагов, воспользуйтесь актуальными отладочными инструментами и знаниями о том, как конкретная модель устройства управляется под Arch Linux. Убедительные выводы могут быть сделаны, только если будут учтены все факторы, от обновлений драйверов до аппаратных ограничений. Исключите один за другим возможные факторы и действуйте на основе имеющейся информации. Тестируйте и привлекайте поддержку со стороны сообщества, это поможет быстрее добиться результата.