Commit graph

69 commits

Author SHA1 Message Date
Daniel Drake d482228325 upekts: Don't choke on non-zero bytes in command response
Alon Bar-Lev's device behaves differently, but seems to work fine with
upekts even if we ignore the difference.
2008-11-20 19:59:43 +00:00
Bastien Nocera 29044d9ca9 Export scan type for each driver
For each driver, export the scan type supported by the devices it
handles. This allows front-ends to direct the user better.
2008-11-20 14:53:01 +00:00
Daniel Drake 2d30e40ed7 aes2501: Add AES2500 ID
Reported to work with Motion Computing M1400 tablet by Daniel Hazelbaker
and Alex Van Deusen.
2008-11-02 14:49:39 +00:00
Daniel Drake 6b8b17f575 Split imagemagick hack from main library
Cleans up the conditional compilation system
2008-08-10 14:41:13 -05:00
Daniel Drake 3915cb2622 Add upeksonly driver for UPEK TouchStrip sensor-only devices
The long awaited 147e:2016 reverse engineering efforts.
Image quality is OK, not brilliant - a little fuzzy, but it works
quite well.
2008-07-09 03:25:09 +01:00
Vasily Khoruzhick aa7c8ae81e Adapting to latest libusb-1.0 changes
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
[dsd: remove config const qualifier and add freeing of config]
2008-05-13 18:17:37 +01:00
Daniel Drake 63421e3fd6 uru4000: fix compile against latest libusb 2008-05-07 23:46:06 +01:00
Daniel Drake 76cbf21223 uru4000: Add support for Digital Persona U.are.U Fingerprint Keyboard
Reported by Tudor Panaitescu
2008-05-02 11:55:50 +01:00
Daniel Drake ebcabc1ade uru4000: avoid cancelling a completed transfer 2008-04-12 16:58:49 +01:00
Daniel Drake 870ddfb905 some libusb pointers are now const 2008-04-06 23:55:41 +01:00
Vasily Khoruzhick 40e7ac195a Adapting to latest libusb
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2008-04-06 23:52:04 +01:00
Azzie 1ab52617c7 Update for latest libusb constant names 2008-03-29 18:11:17 +00:00
Daniel Drake 981f2eb0aa vcom5s: implement finger detection
Uses thresholding of average pixel intensity of the center region of
the image.

Also document guessed meanings of magic numbers for registers.
2008-03-20 15:31:03 +00:00
Daniel Drake d6d4e56ccf uru4000: add fwenc search location for UareU4000
ticket #14 includes a device with a different firmware, this should get
it up and running.
2008-03-20 13:34:48 +00:00
Daniel Drake c9ff2c5541 Add Veridicom 5th Sense driver
Based on bus traffic analysis of the windows driver. This device is
working well, but finger presence detection is not yet implemented.
2008-03-19 23:52:28 +00:00
Daniel Drake a11ac7d8f8 uru4000: search for encryption byte
New DigitalPersona devices have a new firmware. We now use a search
scheme to find the encryption byte, by examining known locations
in the firmware until we find something that we recognise.
2008-03-19 17:56:21 +00:00
Daniel Drake fb49c24ae2 uru4000: Unify register I/O 2008-03-19 17:56:13 +00:00
Daniel Drake d3d68be490 uru4000: fix register widths
Encryption byte address was being truncated in the sm_fix_fw_read_cb
path
2008-03-19 17:56:08 +00:00
Daniel Drake 4e884807a7 Update for libusb API rework 2008-03-10 13:33:23 +00:00
Daniel Drake 07a42d5f91 uru4000: Retry initialization 3 times
Sometimes we don't get the powerup interrupt, so retry the whole process
up to 3 times if we time out waiting for the interrupt.
2008-03-03 23:29:03 +00:00
Daniel Drake 2d27df0268 Allow timeouts to be cancelled 2008-03-03 23:28:17 +00:00
Daniel Drake 88e9f4a5f8 Public async API implementation
Involved some internal overhaul/reorganisation. Nice side effect is that
the synchronous API is now expressed purely in terms of the public async
API.
2008-03-01 13:02:17 +00:00
Daniel Drake 83f9da1b87 uru4000: port to asynchronous model 2008-02-18 18:12:52 +00:00
Daniel Drake eff26bf0be aes2501: port to asynchronous model 2008-02-16 12:49:58 +00:00
Daniel Drake 77b5dab04b aeslib: introduce user_data for write registers callback
aes2501 needs this for state tracking
2008-02-16 12:49:27 +00:00
Daniel Drake d914712437 aes4000: port to asynchronous model 2008-02-16 12:49:17 +00:00
Daniel Drake aeeec97fb2 upekts: port to asynchronous model 2008-02-16 12:48:25 +00:00
Daniel Drake bf7093d607 Port to libusb-0.9.0 (synchronous I/O)
Straightforward port to libusb-0.9.0 sync I/O functions, to give libusb-1.0
a bit of a test drive and to create a reference point for later.
2008-01-30 14:16:35 +00:00
Gustavo Chain 6f456f399d Add Secugen FDU2000 driver
[dsd@gentoo.org: some trivial changes:
fixed some warnings
fixed fp_img memory leak on error
renamed endpoint constants (calling a bulk endpoint 'ctrl' is confusing,
as a control endpoint is something different)
]
2007-12-27 01:09:32 +00:00
Daniel Drake 659d8346be Compiler flags update
Dropped -Wextra as it is not that useful.
Set compiler flags to be more like the kernel's.
Set std=gnu99
Fixed some warnings.
2007-12-27 01:06:55 +00:00
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 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
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 fa742a2142 Use G_N_ELEMENTS macro 2007-11-17 23:47:06 +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
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 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 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 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