[fprint] vfs5011 support

Per-Ola Gustavsson pellesmek+fprint at gmail.com
Wed Dec 31 10:15:23 PST 2014


I had a look at the vfs5011. I got it working by removing the line 770
in file libfprint/drivers/vfs5011.c --"RECV(VFS5011_IN_ENDPOINT_CTRL2,
8)". As stated in the comment below in the c file, somehow it only
works in the windows driver. Strangely about one success in four tries
in libfprint on my machine. (I wouldn't be surprised if there is
something weird with the (Intel) usb bus/driver.) If there is a
timeout in the communication with the usb device libfprint tries to
g_malloc0 (or some kind of malloc) 2^64 - 4 bytes of data, naturally
this fails. I cannot find any code where this could occur.

Enroll stages is limited to one, makes it fail often. A work around is
to enroll using the same finger as several different using
fprintd-enroll -f.


Btw, the libfprint "SSM: sequential state machine" is quite flawed.
Why isn't there a normal message loop system and threading? Maybe glib
style? I haven't looked deeply into poll.c but I have a hunch it's
functionality should be reimplemented in a very different way.

vfs5011.c doesn't handle libusb async calls in a correct or polite
manner. It hi'jacks the thread of libusb and fills it's stack with
recursive calls and memory allocations. I believe this is causing race
conditions and other anomalies, at least noticed in the malloc fail
described above. I haven't looked at any other drivers than vfs5011
but I believe SSM can be improved to handle async callbacks and
threads (and race conditions) without breaking the driver interface.
It might not be urgent but it obviously is crashing in an unintended
way if anything unexpected occurs.

I got a bit offtopic here... I guess no one really is using their
finger print reader anyway.

(I have Thinkpad X1 Carbon 2:nd gen 20A8 for the record)


Per-Ola Gustavsson
http://marsba.se


>
> Hi Frank, Please try to compile and test libfprint from
> https://github.com/anarsoul/libfprint I have no vfs5011 hardware, and I'd like to be sure that everything
> from git master is working before pushing it to fd.o and asking
> Bastien to make a release. Thanks! Regards,
> Vasily On Thu, Dec 18, 2014 at 11:52 PM, Dr. No
> <bartsimpson at betriebsdirektor.de> wrote:
> > Hi Vasily,
> > yes the patch apply to the 0.5.1 version.
> > My system is an Fedora 21.
> >
> > I can't seen any crashes, only USB errors:
> >
> > wrong finger:
> > Dez 18 21:33:44 XXXXXX dbus[999]: [system] Activating via systemd:
> > service name='net.reactivated.Fprint' unit='fprintd.service'
> > Dez 18 21:33:44 XXXXXX dbus[999]: [system] Successfully activated
> > service 'net.reactivated.Fprint'
> > Dez 18 21:33:44 XXXXXX fprintd[3524]: Launching FprintObject
> > Dez 18 21:33:44 XXXXXX fprintd[3524]: ** Message: D-Bus service launched
> > with name: net.reactivated.Fprint
> > Dez 18 21:33:44 XXXXXX fprintd[3524]: ** Message: entering main loop
> > Dez 18 21:33:44 XXXXXX fprintd[3524]: ** Message: user 'frank' claiming
> > the device: 0
> > Dez 18 21:33:45 XXXXXX fprintd[3524]: ** Message: now monitoring fd 15
> > Dez 18 21:33:45 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: Setup ERROR: setup
> > context command for slot 2.
> > Dez 18 21:33:45 XXXXXX kernel: usb 2-7: hub failed to enable device,
> > error -22
> > Dez 18 21:33:45 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: Setup ERROR: setup
> > context command for slot 2.
> > Dez 18 21:33:45 XXXXXX kernel: usb 2-7: hub failed to enable device,
> > error -22
> > Dez 18 21:33:45 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b400
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b448
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b490
> > Dez 18 21:33:45 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b4d8
> > Dez 18 21:33:46 XXXXXX fprintd[3524]: ** Message: device 0 claim status 0
> > Dez 18 21:33:46 XXXXXX fprintd[3524]: ** Message: adding finger 7 to the
> > gallery
> > Dez 18 21:33:46 XXXXXX fprintd[3524]: ** Message: start identification
> > device 0
> > Dez 18 21:33:46 XXXXXX kernel: xhci_hcd 0000:00:14.0: WARN Event TRB for
> > slot 2 ep 4 with no TDs queued?
> > Dez 18 21:34:35 XXXXXX kernel: xhci_hcd 0000:00:14.0: WARN Event TRB for
> > slot 2 ep 4 with no TDs queued?
> > Dez 18 21:34:35 XXXXXX fprintd[3524]: ** Message: identify_cb: result
> > verify-no-match (0)
> > Dez 18 21:34:35 XXXXXX fprintd[3524]: ** Message: no longer monitoring fd 15
> > Dez 18 21:34:35 XXXXXX fprintd[3524]: ** Message: released device 0
> > Dez 18 21:35:05 XXXXXX fprintd[3524]: ** Message: No devices in use, exit
> >
> >
> > right finger:
> > Dez 18 21:36:27 XXXXXX fprintd[3546]: ** Message: user 'frank' claiming
> > the device: 0
> > Dez 18 21:36:27 XXXXXX fprintd[3546]: ** Message: now monitoring fd 15
> > Dez 18 21:36:27 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:36:27 XXXXXX kernel: xhci_hcd 0000:00:14.0: Setup ERROR: setup
> > context command for slot 2.
> > Dez 18 21:36:27 XXXXXX kernel: usb 2-7: hub failed to enable device,
> > error -22
> > Dez 18 21:36:27 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:36:27 XXXXXX kernel: xhci_hcd 0000:00:14.0: Setup ERROR: setup
> > context command for slot 2.
> > Dez 18 21:36:27 XXXXXX kernel: usb 2-7: hub failed to enable device,
> > error -22
> > Dez 18 21:36:28 XXXXXX kernel: usb 2-7: reset full-speed USB device
> > number 3 using xhci_hcd
> > Dez 18 21:36:28 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b400
> > Dez 18 21:36:28 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b448
> > Dez 18 21:36:28 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b490
> > Dez 18 21:36:28 XXXXXX kernel: xhci_hcd 0000:00:14.0: xHCI
> > xhci_drop_endpoint called with disabled ep ffff880424b5b4d8
> > Dez 18 21:36:28 XXXXXX fprintd[3546]: ** Message: device 0 claim status 0
> > Dez 18 21:36:28 XXXXXX fprintd[3546]: ** Message: adding finger 7 to the
> > gallery
> > Dez 18 21:36:28 XXXXXX fprintd[3546]: ** Message: start identification
> > device 0
> > Dez 18 21:36:28 XXXXXX kernel: xhci_hcd 0000:00:14.0: WARN Event TRB for
> > slot 2 ep 4 with no TDs queued?
> > Dez 18 21:36:29 XXXXXX kernel: xhci_hcd 0000:00:14.0: WARN Event TRB for
> > slot 2 ep 4 with no TDs queued?
> > Dez 18 21:36:29 XXXXXX fprintd[3546]: ** Message: identify_cb: result
> > verify-match (1)
> > Dez 18 21:36:29 XXXXXX fprintd[3546]: ** Message: no longer monitoring fd 15
> > Dez 18 21:36:29 XXXXXX fprintd[3546]: ** Message: released device 0
> >
> >
> > Regards,
> > Frank
> >
> > Am 18.12.2014 um 21:20 schrieb Vasily Khoruzhick:
> >> Hi Frank,
> >>
> >> I've just got a report at
> >> https://bugs.freedesktop.org/show_bug.cgi?id=61692 that it doesn't
> >> work.
> >> Did you actually test it?
> >>
> >> Regards,
> >> Vasily
> >
> >>>
> >


More information about the fprint mailing list