VFS 495指纹识别器在Ubuntu系统中无法正常工作。

我有一台HP Probook 450,它配备了来自Validity Inc.的集成指纹识别器VFS 495。我从HP网站上下载了Linux驱动程序。现在我想在Ubuntu上让它工作。驱动程序是rpm格式的,所以我使用alien转换器将其转换为deb包然后安装。
HP驱动程序页面链接: 驱动程序 FYI:这个驱动程序包含了一些fprint封装库,还有一个名为HPUsbVFS495.img的文件,但是我无法弄清楚它的工作原理。

lspci && lsusb的输出:

00:00.0 主机桥:英特尔公司第三代酷睿处理器DRAM控制器(版本09) 00:02.0 显卡兼容控制器:英特尔公司第三代酷睿处理器图形控制器(版本09) 00:14.0 USB控制器:英特尔公司7系列/C210系列芯片组USB xHCI主机控制器(版本04) 00:16.0 通信控制器:英特尔公司7系列/C210系列芯片组MEI控制器#1(版本04) 00:1a.0 USB控制器:英特尔公司7系列/C210系列芯片组USB增强型主机控制器#2(版本04) 00:1b.0 音频设备:英特尔公司7系列/C210系列芯片组高清晰度音频控制器(版本04) 00:1c.0 PCI桥接器:英特尔公司7系列/C210系列芯片组PCI Express根端口1(版本c4) 00:1c.2 PCI桥接器:英特尔公司7系列/C210系列芯片组PCI Express根端口3(版本c4) 00:1c.3 PCI桥接器:英特尔公司7系列/C210系列芯片组PCI Express根端口4(版本c4) 00:1c.5 PCI桥接器:英特尔公司7系列/C210系列芯片组PCI Express根端口6(版本c4) 00:1d.0 USB控制器:英特尔公司7系列/C210系列芯片组USB增强型主机控制器#1(版本04) 00:1f.0 ISA桥接器:英特尔公司HM76 Express芯片组LPC控制器(版本04) 00:1f.2 SATA控制器:英特尔公司7系列芯片组6端口SATA控制器[AHCI模式](版本04) 02:00.0 未分配类别[ff00]:瑞昱半导体股份有限公司RTS5229 PCI Express读卡器(版本01) 03:00.0 网络控制器:雷凌科技股份有限公司RT3290无线802.11n 1T/1R PCIe 03:00.1 蓝牙:雷凌科技股份有限公司RT3290蓝牙 04:00.0 以太网控制器:瑞昱半导体股份有限公司RTL8111/8168/8411 PCI Express千兆以太网控制器(版本0c) 总线002 设备002:ID 8087:0024 英特尔公司集成速率匹配集线器 总线002 设备001:ID 1d6b:0002 Linux基金会2.0根集线器 总线001 设备004:ID 04ca:7022 Lite-On Technology Corp. 总线001 设备003:ID 138a:003f Validity Sensors, Inc. 总线001 设备002:ID 8087:0024 英特尔公司集成速率匹配集线器 总线001 设备001:ID 1d6b:0002 Linux基金会2.0根集线器 总线004 设备001:ID 1d6b:0003 Linux基金会3.0根集线器 总线003 设备002:ID 09da:c10a A4 Tech Co., Ltd 总线003 设备001:ID 1d6b:0002 Linux基金会2.0根集线器

如果你没有安装软件,它就不会起作用了吧? - Braiam
我已经安装了驱动程序,但它不起作用。 - Ali
我是说如果不安装任何东西,它能正常工作吗?而且,请编辑您的问题并添加lspci && lsusb命令的输出结果。 - Braiam
没有,即使没有安装任何东西也不起作用。而且我已经更新了输出。 - Ali
1个回答

我在这台机器上按照这个指南this guide成功地在16.04上运行了它,但是链接出现了一些问题,所以我会详细说明我做了什么...
(首先,你可能想要导航到一个空文件夹,因为我们将进行一些下载、编译和转换。文件将会分散在各个地方)
mkdir temporary
cd ./temporary

现在我们已经创建了一个文件夹并导航到它,我们可以继续进行...
首先,下载this并将其放置在您的空文件夹中。
这个指南非常长,但好处是只要按照顺序进行,它应该能正常工作。如果您不明白发生了什么,请逐行复制粘贴(或在评论中提问)。
安装驱动程序:
tar xf vfs495.tar
cd vfs495
sudo apt install alien
sudo alien Validity-Sensor-Setup-4.5-118.00.x86_64.rpm
sudo dpkg -i validity-sensor-setup_4.5-119_amd64.deb

现在是关于损坏链接的部分。以下是应该正常工作的链接:
sudo apt install libssl1.0.0
ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 /lib/x86_64-linux-gnu/libssl.so.0.9.8
sudo apt-get install libcrypto++-dev
ln -s /usr/lib/libcrypto++.so.9 /usr/lib/libcrypto.so.0.9.8

