[fprint] Writing a driver for UPEK 147e:1002

Vasily Khoruzhick anarsoul at gmail.com
Tue Mar 12 00:11:00 PDT 2013


On Tue, Mar 12, 2013 at 1:43 AM, Nikola Hardi <atlantic777 at lugons.org> wrote:
> Hi!

Hi Nikola,

> I would like to see this device (UPEK 147e:1002) supported and I would like
> to volunteer as much as I can. I own this device (it's built in ThinkPad
> Edge e420) and I'm interested in learning about USB protocols, devices,
> writing new device drivers for Linux and about reverse engineering working
> drivers.

I'm working on 147e:1001 support now, hopefully it's possible to
disable encryption for it
with UPEK's proprietary library. Please see attached source file, it's modified
AnsiIsoImage sample from BSAPI proprietary library (you can find it on
AuthenTec site).
I was able to produce non-encrypted USB traffic with this sample.
Replace shipped AnsiIsoImage/main.c with
attached one and recompile sample. To capture USB traffic you can use
usbmon (it's a kernel module) and tcpdump/wireshark.

> I'm not sure where to start. I'm reading about Linux drivers and things like
> char device, ioctl and similar but it seems that libusb is better choice for
> learning and pyusb is interesting. I don't have a clue which device class
> fingerprint readers belong, what are interfaces, what transfer modes exist
> but I'm reading about it and it just would be nice if you could share few
> hints and suggest me where to go.

Fingerprint driver is a completely userspace thing, it has nothing to
do with kernel.
With current architecture all it does is providing fingerprint image
to the library.
Generic code flow of driver is following:

init device -> send wait for finger cmd -> finger is on sensor -> send
capture image cmd -> read image -> deinit device

See libfprint/libfprint/drivers/aes2550.c, this one is quite simple.

> And an interesting thing, I found this in libprint/drivers/upeksonly.c :
>
>         * TCS4C (USB ID 147e:1000) support:
>         * Copyright (C) 2010 Hugo Grostabussiat <dw23.devel at gmail.com>
>
> I hope there can't be many differences between 0x1000 and 0x1002 models. I
> tried to find some datasheets but there's nothing usefull or I just couldn't
> find it.

AFAIK protocol differs. I saw posts on maillist about adding :1001 and
:1002 IDs to upeksonly driver,
but it's not working.

Btw, I suggest you to join #fprint IRC channel @irc.freenode.org for
faster communication.

Regards
Vasily

> Thanks in advance,
>
> Nikola Hardi - Atlantic777
> _______________________________________________
> fprint mailing list
> fprint at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/fprint
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.c
Type: text/x-csrc
Size: 20974 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/fprint/attachments/20130312/cfd00115/attachment-0001.c>


More information about the fprint mailing list