Validity 指纹识别驱动折腾记录(VFS 491)

1. 前言

1.1 背景

  • 破笔记本一天不如一天,总想着让它在退休前再发光发热,毕竟我们是自带各种智能卡、指纹识别模块的商务本...
    于是,就从指纹识别开始吧。

1.2 环境介绍

  • 操作系统:debian9 (stretch) x64
  • 指纹模块生产商:Validity Sensors
  • 指纹模块 ID :138a:003d
  • 需要的驱动:VFS 491
  • 附:本文所使用的驱动支持的设备列表

2. 系统仓库里的 fprint 相关组件介绍

  • libfprint0: 指纹模块的驱动代码
  • fprintd: 守护进程,封装指纹识别的各项功能,通过 dbus 统一对外服务,解决多进程同时竞争硬件资源的问题
  • libpam-fprintd:指纹识别的 PAM 模块,调用 fprintd 的接口实现身份认证
  • fprint-demo:图形化的指纹识别测试程序,用于录入指纹以及其他一些配置

Notice: 这是主流发行版的软件包,但是下面编译的驱动由于并未开源,所以无法与 fprintd 协作。
不过,我们在这里将使用 HP 为 SUSE Linux 提供的二进制包(vcsFPService)来完成守护进程的功能。

3. 编译 libfprint && 安装守护进程

3.1 编译安装 libfprint

  • 环境准备,下载文件: Validity_Sensors_Files.tar.gz

  • 编译代码

  • 制作安装 deb 包

3.2 安装 validity-sensor-setup

  • 环境准备

  • 转换 RPM 包

  • 配置依赖库(这是hack手段,强行伪装旧版openssl库)

    Notice:关于这个,参考资料中两篇文章貌似错误地将libcrypto.so.0.9.8 指向了 libcryptopp.so;
    libssl.so 和 libcrypto.so 均是包 libssl 的组件, 即 openssl 的两个主要功能;
    而 libcryptopp.so 是包 libcrypto++ 的一部分,这是给一套给 C++ 使用的加密算法库。

  • 配置守护进程

4. 编译 fprint_demo && 测试指纹录入

4.1 编译安装 fprint_demo

  • 环境准备

  • 编译代码

  • 制作安装 deb 包

4.2 测试功能

由于该指纹模块会将用户指纹保存在 ~/.fprint 目录下,所以对于不同用户设置指纹,只需要以那个用户身份启动 fprint_demo 即可

  • 为当前用户配置指纹

  • 为 root 用户配置指纹

5. 编译 pam_fprint && 配置 PAM 模块

5.1 编译安装 pam_fprint

  • 环境准备

  • 编译代码

  • 制作安装 deb 包

5.2 配置 PAM 认证

  • 修改 /etc/pam.d/common-auth 配置
    将默认第一行 auth 的参数修改为 sufficient(建议注释该行,写入新行,如下:

    Notice:上面的配置意味密码或者指纹任何一项均可以通过认证,默认密码认证,密码认证失败则进行指纹认证。
    随后即可在 sudo、su、login 或者图形登录界面“直接回车”或者“输入错误密码”即可进行指纹认证。

6. 睡眠唤醒服务脚本

在机器进入睡眠状态(suspend)时,需要向该驱动发送信号 SIGUSR1 使设备进入相应的休眠状态。
随后在机器唤醒时(resume),需要发送信号 SIGUSR2 使设备恢复工作。

  • for Systemd

  • for Sysvinit

    Notice:笔者在服务脚本 [email protected][email protected] 里向 /tmp/mylog 写入了一些记录信息,便于调试 :)

7. 锁定包版本

  • 上述我们编译的数个deb包,其中 fprint_demo 在 apt 源中有更新的版本,但是如果安装的话,会顺带着安装依赖的fprintd 和 libfprint0, 这样会破坏我们的工作。所以需要设置包状态为 hold,防止自动升级 fprint_demo

8. 资料下载

Validity_Sensors_Files.tar.gz

9. 参考资料

https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1101647/comments/20

https://balintbanyasz.wordpress.com/2015/03/27/get-validity-vfs-495-fingerprint-reader-working-in-ubuntu-14-04/

Validity-Sensor-Setup-4.5-118.00.x86_64.rpm

发表评论

电子邮件地址不会被公开。 必填项已用*标注