Fingerprint Reader

Finally found time to fiddle around with the fingerprint reader, and getting it to work was easier than I thought. The HowTo in the ThinkWiki was very helpful, as usual.

There are 4 components to make the whole thing work:

  • the BioAPI framework to use various biometric authentication systems, Debian packages (and lots of infos about Linux and Biometrics) can be found at Michael R. Crusoe's great website http://www.qrivy.net/~michael/blua/. Note: I used the package (version 1.2.3) found in http://www.qrivy.net/~michael/temp/ because it was the only version that worked in all respects. YMMV.
  • the driver (called Biometric Service Provider, BSP) for the fingerprint reader in the Thinkpad provided by UPEK, Inc., the direct link to the download page is http://www.upek.com/support/dl_linux_bsp.asp.
  • the pam_bioapi module found at http://www.qrivy.net/~michael/blua/pam_bioapi/, which makes the BioAPI accessible from the Linux PAM system.
  • a pam configuration for the services that should use the fingerprint reader, e.g. the login in the text console or in the graphical display manager. And of course you need to collect fingerprints of the users that should be able to use the reader for authentication. If no sample fingerprints are found or if they do not match, the system falls back to using passwords.

BioAPI framework

Just installe the downloaded .deb file with

dpkg -i bioapi_1.2.3_i386.deb

Ignore the warning about not finding /usr/lib/libqtpwbsp.so, it's not fatal.

UPEK Fingerprint BSP

The software comes in a zip file, so

apt-get install unzip

if you haven't got it installed already. Then create a new directory and change into it, then unpack and install the driver:

mkdir fingerprint-driver
cd fingerprint-driver
unzip -q /path/to/the/downloaded/UPEK_BSP_file.zip
sh install.sh

pam_bioapi

It's necessary to use a patch from http://badcode.de/downloads/fingerprint.patch to make the pam module work, I also attached the fingerprint.patch file below in case it vanishes from the current URL.

Otherwise the installation is straightforward with the usual 3 steps ./configure, make and make install: (make sure you have libpam-dev or specifically libpam0g-dev installed)

tar -xjf /path/to/the/downloaded/pam_bioapi-0.2.1.tar.bz2 
cd pam_bioapi-0.2.1/
patch -p0 < /path/to/the/downloaded/fingerprint.patch
./configure
make
make install

Enrolling users and PAM configuration

Since the BioAPI framework could work with various biometric devices each and every one of them has a unique serial number (a long hexadecimal number) called Module ID. The process of gathering sample fingerprints and the PAM configuration both need the Module ID of your fingerprint reader. You can print the ID in the needed format with the following rather ugly command:

BioAPITest | sed -ne "/Fingerprint/{n;n;s/^.*: \(.\{9\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/gp}"

The result, in my case {5550454b-2054-464d-2f45-535320425350} (check if your ID differs and change accordingly in the following steps), is needed in several places. First create a directory in /etc/bioapi1.10/pam with that name, e.g. with

mkdir -p /etc/bioapi1.10/pam/{5550454b-2054-464d-2f45-535320425350}

Into that directory the files containing the sample fingerprints (one file per user, with .bir as extension) need to be copied. Creating these files is done using the Sample program that comes with the UPEK software (in the NonGUI_Sample subdirectory), which needs to be made executable first. Then run it (from the current directory with ./Sample), choose "enroll" and enter a valid username. You'll then be prompted to collect 3 fingerprints. Once you're done, choose "quit" and look into the current directory. It should contain a .bir-file for the username you just entered. Copy that file into the directory created in the last step. E.g. for the user spiney:

cd /path/to/fingerprint-driver/NonGUI_Sample
chmod a+x Sample
./Sample
cp spiney.bir /etc/bioapi1.10/pam/{5550454b-2054-464d-2f45-535320425350}

Repeat for each user you want to use the fingerprint reader with.

The next and final step is to configure services to use the pam_bioapi module as authentication source. For each PAM-aware service there's a configuration file in /etc/pam.d/ plus the fallback configuration file called common-auth which you could use to enable the reader system-wide. I just enabled it for gdm (the Gnome Display Manager, i.e. the graphical login) and login (for the text consoles) by adding the following line before the line with @include common-auth:

auth       sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/

Note: by using the complete path to the pam_bioapi.so module it's not necessary to copy it to /lib/security.

After that logging in using the fingerprint reader should work for configured services. If not, check /var/log/auth.log for any pam-related error messages.

Using the fingerprint reader with programs that run as unprivileged user

For PAM-aware applications like xscreensaver which are run as normal user without root privileges it's necessary to change the permissions on two files so that files can be read and written:

  • /var/log/BSP.log (the log file of the UPEK driver, since this is a beta release there's no way to disable logging)
  • the entry for the fingerprint reader USB devices in the /proc filesystem, something like /proc/bus/usb/004/002

The latter can be printed with the following command:

echo /proc/bus/usb/`lsusb | sed -ne "/0483:2016/s/Bus\ \(.*\)\ Device\ \(.*\):\ .*/\1\/\2/p"`

Either set to permissions on both to world read/writeable (pass 666 to chmod, probably ok security-wise since notebooks are single user systems in most cases) or assign a special group to them and give it write permission, and then add all users that should be able to use the fingerprint reader to that group. In my case I used the group adm, because my normal user was already member in it (I do like to read log files without changing to root). So I did the following

chgrp adm /var/log/BSP.log
chmod g+rw /var/log/BSP.log
DEVICE=/proc/bus/usb/`lsusb | sed -ne "/0483:2016/s/Bus\ \(.*\)\ Device\ \(.*\):\ .*/\1\/\2/p"`
chgrp adm $DEVICE
chmod g+rw $DEVICE

Since you have to set the permissions on the proc entry every time you boot (or come back from suspend/hibernation), it's best to put the last three lines into some shell script that gets run every time you boot.

Now also non-root users can use the fingerprint reader. The only application at the moment that comes to mind and is PAM-capable is xscreensaver. It needs a patch from http://nax.hn.org/pub/bioapi/xscreensaver-4.22_alternativeAuth.diff by Josef Hajas so that you are first asked to swipe your finger and it falls only back to password authentication when that fails. You can either get the source code from the xscreensaver website, but if you run Debian sid you can also download my patched xscreensaver package (built from the current source from Debian via apt-get source) which is attached below. I'll try to keep them updated whenever there's a new version in Debian until the patch makes it into the xscreensaver source code upstream. But I disclaim all warranties regarding that package, so beware!

Now just change /etc/pam.d/xscreensaver to

#
# /etc/pam.d/xscreensaver - PAM behavior for xscreensaver
#

auth sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/
@include common-auth

and add the following option

alternativeAuth: True

to your ~/.xscreensaver configuration file, restart xscreensaver and you're set. Lock the screen, press a key and there should be the window telling you to swipe your finger over the reader.

Again, if it doesn't work, take a look into /var/log/auth.log and check those file permissions.

New patch for xscreensaver

Since the original patch was sometimes confusing to the user (see Brice Goglin's comment below) I tried to come up with a different approach: use a different PAM configuration for xscreensaver when using the alternativeAuth option.

Below is the patch (xscreensaver-4.23_fingerprint.patch) and also an updated version of the package for Debian sid (xscreensaver_4.23-3fingerprint_i386.deb). To use it, follow the instructions above, but instead of modifying /etc/pam.d/xscreensaver (if you did already, remove the bioapi line again), create a new file /etc/pam.d/xscreensaver-alternative with the following content:

#
# /etc/pam.d/xscreensaver-alternative - PAM behavior for xscreensaver
# when running with alternativeAuth
#

auth sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/

Again, I disclaim all warranties regarding the patch and the package, so beware!

Sections:

Comments

Anonymous's picture

Hi,

Thank you for this page. I got xscreensaver's locking to work with the fingerprint.

But I would like to understand/fix how it reverts to password when fingerprint's authentication fails 3 times: It asks for the password. But, if I enter the right password, I get asked for fingerprint again before I finally exit xscreensaver's locking (even if I fail the fingerprint authentication again).

I tried to tweak in my pamd.d/xscreensaver but wasn't able to fix it. Any idea ?

Thanks in advance,
Brice

Wolfgang Karall-Ahlborn's picture

is far from perfect I guess, so it's a matter that has to be solved in the xscreensaver source code. If I happen to find time during the holidays, I might take a look and try to come up with an updated patch.

But it can't be solved by twiddling around with the PAM configuration, that's for sure.

Anonymous's picture

in section "UPEK Fingerprint BSP" i add to run "sh install.sh /usr/lib/" instead of "sh install.sh" for the driver version 1.0

Anonymous's picture

I add to install "libpam0g-dev" first before being able to configure : "apt-get install libpam0g-dev".
The error was : "configure: error: cannot find required header: security/_pam_macros.h"

Wolfgang Karall-Ahlborn's picture

I forgot to mention the build dependency on libpam-dev, I'll update the page with the information.

Anonymous's picture

Was anyone able to get the kdm login to work with the finger print scanner?
I downloaded the source and compiled it with the qt stuff disabled and now it works...

rogue's picture

hello,reading at all the talks, it seems that xscreensaver first authenticate using the fingerprint scanner then if it fails, it will authenticate via password.. mine is the other way around, it will authenticate via password first then when i press enter system will ask me for finger.

why is that so? i can't get it... i followed all in here http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader#Make_xscreensaver_use_the_scanner and its successful but y is it my xscreensaver is authenticating by password first instead of fingerprint?

please help...thanks

Wolfgang Karall-Ahlborn's picture

this sounds like a problem with the ordering of the pam-modules called by xscreensaver, could you provide the relevant files from /etc/pam.d/ ?

rogue's picture

what do u mean relevant files in /etc/pam.d?
my xscreensaver script contains only
auth include common-auth

and another thing, where can i find the .xscreensaver configuration file? i can't check if it has the line
alternativeAuth: True

sorry im not so expert in linux..:(

Wolfgang Karall-Ahlborn's picture

what's in /etc/pam.d/common-auth then since this is included? Make sure that the

auth sufficient pam_bioapi.so ...

line is the first one of the lines starting with "auth".

And .xscreensaver can be found in your home directory, as in /home//.xscreensaver

rogue's picture

the script in common-auth are same with the how to in thinkwiki page.
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
password sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
auth required pam_unix.so nullok_secure

at first, when i havent installed xscreensaver with pam the config was:
auth include common-auth
account include common-account
password include common-password
session include common-session

then when i install the xscreensaver with pam the config turns to:
auth include common-auth

it seems to me that my common-auth pam is fine but y is it that password is being asked first before fingerprint? Sad

huh?! :O the .xscreensaver cant be found in /home// folder. :?
that's why i can't see if the alternativeAuth: True exists :?
when it was generated? can u tell me exactlly on how to get this file?

one more thing, i think the patch doesnt work for me.. i mean in the forums i have read that tweakling the pam configurations is not the answer. the right thing to do is the patch (i forgot the URL..sorry) i am using the latest xscreensaver found in the http://www.jwz.org/xscreensaver/ which is xscreensaver24 and ur patch below(not for debian coz im using suse). i dont know how patch works but can u please help me have a patch that will authenticate first by fingerprint then if failed, password prompt..
please help..im going crazy... Sad :?

Wolfgang Karall-Ahlborn's picture

.xscreensaver is found in /home/<username>/.xscreensaver, as in the home directory of your user (I forgot to escape the special html characters in my last comment and of course I didn't catch that in the preview).

About the patch: you have to extract the source code, "cd" into the resulting directory and run

patch -p1 < /path/to/the/fingerprint.patch

Afterwards you have to install the software as described in the README file that comes with it. But the patch will probably not apply cleanly to version 4.24, and I haven't had time to update it, so use 4.23 instead.

And about your pam config files: first of all, don't put lines starting with "password" in common-"auth", that file is meant for pam authentication modules (hence the name). Otherwise they don't look totally wrong, but I'm just guessing, since I can't quite tell which file is which from your comment.

Anonymous's picture

Thank you very much for the nice HowTo.
One thing that I'd like to know is that is there any way to have multiple fingerprints registered as available in the windows environment?

Wolfgang Karall-Ahlborn's picture

I think the latest pam_bioapi which is able to store the fingerprint data in database files (see the LinuxBiometrics website) is trying to support that, but I haven't fiddled around with it yet.

Anonymous's picture

Well, there seems to be some problem with nax's homepage. Can't get his sqlite3 supported bio-api code for multi-bir.

rogue's picture

tnx for evrythn but still it doesnt work. password dialog box appears first before fingerprint window. i used xscreensaver4.23 and ur patch which seems workin coz i studied it manually. everytngs seems fine and i can see the .xscreensaver configuration file in my home folder,
then i put alternativeAuth: True

and made a xscreensaver-alternative file in /etc/pam.d, and on that file i solely put
auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-35320425350} /etc/bioapi/pam

but still after xscreensaver, then if i make any move (keypress or mouseclick) password dialog box appears first before fingerprint window.

is there someting that i missed??? Sad :?
what could be the wrong thing that im doin????:?:?:?pls help.im depending on u.:(

Wolfgang Karall-Ahlborn's picture

and stranger: could please run

strings $(which xscreensaver) | grep alternativeAuth

and see if it returns alternativeAuth? (just to check you're running the correct version)

If it does please run

killall xscreensaver
xscreensaver -verbose

to restart xscreensaver in verbose mode and post the output. (if possible between <pre> and </pre> tags)

rogue's picture

yes, alternativeAuth is returned.

For the verbose output:
xscreensaver 4.23, copyright (c) 1991-2005 by Jamie Zawinski .
xscreensaver: initial effective uid/gid was root/adm (0/100).
xscreensaver: changed uid/gid to rogue/adm(1000/100).
xscreensaver: in process 16797.
xscreensaver: 10:40:15: 0: xscreensaver-gl-helper: GL visual is 0x24.
xscreensaver: 10:40:15: running on display ":0.0" (1 screen).
xscreensaver: 10:40:15: vendor is The X.Org Foundation, 60802000.
xscreensaver: 10:40:15: useful extensions:
xscreensaver: 10:40:15: MIT Screen-Saver <-- not supported at compile time!
xscreensaver: 10:40:15: Shared Memory
xscreensaver: 10:40:15: Power Management
xscreensaver: 10:40:15: GLX <-- not supported at compile time!
xscreensaver: 10:40:15: XF86 Video-Mode <-- not supported at compile time!
xscreensaver: 10:40:15: Resize-and-Rotate <-- not supported at compile time!
xscreensaver: 10:40:15: screen 0 non-colormapped depths: 24.
xscreensaver: 10:40:15: consulting /proc/interrupts for keyboard activity.
xscreensaver: 10:40:15: 0: visual 0x23 (TrueColor, depth: 24, cmap: default)
xscreensaver: 10:40:15: 0: saver window is 0xc00001.
xscreensaver: 10:40:16: selecting events on extant windows... done.
xscreensaver: 10:40:16: awaiting idleness.

may i know on your environment the behavior of fingerprint scanner when user want to go in after idle time?
please tell it to me in detailed.. thank you so much.. ur an angel..:)

Wolfgang Karall-Ahlborn's picture

actually I want to see the verbose output for one lock-unlock cycle, not just the verbose start-up messages. Smile

rogue's picture

thank god.. its working!!! tnx for ur help dude..... i owe u 1..... Smile Biggrin

Wolfgang Karall-Ahlborn's picture

just so other people can read your solution in case they have the same problem. Smile

rogue's picture

i'm so stupid. i forgot the permission for the fingerprint scanner. like the script here which includes $DEVICE.
whew!!!!!! when i tried doing that part, its ok!

thx dude..... glad to be of service..... Smile Wink

Anonymous's picture

HI There ..

Well, i've got some troubles to make Fingerprint work : I've done all the tutorial, but when I start Sample, I get the following error :
Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
Cannot find UPEK BSP

If I make the command BioAPITest | sed -ne "/Fingerprint/{n;n;s/^.*: \(.\{9\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/gp}", I get the following ID :
{5550454b-2054-464d-2f45-535320425350}
which seems to be the same as everyone ....

Any idea

Thanks in advance Wink
Ikare - Reunion Island

Anonymous's picture

I would highly appretiate if someone knows how to make the sample "know" where to find its UPEX BSP...

Anonymous's picture

Hello,
please find below the output, when I try to run ./Sample

# ./Sample
Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
This beta version of UPEK BioApi expired
BioAPI Error Code: 6477 (0x194d)

do you have any idea how i could fix that? I would be very glad. Thank you in advance, masc

Anonymous's picture

http://www.upek.com/support/dl_linux_bsp.asp

here is now the non-beta version without expiration..
it has the same procedure so far..

Wolfgang Karall-Ahlborn's picture

you're absolutely right, I should've mentioned the fact that there's a non-beta release out (and only for about 5 months too). I missed that, will update the page ASAP.

Anonymous's picture

Hiho

The Fingerprint driver installer install.sh search for the bioapi libs in /usr/local/lib
the Debian .deb file installs the files into /usr/lib

u need to chance the install script.

silicium at natural-geek dot org

Anonymous's picture

The patch also applies almost cleanly to xscreensaver 5. I have fixed a few things by hand, and you can get the patch for xscreensaver 5.00 here: http://www.zzamboni.org/brt/2006/04/25/106/

Anonymous's picture

Hi

$ sudo Sample
Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libqtpwbsp.so
Description: BioAPI QT Password BSP
Vendor: BioAPI Consortium
Module ID: {baa748a2c0c74797a60d4630ecc1e5fd}
Device ID: 0x00000000
BSP Index= 3
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
Please enter your user id
xxx
Please enter your password for enrollment:
xxx
Please enter your password for verification:
xxx
MATCH!
Ending Sample Application

QSample give me 0x194d when I select "TouchChip TFM/ESS Fingerprint BSP"

I'm runing a debian unstable with 2.6.17 kernel on a vaio SZ2XP/C
# lsusb
Bus 003 Device 004: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader

any idea ?

thx.

Anonymous's picture

When i run the sample programm i get this output

Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d)

Can somebody help me please?

Anonymous's picture

Same problem on a Vaio SZ3XP/C with Ubuntu 6.10.
What is your distro/kernel version ?

Anonymous's picture

Hello,

My problem is that Sample only asks me for password
and not for fingerprints. (I also tried to recompile it, but apparently
it relies on an older version of bioapi with incude/port/... file
which does not exist in 1.2.3.) Is it normal that it says 0x0 as
Device Id? I enclose $(Sample) and $(lsusb) below;
I am running kernel 2.6.16.27 on IBM T43 with Debian etch.

I would appreciate an answer to hirsch at pdmi dot
ras dot ru

--Edward

# Sample
Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000

# lsusb
Bus 004 Device 001: ID 0000:0000
Bus 004 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000

Anonymous's picture

I can see im not the only one with this problem, but I cant seen to find a solution. This is what happens:

When i compile NonGUI Sample and run it (after commenting out the include port.h line):
Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
Please enter your user id
vishnu
Please enter your password for enrollment:
killer
Please enter your password for verification:
killer
MATCH!
Ending Sample Application

Why does it ask me for my password and not my fingerprints?

Any help is greatly appreciated!

Anonymous's picture

Sorry for reposting, but i forgot to say something.
This is what happens when i run the Sample app i compiles from the NonGUI directory:

Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d)

And this is what happens when i run the Sample included int the bioapi_1.2.3_i386.deb package:

Starting Sample Application
Major=1 Minor=10
BSP Index= 0
BSP Name: libbioapi_dummy100.so
Description: BioAPI v1.1 Dummy BSP
Vendor: Example Vendor
Module ID: {ffffffffffffffffffffffffffffffff}
Device ID: 0x00000000
BSP Index= 1
BSP Name: libpwbsp.so
Description: BioAPI Password BSP
Vendor: BioAPI Consortium
Module ID: {263a41e071eb11d49c34124037000000}
Device ID: 0x00000000
BSP Index= 2
BSP Name: libtfmessbsp.so
Description: TouchChip TFM/ESS Fingerprint BSP
Vendor: UPEK, Inc.
Module ID: {5550454b2054464d2f45535320425350}
Device ID: 0x00000000
Please enter your user id
vishnu
Please enter your password for enrollment:
***
Please enter your password for verification:
***
MATCH!
Ending Sample Application

Any idea on how i can fix these programs so that i can enroll my fingerprints? Why does the module fail/why does it ask me for a password (any) instead of fingerprints?

Anonymous's picture

Hello,

I don't know why the Sample proggy asks you for a passwd.
I was googling around and found out, that you should compile
the bioapi with qt support. Then you will have a QSample
witch will let you do an enrollment....don't ask why this doesn't
work with Sample.......hmmm

I had the same problem with Sample.....switched to QSample
and am now having the "BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d)"
problem....

Did you fix that one?

best regards.....

Anonymous's picture

I had the same problem - after .deb install, running Sample prompts for password, but not fingerprints. I solved it by following instructions from http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader#Installing_and_configuring_the_driver:

# cd NonGUI_Sample
Edit main.c and remove (or comment out) the line #include "port/bioapi_port.h"
# gcc -o Sample main.c -L/usr/local/lib -lbioapi100 -DUNIX -DLITTLE_ENDIAN
# ./Sample

Anonymous's picture

I have exactly the same behavior on a Sony Vaio VGN-SZ3XP

Sample from .deb ask me passwords and Sample included in the driver returns
BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d)

I'm running Debian Testing, kernel 2.6.18-3-686

any ideas?

thanks

Anonymous's picture

In the main.c of bioapi u have #define PASSWORD_BSP 1. this definition force the code to use password bsp. if u change 1 per 2. u will obtain the same error... what is ti the solution for this error?... i don't know...yet

Anonymous's picture

And with the sample in TFMess/NonGUI_Sample, did you have the same error ?

I obtain : BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d)

(I've uncomment the line BioAPI_SetGUICallbacks(gModuleHandle, NULL, NULL,TextGuiCallback, NULL); but it's still failing)

and with the tools from Pavel
http://atrey.karlin.mff.cuni.cz/~pavel/outgoing/thinkfinger
to generate my sample fingerprint.bir but it failed too :

Device found.
Initializing...
Preparing enroll...
Ready.
Communication failed.

Any idea to solve that ?

Thanks

Anonymous's picture

i can enrole the users using the sample program and i copied the database over and tried changing the permissions. im running ubuntu 6.10 on t43p, but gdm doesnt seem to be able to open the database?!?

/var/log/syslog:
gdm[29788]: gdm_slave_wait_for_login: In loop
gdm[29788]: DEBUG:"SELECT uid,header,data,signature FROM biodata WHERE uuid = '{5550454b-2054-464d-2f45-535320425350}' AND uid = 1000 ORDER BY uid ASC;"
gdm[29788]: Can't open database: unable to open database file
gdm[29788]: Couldn't authenticate user

root@xyz:~# ls -la
-rw------- 1 root root 208 2006-11-05 02:24 /etc/bioapi/pam/{5550454b-2054-464d-2f45-535320425350}/whazoo.bir

When i try to login using gdm and user whazoo nothing shows up, just the usual gdm login, username -> pass.. but no fingerprint window or anything like that..

