Procédure pour activer le lecteur d'empreintes digitales sur HP elitebook 8470p sous UBUNTU 14.04
Uninstallation
===========
GNOME users: The package policykit-
sudo apt-get install policykit-1-gnome
sudo apt-get remove fingerprint-gui
Je donne toutes les démarches à faire pour obtenir le fonctionnement, mais on peut simplifier en installant directement installer le pkg et copier le fichier de démarrage et ensuite on peut passer toutes les étapes de la compilation en récupérant la libfprint0 déjà compilée comme le pkg et le script sur mon drive google (https://drive.google.com/fingerprint_reader_files).
uname -a :
Linux uranix 3.13.0-49-generic #83-Ubuntu SMP Fri Apr 10 20:11:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
lsusb -s 001:003 -v :
Bus 001 Device 003: ID 138a:003d Validity Sensors, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 17
bDeviceProtocol 255
bMaxPacketSize0 8
idVendor 0x138a Validity Sensors, Inc.
idProduct 0x003d
bcdDevice 1.04
iManufacturer 0
iProduct 0
iSerial 1 0030d8cdc38f
bNumConfigurations 1
... cut ...
Le plus simple est d'installer :
sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui
Cela devrait installer automatiquement : libfprint0
Si nécessaire installer d'abord :
sudo apt-add-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update
Attention : la version 1.07 de fingerprint ne fonctionne pas correctement aussi je maintiens la version 1.07. Comme les packages ne sont pas disponible dans cette version via le ppa je mets les pkg version 1.06 sur le drive google avec les autres fichiers. A suivre lorsqu'il y aura une mise à jour fingerprint...
Dans cet état le fingerprint reader ne fonctionne pas.
Il faut installer une libfprint0 qui le reconnaisse et qui est (si je comprends bien) un wrapper pour le pilote que HP a développé pour la distribution Suse. Je suis ici les indications données sur le blog (merci à lui) mais en les modifiant et les complétant là où c'est nécessaire :
http://blog.pasqualefiorillo.it/post/hp-probook-4540s-validity-sensors-driver-su-linux-mintdebian/
1 - télécharger le pilote :
ftp://ftp.hp.com/pub/softpaq/sp57001-57500/sp57317.tar
2 - tar xvf sp57317.tar
3 - On obtient un paquet .rpm
Validity-Sensor-Setup-4.4-100.00.x86_64.rpm
On le convertit en paquet debian
sudo alien -d Validity-Sensor-Setup-4.4-100.00.x86_64.rpm
4 - On installe le paquet debian
sudo dpkg -i validity-sensor-setup-4.4-100.00.x86_64.deb
5 - On modifie le script de démarrage
/etc/init.d/vcsFPServiceDaemon
en remplaçant son contenu par
#!/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 5; fi; }
case "$1" in
start)
echo -n "Starting vcsFPService Daemon \n"
start-stop-daemon --start --background --quiet --exec "$vcsFPService_BIN" > /dev/null 2 >&1
;;
stop)
echo -n "Stopping vcsFPService Daemon \n"
#/sbin/killall -TERM $vcsFPService_BIN
start-stop-daemon --stop --quiet --quiet --oknodo --retry=0/1/KILL/5 --exec "$vcsFPService_BIN" > /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
6 - On met à jour les liens de démarrage
sudo update-rc.d vcsFPServiceDaemon defaults
Pour savoir si le service fonctionne ou non :
sudo /etc/init.d/vcsFPServiceDaemon status
7 - Téléchargement de libfprint0
http://suse.mes.edu.cu/SLES_11_SP2/CD2/suse/src/libfprint-0.0.6-18.20.1.src.rpm
8 - Extraire le contenu du paquet rpm avec le gestionnaire d'archives soit par l'interface graphique soit en utilisant la commande :
file-roller -h libfprint-0.0.6-18.20.1.src.rpm
9 - cd libfprint-0.0.6-18.20.1.src/
Extraire
bzip2 -d libfprint-0.0.6.tar.bz2
Untarer :
tar xf libfprint-0.0.6.tar
10 - Patcher pour ajouter le support pour le fingerprint reader validity 0138:003d
cd libfprint-0.0.6/
patch -p1 <../libfprint-validity.patch
moi@uranix:~/Téléchargements/libfprint-0.0.6-18.20.1.src/libfprint-0.0.6$ patch -p1 <../libfprint-validity.patch
patching file libfprint/Makefile.am
Hunk #1 succeeded at 7 (offset -1 lines).
Hunk #2 succeeded at 64 (offset -9 lines).
patching file libfprint/Makefile.in
patching file libfprint/core.c
patching file libfprint/drivers/validity/vfsDriver.c
patching file libfprint/drivers/validity/vfsDriver.h
patching file libfprint/drivers/validity/vfsWrapper.h
patching file libfprint/fp_internal.h
Hunk #1 succeeded at 122 (offset -3 lines).
Hunk #2 succeeded at 149 (offset -4 lines).
patching file libfprint/imgdev.c
11 - Compiler
./configure
make
12 - Remplacer libfprint0 de ubuntu par celle que l'on vient de compiler.
cp libfprint/.libs/libfprint.so.0.0.0 /usr/lib
Attention, s'il y a une mise à jour de libfprint0 alors elle sera remplacée de nouveau par la version d'ubuntu.
Donc en faire une copie de sauvegarde dans /usr/local/lib par exemple.
cp libfprint/.libs/libfprint.so.0.0.0 /usr/local/lib
Mais aussi faire un hold sur la lib en faisant :
echo "libfprint0 hold"|dpkg --set-selections
ou
apt-mark hold libfprint0
13 A partir de là, le fingerprint reader doit être reconnu (bien s'assurer que le service vcsFPServiceDaemon est running...
avec fingerprint-gui on peut enregistrer ses empreintes et tester les différents services comme sudo, screenlocker, etc.
Je mets tous les fichiers sur mon drive google.
https://drive.google.com/fingerprint_reader_files