LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 07-07-2019, 03:43 AM   #1
J_W
Member
 
Registered: Apr 2004
Location: Yamagata, JAPAN
Distribution: Slackware64-current
Posts: 68

Rep: Reputation: 18
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
Code:
# cd /usr/lib64
# ln -s libcrypto.so.1.1 libcrypto.so.0.9.8
# ln -s libssl.so.1.1 libssl.so.0.9.8
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
Code:
#%PAM-1.0
auth        sufficient    pam_fprint.so
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        required      pam_deny.so
....
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.
Code:
# /etc/rc.d/rc.vcsFPServerDaemon start
# pam_fprint_enroll
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.

Sorry, my poor English.
J_W

Last edited by J_W; 07-07-2019 at 04:04 AM.
 
Old 07-08-2019, 11:25 PM   #2
J_W
Member
 
Registered: Apr 2004
Location: Yamagata, JAPAN
Distribution: Slackware64-current
Posts: 68

Original Poster
Rep: Reputation: 18
Additiona information

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 !
 
Old 07-12-2019, 09:56 AM   #3
J_W
Member
 
Registered: Apr 2004
Location: Yamagata, JAPAN
Distribution: Slackware64-current
Posts: 68

Original Poster
Rep: Reputation: 18
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

Step-1) Get libfprint upstream git source.
Code:
$ git clone https://gitlab.freedesktop.org/libfprint/libfprint
Re-name received git directory (Not necessary)
$ mv libfprint/ libfprint-upstream-git
Step2) Get proprietary driver patch
Code:
$ 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
Step-5) Install package
# installpkg libfprit-0.99.0_git-x86_64-1.txz

Step-6) Make fprintd-0.8.1
Code:
$ 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.
Code:
..... 
# Validity Sensors (proprietary driver)
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0007", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0007", ENV{LIBFPRINT_DRIVER}="Validity Sensors (proprietary driver)"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003c", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003c", ENV{LIBFPRINT_DRIVER}="Validity Sensors (proprietary driver)"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003d", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003d", ENV{LIBFPRINT_DRIVER}="Validity Sensors (proprietary driver)"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003f", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="003f", ENV{LIBFPRINT_DRIVER}="Validity Sensors (proprietary driver)"

# Hardcoded whitelist
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0090", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0090", ENV{LIBFPRINT_DRIVER}="Hardcoded whitelist"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0091", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0091", ENV{LIBFPRINT_DRIVER}="Hardcoded whitelist"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0094", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0094", ENV{LIBFPRINT_DRIVER}="Hardcoded whitelist"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0097", ATTRS{dev}=="*", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="usb", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0097", ENV{LIBFPRINT_DRIVER}="Hardcoded whitelist"
====
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)
 
1 members found this post helpful.
Old 07-18-2019, 07:57 AM   #4
J_W
Member
 
Registered: Apr 2004
Location: Yamagata, JAPAN
Distribution: Slackware64-current
Posts: 68

Original Poster
Rep: Reputation: 18
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

I attached my sample application window.
Attached Thumbnails
Click image for larger version

Name:	my-fingerprint-gui-window.jpg
Views:	16
Size:	28.0 KB
ID:	30925  
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
fingerprint-gui "Could not open fingerprint device" exactiv Linux - Security 4 12-15-2015 04:50 PM
X240 Validity Fingerprint Reader Driver ylang Linux - Hardware 1 05-05-2014 05:18 PM
Cannot Detect Fingerprint Sensor on Ubuntu 12.04 crowen630 Linux - Hardware 5 08-16-2012 09:39 AM
fingerprint match against collection of previos fingerprint mukesh.methaniya Linux - Software 0 05-22-2011 02:31 AM
fingerprint sensor with fprint-demo bir33hd Linux - Hardware 0 03-10-2008 12:56 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 12:27 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration