Commit graph

1238 commits

Author SHA1 Message Date
Daniel Drake
642010643d uru4000: Add support for Microsoft Fingerprint Reader v2
After lot 713, Microsoft fingerprint readers changed. The new version
comes with a new USB product ID and a challenge-response authentication
scheme where the device challenges the authenticity of the driver.

An independent third party produced documentation on the computations
needed to convert a challenge into the correct response, and I then used
this documentation to produce a clean-room reimplementation of the
authentication scheme.
2007-12-07 15:05:16 +00:00
Daniel Drake
474da5f2c7 Add a disclaimer for the university 2007-12-07 15:05:13 +00:00
Daniel Drake
c1f8581ec9 Cleanup discover_device in examples
Andrei Tchijov pointed out that the discover_device() function is written
in a strange way.
2007-12-01 13:00:33 +00:00
Daniel Drake
3479dee0e4 aeslib: image assembly
All 3 authentec drivers now use a shared image assembly function.
2007-11-26 23:28:14 +00:00
Daniel Drake
e228f2c7da Introduce shared functions for authentec drivers
Currently provides register writing functionality only, more common ground
will be moved here soon.
2007-11-26 22:53:41 +00:00
Anthony Bretaudeau
8e0e8e4386 aes1610: imaging improvements
bz threshold is now 10 (instead of 15). I think it is ok for the moment.
If we manage to get higher image quality in the future, we'll change that.

max_frame is set to 350. 150 was too low => incomplete fingerprints

the driver was designed to stop the acquisition as soon as it gets a blank
frame (=> incomplete fingerprints). Now it waits to have at least 50 blank
frames before stopping.
2007-11-26 17:51:31 +00:00
Daniel Drake
4e2be56db7 v0.0.4 release 2007-11-22 18:00:15 +00:00
Daniel Drake
1ee6210be3 Hookup AES1610 driver
An oversight pointed out by Michele B.
2007-11-22 17:25:27 +00:00
Daniel Drake
69700855e2 Implement identification for imaging devices 2007-11-21 00:30:00 +00:00
Daniel Drake
3f70d6f794 Identification infrastructure 2007-11-20 22:12:24 +00:00
Daniel Drake
dbcd293ab3 v0.0.3 release 2007-11-19 18:41:03 +00:00
Anthony Bretaudeau
c5a550e42c Add Authentec AES1610 driver
This is an active capacitance swipe-type device similar to but smaller
than the AES2501.

Image processing performance is good but matching performance is not so
good. The bozorth3 matcher needs tweaking in order to better cope with
small sets of minutiae.

With a lowered threshold, matching performance is good enough for now.
2007-11-19 18:39:03 +00:00
Daniel Drake
6245acea84 Add API to delete enroll data 2007-11-19 18:29:26 +00:00
Daniel Drake
887e0e6acf Add API to access minutiae 2007-11-19 00:27:27 +00:00
Daniel Drake
fa742a2142 Use G_N_ELEMENTS macro 2007-11-17 23:47:06 +00:00
Daniel Drake
af945b2738 Version 0.0.2 2007-11-17 13:17:15 +00:00
Daniel Drake
fa24d51304 Fix variable get_img_width/height return value
Fix the functions to conform to the documentation: -1 means non-imaging
device, 0 means variable. Internally, -1 is used to represent variable
height (to be noticably different from the memset-imposed default of zero).
2007-11-17 13:17:15 +00:00
Daniel Drake
ba24c0884a Rework some image handling; add public binarization API
I want to offer the ability for an application to view a binarized
version of a scanned print. This lead onto a few changes:

 1. Store minutiae and binarized data inside fp_img
 2. Move resize code to the capture path, it previously happened much
    later.
 3. Add fp_img_binarize() to return a new image in binarized form.
 4. Add a BINARIZED_FORM flag to prevent an image being binarized again.

In future, it would be nice to be able to binarize without detecting
minutiae, but this involves some work on the NBIS interaction.
2007-11-17 12:51:28 +00:00
Jan-Michael Brummer
72c304999a Add UPEK TouchChip driver
The UPEK TouchChip is an active capacitance imaging device with a
press-type sensor. It also has image storage capabilities which will
hopefully be accessible through libfprint in the near future.

This device can be found in the Samsung P35 laptop.
2007-11-17 12:51:20 +00:00
Daniel Drake
791eeab859 aes2501: restore default bozorth3 match threshold
With the multiple register writing code, the image quality is much
better. It's trivially easy to get a match score of 100, and 200 is
possible with a little effort. Remove the lowered match threshold.
2007-11-16 15:44:39 +00:00
Daniel Drake
be0e9debd9 aes2501: write multiple registers simultaneously
Instead of writing each register in a separate USB transaction, we now
write up to 16 at once.

This drastically improves scan image quality due to reducing the amount of
time needed per iteration of the sampling loop (sending 1 USB transaction
per iteration instead of 7).
2007-11-16 15:35:48 +00:00
Daniel Drake
bfc55c4f0f Use older ImageMagick API
Debian ship an ImageMagick that is more than 2 years old. Switch to using
older APIs so that we have compatibility all-round.
2007-11-16 14:24:04 +00:00
Daniel Drake
3fa3c0daf7 Initialize enrolled image pointer to NULL
Currently this is a dangling pointer if the image capture fails, and then
we try to standardize an invalid pointer --> crash
2007-11-16 13:14:30 +00:00
Daniel Drake
069b4a30eb Doc and build updates
Add ChangeLog generation makefile target.
Group all copyright notices in AUTHORS.
Update some doxygen comments, and allow fp_dev_close(NULL)
2007-11-15 23:00:04 +00:00
Vasily Khoruzhick
06e8040956 aes2501: Detect reversed scans
aes2501 can be mounted 180 degrees rotated (this happens on most part of
laptops), so driver should detect whether sensor is 180degrees rotated
and assemble frames in right order.
2007-11-15 16:21:03 +00:00
Daniel Drake
6866ea626e v0.0.1 release 2007-11-15 09:56:47 +00:00
Daniel Drake
2ad14c0212 Add AES2501 driver
This driver works quite nicely. Seems a little too sensitive though (too
much black in the standardized image, not enough ridge gap definition).

Processing results are quite good, but you need a good enrollment image
(i.e. long!). It's best to get such images by pressing harder than you
might think necessary and swiping slowly.
2007-11-15 09:54:39 +00:00
Daniel Drake
5485f8031d Return images through enroll/verify path
Added new API functions to obtain images, even when scans are bad, perhaps
a useful way to show the user just how good/bad the scan actually was.

Drivers and examples updated accordingly.
2007-11-15 09:54:39 +00:00
Daniel Drake
a86cd51959 Clean up on exit, and convert to singly-linked-lists
This adds fp_exit() to the public API, intended to be called while the
driving app is shutting down.
2007-11-15 09:54:38 +00:00
Daniel Drake
a76f55db0d upekts relicensing
Pavel Machek and Timo Hoenig agreed to relicense their work. Thanks guys,
I look forward to working together.
2007-11-15 09:54:35 +00:00
Daniel Drake
71e4bb39ec Allow drivers to specify custom bz3 match threshold
aes4000 detects fewer minutiae and hence returns lower scores.
2007-11-12 23:28:46 +00:00
Daniel Drake
e3451158e9 Custom image resizing
mindtct appears to completely ignore the pixels-per-mm input parameter
(ippmm). When processing AES4000 images, the binarized image is
completely mangled and a lot of ridge information is lost.

Resizing the AES4000's small images results in a huge imaging performance
gain.

We use imagemagick for the resizing, as it's resizing code resamples the
image too (smoothing it out), which further improves performance.
2007-11-12 23:28:46 +00:00
Daniel Drake
a73cbc10fb aes4000: image quality improvements
The windows driver takes one sample at the previous register settings
and then changes some registers before resamping (and getting much better
images). The exact changes that it makes seem to vary, perhaps based on
the histogram.

Anyway, this is an approximation of the settings used for the 2nd sample
which should help matching results.
2007-11-12 23:28:46 +00:00
Daniel Drake
b9238e8b8a Support images with variable dimensions
For example, AES2501 returns images that vary in height.
2007-11-12 23:28:45 +00:00
Daniel Drake
e1a25eeb67 Doc update 2007-11-12 23:28:42 +00:00
Daniel Drake
8e7afef736 uru4000: add Digital Persona U.are.U 4000 support
My UareU4000 device isn't working properly -- only seeing an all-white
image and no finger-on detection, however I think this code should work
for working devices.
2007-11-04 21:12:48 +00:00
Daniel Drake
f498fcd1ea Fix img_capture_continuous build
Also enable it in the default development build
2007-11-04 19:10:23 +00:00
Daniel Drake
f733ddcc3b uru4000: retry scanner powerup 3 times
When we include the await_finger_off procedure (i.e. set mode 12), the
current power-up code is unreliable - no 56aa interrupt arrives sometimes.
Comparing the F0 data and hwstat at this point between a working and a
non-working run yields no differences.

Work around this issue by retrying power-on 3 times.
2007-11-04 19:02:38 +00:00
Daniel Drake
cbe1111e4e uru4000: handle images without headers
While testing the new code on my MS keyboard, I found some strange
conditions where occasionally, the device will stop providing images
headers until it is replugged.

Detect and work around this when it happens.
2007-11-04 19:01:51 +00:00
Daniel Drake
2e6c3b940c API documentation 2007-11-04 00:21:54 +00:00
Daniel Drake
7e6f25908b remove imgdev abstraction from public API
Make it easier for application developers, don't have to care about this
level of abstraction which we're intending to make superfluous to them.
2007-11-02 17:06:44 +00:00
Daniel Drake
fc77786e46 uru4000: interrupt handling fixes
This should improve driver stability somewhat. Powerup problems seem to
happen when we receive 3 unrelated interrupts while waiting for the
power-on interrupt, so let's assume that the device can only buffer 3
interrupts, and when the buffer is full, it discards new ones.

When we detect a possible buffer overflow, ask the caller to retry the
operation.

Also, saw the interrupt of death a few times, so add in a warning when
this happens. Haven't seen it since handling interrupt overflows though.
2007-10-31 22:47:04 +00:00
Daniel Drake
07a81b07be upekts: initialise and deinitialise device during verify/capture
Otherwise it heats up, and verify retries fail because we didn't end the
session.
2007-10-31 22:46:50 +00:00
Daniel Drake
fc0a97a801 Build system tweaks
Install fprint.h header
Include headers in distribution
distcheck fixes
Include and install pkgconfig file
2007-10-31 15:44:36 +00:00
Daniel Drake
447b1f01b3 Print discovery
Add concept of "discovered prints" and flesh out the API. A discovered print
was found based on file name but has not been checked for file integrity,
and of course there is no guarantee that it is usable when you try to
use it later (might have been deleted, etc).

The .fprint directory structure was changed - instead of using mnemonics
like "rind" we use their numeric value in the fp_finger enum as the filename.
2007-10-31 13:13:57 +00:00
Daniel Drake
b96aade69c Flesh out driver_id/devtype API
Add accessor functions to the various structures
2007-10-30 22:25:26 +00:00
Daniel Drake
cc3e976042 Add 'discover' hook for drivers
Drivers can now offer a discover function, and are expected to offer the
device devtype during discovery, without accessing the USB device. Hmm.
Maybe we'll have to change that later...
2007-10-30 22:15:45 +00:00
Daniel Drake
f0ef386f43 More NBIS cleanups 2007-10-30 20:55:35 +00:00
Daniel Drake
6f633cc771 Use glib's byte order functions 2007-10-29 23:06:06 +00:00
Daniel Drake
294f9ad447 Improve print_data structure and on-disk format
Drivers now have an ID number. These will be assigned by me and documented
on the wiki. 0 cannot be used.

Drivers now define a devtype for each device they initialise. This is to
cope with the situation where a driver can support varying devices where
their print data is incompatible (i.e. image scaling is totally changed).
This doesn't apply to any existing supported devices.

Print data no longer includes driver name, and includes driver ID instead.

Paths to saved print data now include driver ID and devtype, and no longer
include driver name.

APIs exposed for converting a print_data into a blob which can then
be loaded back again later. Useful for systems who don't want to use
my simple storage system (which is only aimed at a single user).

File format is now defined and will be documented on the wiki. The header
is larger as we can no longer rely on directory paths in all scenarios.

Print data compat check now checks devtype and driver ID.
2007-10-28 22:13:51 +00:00