anyone know how to fix this?

Anonymous's picture

I don't know if I'm the only one caring about NOT USING propierty software.

In fact, I told myself "Ok, let's try this software", refering to UPEK one, and I inmediatelly got stuck, as I'm not using x86 arch.

So, is this really useful?

I'm afraid we still falling in the same stupid reasons like "I have to use it 'cause the vendor didn't provide the source code".

From now on, I'm going to send my complains to the seller company for not caring about users.

Have a nice day,

Dererk

Anonymous's picture

Hi,
I am facing the same problem
BioAPI_ModuleLoad failed, BioAPI Error Code: 6477 (0x194d).
I have tried to solve the issue by uncommenting the line
//BioAPI_SetGUICallbacks(gModuleHandle, NULL, NULL,TextGuiCallback, NULL);
but the same error occurs.

Thanks for any help.

Anonymous's picture

I've been going through your steps and have had no issues up until sample. It looks like its not there at all. What am I missing guys? Thanks.

/TFMESS_BSP_LIN_1.0/NonGUI_Sample$ chmod a+x Sample
chmod: cannot access `Sample': No such file or directory

/TFMESS_BSP_LIN_1.0/NonGUI_Sample$ ls
GUImsg.inc main.c

Anonymous's picture

I managed to enroll a finger print with the Sample program, and that much works well. However, after adding the lines to the files to /etc/pam.d/login or /etc/pam.d/gdm, for example, I always get this error in /var/log/auth.log after typing in a username at the login prompts. I am never prompted to swipe my finger, and doing so yields no result at the password prompt. Any ideas?

pam_bioapi[5515]: BSP is mandatory parameter. Please specify it!
pam_bioapi[5515]: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=tty4 ruser= rhost= user=smith70

Anonymous's picture

I have a problem with enrolling.
"Sample" work corrent, I choose "enroll" and enter ID, window to enroll pop out, but after that Sample hang. It use 100% of CPU. What is wrong? Interesting thing is that if I enroll just after enter username it is possible to enroll three times befor sample hang.
Sorry for my English.

Anonymous's picture

This page has proven very helpful—much easier to understand than the thinkwiki page—but I still haven't managed to get my fingerprint reader to work. I now get as far as the 'swipe finger' GUI prompt, but when I swipe my finger, nothing happens. This is on a ThinkPad X60s running Ubuntu Intrepid.

I've pretty much followed the steps on this page but I compiled the main.c TFMESS_BSP_LIN_1.0 by hand. (When I didn't, Sample didn't recognise my username and password.) (One other thing that was odd was that the TFMESS_BSP_LIN_1.0.zip I downloaded contained three more zip files, two for FreeBSD and a third one for Linux by the same name.) I also used sudo pretty much every step on the way; I prefer not to log in a root.

Any ideas? Thanks.