El Tue, 18 Dec 2007 11:54:13 +0000
Daniel Drake <[EMAIL PROTECTED]> escribió:
> Gustavo Chain wrote:
> > Hi Folks.
> >
> > I'm developing the Secugen-FDU2000 driver for fprint.
> > Currently it show the finger image and make the match.
> >
> > I need testers for feedback (please)
>
> Cool! How did you write the driver? (are specs available, did you
> reverse engineer it, or what?)
A mix of both.
Secugen offer a API builded on top of libusb, so I add some code to
libusb, and I started to see what their API was doing.
After a week a work partner, send an spec with sample code.
>
> Can you post the "lsusb -v" output for this device?
>
Sure:
$ lspci -v
[...]
Bus 004 Device 004: ID 1162:0300 Secugen Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
idVendor 0x1162 Secugen Corp.
idProduct 0x0300
bcdDevice 20.30
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 55
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
[...]
> How well is imaging working? i.e. can you verify and identify
> accurately?
I think not enough, the verification/identification works but you have
to put the finger in the /exactly/ same position to make the match.
>Roughly how many minutiae are detected per image? What's
LEFT_THUMB = 20 .. 30 minutiae
LEFT_INDEX = 20 .. 30 minutiae
LEFT_MIDDLE = 30 .. 40 minutiae
LEFT_RING = 30 .. 40 minutiae
LEFT_LITTLE = 35 .. 45 minutiae
> the usual kind of bozorth3 match score for scanning the same finger
> twice?
How can I get that score ¿? ;-)
>
> I have not heard of this sensor before and don't think it's been
> mentioned on the list, so I wouldn't be surprised if nobody has one.
> I might be wrong though :)
http://www.secugen.com/
>
> > TODO:
> > 1º Code cleanup.
> > 2º Resample Image 398x300 -> 260x300
>
> Why? Is this some kind of anti-distortion?
The spec talks about a bilinear-resampling and an OPP correction.
>
> A few comments on the code:
>
> > #include <errno.h>
> > #include <string.h>
> > #include <unistd.h>
> >
> > #include <usb.h>
> >
> > #include <fp_internal.h>
> >
> > #define FP_COMPONENT "fdu2000"
>
> FP_COMPONENT needs to come before other includes in order to take
> effect.
You're right. done!
>
> > bytes = usb_bulk_write(dev, USB_ENDPOINT_TYPE_ISOCHRONOUS,
> > cmd, sizeof(cmd), BULK_TIMEOUT);
>
> Your use of the endpoint field is wrong. I really doubt this is an
> isochronous endpoint, because you're using a function for a bulk
> endpoint, and libusb doesn't support isochronous endpoints :)
>
> Instead you should be using something like: 1 | USB_ENDPOINT_IN
>
that endpoint was taken from the /instrumentation/ of libusb, I've
tried with 1 | USB_ENDPOINT_IN and is not working.
> > if (bytes < 0) {
> > fp_err("%d: %s", __LINE__, usb_strerror());
> > }
>
> I'd prefer a meaningful error message rather than a line number, as
> these will change between releases etc.
ok, no problem, but at this moment, it is a very experimental driver,
those mesages will be changed (after code cleanups)
>
> I'll leave further comments for when you've had a chance to do your
> planned code cleanups. Thanks a lot for doing this, I look forward to
> including it in libfprint :)
That would be nice. :)
>
> Daniel
>
Bytes!
--
Gustavo Chaín Dumit
http://0xff.cl
_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint