Validity Fingerprint sensor device (138a:003f) VFS495 on Slackware
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Validity Fingerprint sensor device (138a:003f) VFS495 on Slackware
Hello, guys.
Since I have had successfully logged-in my HP EliteBook 840G1 laptop by using the Validity Sensors, Inc. VFS495 Fingerprint Reader device (id:138a:003f) , I will post a short report here.
I googled web, but HP is providing the sensor utility of Linux only for SuSE, and an open-source fingerprint drivers at "Fingerprint GUI" does not support VFS495(138a:003f).
However, user level developed VF495's driver is on a web but it's tutorial is for debian, ubuntu etc.... I could not find any slackware's information of how to enable this device to work.
Here is a simple information that I enabled the device to work.
1. Install Linux-PAM-1.3.1
(I also installed shadow, sudo, cracklib, with pam support, just in case. I'm not sure these additional package are necessary or not.)
2. Install HP's SuSE utility (Validity-Sensor-Setup-4.5-136.0.x86_64.rpm) by using rpm2targz conversion.(HP's download link)
3. Create two symbolic links at /usr/lib64
4. Get VF495(138a:003f)'s patch and driver source from here -->vf495.tar
Untar vfs495.tar and get several source and vfs495's patch file.
5. Install libfprint-0.0.6 with applying libfprint-validity.patch
6. Install pam_fprint-0.2 (The source is included in vfs495.tar.)
7. Install fprint_demo-0.4 (The source is included in vfs495.tar.)
8. Create /etc/pam.d/system-local-login file with just one line below.
# nano /etc/pam.d/system-local-login
Code:
auth sufficient pam_fprint.so
9. Add the same one row at the top of the /etc/pam.d/system-auth file.
# nano /etc/pam.d/system-auth
10. Create a symbolic link of pam_fprint.so in /usr/lib64/security
Code:
# cd /usr/lib64/security
# ln -s ../../../lib/security/pam_fprint.so pam_fprint.so
11. Put a rc.vcsFPServerDaemon file in /etc/rc.d and make it executable.
rc.vcsFPServerDaemon is something like below.
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: Validity Fingerprint Service Daemon
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 5
# Default-Stop: 0 6
# Short-Description: Validity Fingerprint Service Daemon
# Description: Start vcsFPService to provide Validity FP Service
### END INIT INFO
#
# Note on runlevels:
# 0 - halt/poweroff 6 - reboot
# 1 - single user 2 - multiuser without network exported
# 3 - multiuser w/ network (text mode) 5 - multiuser w/ network and X11 (xdm)
#
#. /lib/lsb/init-functions
vcsFPService_BIN=/usr/bin/vcsFPService
test -x $vcsFPService_BIN || { echo "$vcsFPServiceDaemon is not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 3; fi; }
case "$1" in
start)
echo -n "Starting vcsFPService Daemon \n"
# start-stop-daemon --start --background --quiet --exec "$vcsFPService_BIN" > /dev/null 2 >&1
$vcsFPService_BIN > /dev/null 2 >&1
;;
stop)
echo -n "Stopping vcsFPService Daemon \n"
/usr/bin/killall -TERM $vcsFPService_BIN
# start-stop-daemon --stop --quiet --quiet --oknodo --retry=0/1/KILL/5 --exec "$vcsFPService_BIN" > /dev/null 2 >&1
# /etc/rc.d/rc.vcsFPServiceDaemon stop > /dev/null 2 >&1
;;
status)
echo "Checking for vcsFPService Daemon \n"
if pidof -o %PPID $vcsFPService_BIN > /dev/null; then
echo "client is running. \n"
exit 0
else
echo "client is not running. \n"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
;;
esac
exit 0
That's all. Reboot the PC. Then, at the first time log-in, you might see some error message and have to log-in with a normal password way.
But, you do not have to worry.
Please do as follows.
Then you will be asked to scan your right index finger.
The scanning need to be done three times.
If you see a message of "complete", its OK.
You can log-in by only scanning your right-index-finger one time from next log-in.
<NOTE> This log-in method is available only with "Run-level-3"
And since I'm not familiar with script write and read, there must be wrong part of rc.vcsFPServerDaemon above. Please some experts of Linux guys point the wrong part and fix the rc script.
Anyway, as a result, it's working at least Run-level-3.
Hope this info would be useful to some slackware users who are using the same device.
I added one sample picture link of "fprint_demo" and a few information below.
1. fprint_demo
If the vfs495 has been successfully recognized by patched libfprint-0.0.6, When you execute /usr/local/bin/fprint_demo, you can see a demo-enroll-window like below. https://www.flickr.com/photos/785181...7709512110872/
You can see letters at bottom of the picture like below,
Status: Device ready for use
Driver: Validity
Imaging device
"
This means that your vfs495 device is successfully recognized and ready for use.
2. Another demo files
I've had just realize today, that there are also some demo executale files at "/usr/doc/libfprint-0.0.6/examples/.libs/ "directory.
demo files are enroll, img_capture, img_capture_continuous, verify and verify_live.
<Notes> DO NOT upload your fingerprint img up to web. The your fingerprint img is very important for your security !
possible more support of proprietary devices with patched libfprint-0.99.0
My first post was described only for a vfs495 device. A version of the libfprint of my first post was libfprint-0.0.6.
These few days, I tested another driver patch that I found in Arch-linux wiki page and related git source. In this case,
the version of libfprint is libfprint-0.99.0, and supported additional proprietary drivers are - VFS451 (138a:0007)
- VFS471 (138a:003c)
- VFS491 (138a:003d)
- VFS495 (138a:003f) .
I was able to build the libfprint-0.99.0 (included drivers above) and ,at least for vfs495 (138a:003f), fingerprint device was successfully recognized and works well now.
Since I don't own other laptop PC, I have no chance to test other proprietary device above.
Anyway, I post here how to get driver sources and build library.
Step-0) At first, 1,2 &3 of my first post should be done.
1. Install Linux-PAM-1.3.1
2. Install HP's SuSE utility (Validity-Sensor-Setup-4.5-136.0.x86_64.rpm) by using rpm2txz conversion.
3. Create two symbolic links at /usr/lib64
$ git clone https://github.com/rindeal/libfprint-vfs_proprietary-driver
$ ls -al
libfprint-upstream-git
libfprint-vfs_proprietary-driver
Step3) copy proprietary driver directory into libfprint-upstream-git
Code:
$ cp -a libfprint-vfs_proprietary-driver/vfs_proprietary libfprint-upstream-git/libfprint/drivers/vfs_proprietary
Step4) Build library
Code:
$ cd libfprint-upstream-git
Patch the libfprint's meson files (This is Arch-linux's explanation)
$ sed -e "/^all_drivers *=/a all_drivers += [ 'vfs_proprietary' ]" -i -- meson.build
$ sed -e "/^libfprint *=/i libvfsFprintWrapper_dir='${validity_binaries_dir}/usr/lib64/'\nsubdir('drivers/vfs_proprietary')" -i -- libfprint/meson.build
Fix upstream bug (This is also Arch-linux's explanation)
$ sed -e "s|if imaging_dep.found()|if imaging_dep != [] and imaging_dep.found()|" -i -- libfprint/meson.build
Run the build
$ mkdir build
$ meson -D drivers=vfs_proprietary -D x11-examples=false -D gtk-examples=false -D doc=false build
=== You will see following messages from meson ===
The Meson build system
Version: 0.51.1
Source dir: /home/abe/work/test-libfprint-new/000/libfprint-upstream-git
Build dir: /home/abe/work/test-libfprint-new/000/libfprint-upstream-git/build
Build type: native build
Project name: libfprint
Project version: 0.99.0
C compiler for the build machine: ccache cc (gcc 9.1.0 "cc (GCC) 9.1.0")
C++ compiler for the build machine: ccache c++ (gcc 9.1.0 "c++ (GCC) 9.1.0")
C compiler for the host machine: ccache cc (gcc 9.1.0 "cc (GCC) 9.1.0")
C++ compiler for the host machine: ccache c++ (gcc 9.1.0 "c++ (GCC) 9.1.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Compiler for C supports arguments -fgnu89-inline: YES
Compiler for C supports arguments -fvisibility=hidden: YES
Compiler for C supports arguments -std=gnu99: YES
Compiler for C supports arguments -Wall: YES
Compiler for C supports arguments -Wundef: YES
Compiler for C supports arguments -Wunused: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Werror-implicit-function-declaration: YES
Compiler for C supports arguments -Wno-pointer-sign -Wpointer-sign: YES
Compiler for C supports arguments -Wshadow: YES
Compiler for C supports arguments -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_50: YES
Compiler for C supports arguments -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_50: YES
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency glib-2.0 found: YES 2.60.5
Run-time dependency libusb-1.0 found: YES 1.0.22
Library m found: YES
Run-time dependency udev found: YES 228
Configuring config.h using configuration
libfprint/meson.build:137: WARNING: Trying to compare values of different types (DependencyHolder, list) using !=.
The result of this is undefined and will become a hard error in a future Meson release.
Configuring drivers_definitions.h with command
Configuring drivers_arrays.h with command
Library vfsFprintWrapper found: YES
Build targets in project: 10
Found ninja-1.9.0 at /usr/bin/ninja
=======================================
$ ninja -v -C build
After build has been completed, move to build directory and make package
$ cd build
$ su -
# mkdir <PKG-DIR>
# DESTDIR=<PKG-DIR> ninja install
# cd <PKG-DIR>
# makepkg ../libfprint-0.99.0_git-x86_64-1.txz
$ tar xvf fprintd-0.8.1.tar.xz
$ cd fprintd-0.8.1
$ ./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc
※ Since originally fprintd requires "systemd" environment, "configure" claims that "systemd not found". But I went ahead anyaway.
$ make
su -
# mkdir <PKG-DIR>
# make install DESTDIR=<PKG-DIR>
# cd <PKG-DIR>
# makepkg ../fprintd-0.8.1-x86_64-1.txz
# installpkg fprintd-0.8.1-x86_64-1.txz
Step-7) edit /etc/pam.d/system-auth and /etc/pam.d/system-loval-login
Code:
# nano /etc/pam.d/system-auth
I added a row
"auth sufficient pam_fprintd.so"
at the top line.
# nano /etc/pam.d/system-local-login
Also added
"auth sufficient pam_fprintd.so"
at the top line.
Step-8) Reboot PC and normal passwrod log-in.
Then, run /usr/bin/fprintd-enroll
From the next time log-in, I was able to log-in my PC with fingerprint swipe.
==============================================
(additional notes)
For example, following added devices were appeared in /lib/udev/rules.d/60-fprint-autosuspend.rules.
====
As you can see these lines, eight kinds of added device sections are there.
So, I think that not only my device VFS495 but also other proprietary devices such as VFS451 (138a:0007), VFS471 (138a:003c) and VFS491 (138a:003d) might work as the same as VFS495 (138a:003f).
Hope, this info would help for some other user with fingerprint device.
Last edited by J_W; 07-15-2019 at 03:57 AM.
Reason: * Edit udev rules (JUL. 15th, 2019)
I think that this is my last report on this subject.
It is possible to let the fingerprint-GUI application work on slackware. However, since qt5 installed environment is required to build this application, I will not intend to recommend to install this to all fingerprint device users.
Anyway, how to get source and install is as follows.
Code:
$ git clone https://github.com/Tilka/fingerprint-gui
$ cd fingerprint-gui
$ sh qmake.sh
$ make
$ su -
# mkdir <PKG-DIR>
# make install INSTALL_ROOT=<PKG-DIR>
# cd <PKG-DIR>
# makepkg ../fingerprint-gui-1.09-x86_64-1.txz
Please see details in README file in downloaded dir.
On my case, I added following one line at the top of /etc/pam.d/su auth sufficient pam_fingerprint-gui.so
My first post was described only for a vfs495 device. A version of the libfprint of my first post was libfprint-0.0.6.
These few days, I tested another driver patch that I found in Arch-linux wiki page and related git source. In this case,
the version of libfprint is libfprint-0.99.0, and supported additional proprietary drivers are - VFS451 (138a:0007)
- VFS471 (138a:003c)
- VFS491 (138a:003d)
- VFS495 (138a:003f) .
I was able to build the libfprint-0.99.0 (included drivers above) and ,at least for vfs495 (138a:003f), fingerprint device was successfully recognized and works well now.
Since I don't own other laptop PC, I have no chance to test other proprietary device above.
Anyway, I post here how to get driver sources and build library.
Step-0) At first, 1,2 &3 of my first post should be done.
1. Install Linux-PAM-1.3.1
2. Install HP's SuSE utility (Validity-Sensor-Setup-4.5-136.0.x86_64.rpm) by using rpm2txz conversion.
3. Create two symbolic links at /usr/lib64
$ git clone https://github.com/rindeal/libfprint-vfs_proprietary-driver
$ ls -al
libfprint-upstream-git
libfprint-vfs_proprietary-driver
Step3) copy proprietary driver directory into libfprint-upstream-git
Code:
$ cp -a libfprint-vfs_proprietary-driver/vfs_proprietary libfprint-upstream-git/libfprint/drivers/vfs_proprietary
Step4) Build library
Code:
$ cd libfprint-upstream-git
Patch the libfprint's meson files (This is Arch-linux's explanation)
$ sed -e "/^all_drivers *=/a all_drivers += [ 'vfs_proprietary' ]" -i -- meson.build
$ sed -e "/^libfprint *=/i libvfsFprintWrapper_dir='${validity_binaries_dir}/usr/lib64/'\nsubdir('drivers/vfs_proprietary')" -i -- libfprint/meson.build
Fix upstream bug (This is also Arch-linux's explanation)
$ sed -e "s|if imaging_dep.found()|if imaging_dep != [] and imaging_dep.found()|" -i -- libfprint/meson.build
Run the build
$ mkdir build
$ meson -D drivers=vfs_proprietary -D x11-examples=false -D gtk-examples=false -D doc=false build
=== You will see following messages from meson ===
The Meson build system
Version: 0.51.1
Source dir: /home/abe/work/test-libfprint-new/000/libfprint-upstream-git
Build dir: /home/abe/work/test-libfprint-new/000/libfprint-upstream-git/build
Build type: native build
Project name: libfprint
Project version: 0.99.0
C compiler for the build machine: ccache cc (gcc 9.1.0 "cc (GCC) 9.1.0")
C++ compiler for the build machine: ccache c++ (gcc 9.1.0 "c++ (GCC) 9.1.0")
C compiler for the host machine: ccache cc (gcc 9.1.0 "cc (GCC) 9.1.0")
C++ compiler for the host machine: ccache c++ (gcc 9.1.0 "c++ (GCC) 9.1.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Compiler for C supports arguments -fgnu89-inline: YES
Compiler for C supports arguments -fvisibility=hidden: YES
Compiler for C supports arguments -std=gnu99: YES
Compiler for C supports arguments -Wall: YES
Compiler for C supports arguments -Wundef: YES
Compiler for C supports arguments -Wunused: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Werror-implicit-function-declaration: YES
Compiler for C supports arguments -Wno-pointer-sign -Wpointer-sign: YES
Compiler for C supports arguments -Wshadow: YES
Compiler for C supports arguments -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_50: YES
Compiler for C supports arguments -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_50: YES
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency glib-2.0 found: YES 2.60.5
Run-time dependency libusb-1.0 found: YES 1.0.22
Library m found: YES
Run-time dependency udev found: YES 228
Configuring config.h using configuration
libfprint/meson.build:137: WARNING: Trying to compare values of different types (DependencyHolder, list) using !=.
The result of this is undefined and will become a hard error in a future Meson release.
Configuring drivers_definitions.h with command
Configuring drivers_arrays.h with command
Library vfsFprintWrapper found: YES
Build targets in project: 10
Found ninja-1.9.0 at /usr/bin/ninja
=======================================
$ ninja -v -C build
After build has been completed, move to build directory and make package
$ cd build
$ su -
# mkdir <PKG-DIR>
# DESTDIR=<PKG-DIR> ninja install
# cd <PKG-DIR>
# makepkg ../libfprint-0.99.0_git-x86_64-1.txz
$ tar xvf fprintd-0.8.1.tar.xz
$ cd fprintd-0.8.1
$ ./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc
※ Since originally fprintd requires "systemd" environment, "configure" claims that "systemd not found". But I went ahead anyaway.
$ make
su -
# mkdir <PKG-DIR>
# make install DESTDIR=<PKG-DIR>
# cd <PKG-DIR>
# makepkg ../fprintd-0.8.1-x86_64-1.txz
# installpkg fprintd-0.8.1-x86_64-1.txz
Step-7) edit /etc/pam.d/system-auth and /etc/pam.d/system-loval-login
Code:
# nano /etc/pam.d/system-auth
I added a row
"auth sufficient pam_fprintd.so"
at the top line.
# nano /etc/pam.d/system-local-login
Also added
"auth sufficient pam_fprintd.so"
at the top line.
Step-8) Reboot PC and normal passwrod log-in.
Then, run /usr/bin/fprintd-enroll
From the next time log-in, I was able to log-in my PC with fingerprint swipe.
==============================================
(additional notes)
For example, following added devices were appeared in /lib/udev/rules.d/60-fprint-autosuspend.rules.
====
As you can see these lines, eight kinds of added device sections are there.
So, I think that not only my device VFS495 but also other proprietary devices such as VFS451 (138a:0007), VFS471 (138a:003c) and VFS491 (138a:003d) might work as the same as VFS495 (138a:003f).
Hope, this info would help for some other user with fingerprint device.
Since this forum here is the slackware forum, I posted my messages based on slackware environment and for slackware users.
The command "makepkg" is a slackware specific command. So, that command is not included in Fedora linux.
Since I am not familiar with Fedora linux, I don't know how to make the proprietary fingerprint driver work on Fedora environment.
I recommend you that it's better to try to ask your question on Fedora community with attaching an information of a device ID of your finger print device which can be found with lsusb command.
I'm sorry that I can't give you any solution for your question.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.