然后就继续。安装libfprint。
mkdir libfprint
cd libfprint
rpm2cpio ../libfprint-0.0.6-18.20.1.src.rpm | cpio -i --make-directories
tar xf libfprint-0.0.6.tar.bz2
cp ../libfprint-validity.patch ./libfprint-validity.patch
cd libfprint-0.0.6/
patch -p1 < ../libfprint-validity.patch
sudo apt-get install libusb-dev libcrypto++-dev libssl-dev libglib2.0-dev libmagickcore-dev checkinstall
./configure --prefix=/usr
make
sudo checkinstall -install=no make install
sudo dpkg -i libfprint_0.0.6-1_amd64.deb

安装fprint_demo
cd ../..
sudo apt-get install libgtk2.0-dev
tar xf fprint_demo-0.4.tar.bz2
cd fprint_demo-0.4
./configure --prefix=/usr
make
sudo checkinstall -install=no make install
sudo dpkg -i fprint-demo_0.4-1_amd64.deb

此时,我们可以开始注册指纹。
sudo /etc/init.d/vcsFPServiceDaemon start
sudo fprint_demo

...在你注册了指纹之后,你可以在“识别”选项卡中进行训练。它会显示你的指纹!太有趣了 :D 有时候我就去那里不停地刷 XD 另外一点要注意的是,不要截屏你的指纹并分享出去除非你知道自己在做什么。你的指纹很有价值。最好只为你自己保留。 ...无论如何,继续。安装pam_fprint
cd ..
tar xf pam_fprint-0.2.tar.bz2
cd pam_fprint-0.2/
sudo apt-get install libpam-dev
./configure --prefix=/usr
make
sudo checkinstall -install=no make install
sudo dpkg -i pam-fprint_0.2-1_amd64.deb

现在我们可以开始设置指纹认证了。我建议你在这里停下来,因为我已经使用了一段时间,发现有几个问题。到目前为止,你的驱动程序是正常工作的,这很好。你可以尝试用它进行身份验证,如果你想的话可以还原,但它不适合日常使用。
无论如何,我们需要编辑/etc/pam.d/common-auth文件。对于这个文件要小心!!如果搞砸了,你就得从恢复模式修复它。
这样做会让Ubuntu要求你使用指纹或密码来授予你root访问权限和登录权限。所以你仍然可以使用密码登录。
sudo nano /etc/pam.d/common-auth

我们需要添加这些行:
# fingerprint authentication through fprintd
auth    sufficient                      pam_fprint.so

并修改包含pam_unix.so nullok_secure try_first_pass的行,使其足够,像这样:

auth    sufficient      pam_unix.so nullok_secure try_first_pass

所以最后这是我的文件的样子

请注意行为将取决于您放置行的位置。如果您将它们放在上面(“主要”块)部分,它将首先要求您提供指纹,然后是密码,反之亦然。

我希望有人能够澄清或给出关于这个文件如何工作的好建议。

最后...

cd ..
sudo cp vcsFPServiceDaemon /etc/init.d/
sudo update-rc.d vcsFPServiceDaemon defaults

事情应该正常运作。

3谢谢!只是一个小提醒:在第一次运行服务之前,您需要将vcsFPServiceDaemon复制到/etc/init.d/目录下,并在运行fprint_demo之前这样做。 - Denis
这个方法在Elementary OS下使用HP 640 G2时虽然有效,但却不稳定。我不得不卸载它。不过,这是一份完美的指南,我肯定会在其他硬件或不同的发行版上再次使用它。谢谢! - Benoit Duffez
希望你喜欢它 :D - steoiatsl
非常出色且详细的指南!在一台搭载Linux Mint 18.3的HP 470 G5上完美运行。我还有一个额外的问题:我注意到它只在登录界面要求指纹,而在锁定屏幕后,总是要求输入密码。我该如何让它在解锁屏幕时也要求指纹呢? - Stefano Coletta
嗨,我已经一直在关注了,但当我输入“sudo /etc/init.d/vcsFPServiceDaemon start”时,它告诉我“/etc/init.d/vcsFPServiceDaemon:33:。无法打开/etc/rc.status”但命令“sudo fprint_demo”有效,但显示没有设备。我该怎么办?如果有用的话,我使用的是HP EliteBook 840,安装了18.04和Plasma。 - DPS
这正是当我使用sudo fprint_demo时显示的内容:libcrypto.so.0.9.8: 无法打开共享对象文件: 没有那个文件或目录fp:error [fp_dev_open] 设备初始化失败, driver=Validity尽管如此,它确实打开了,只是说它“无法打开设备”。 - DPS
嗯,看起来fprint有一个更新。更新后,当我尝试启动它时,终端不再显示错误信息,但是在启动时仍然显示找不到设备,并且当我尝试执行sudo /etc/init.d/vcsFPServiceDaemon start时仍然会出现相同的错误。 - DPS
包 'libssl1.0.0' 没有可安装的候选项 - Sivaram Rasathurai