[04f3:0903] Elan Microelectronics Corp fingerprint reader not recognised

Bug #1641290 reported by Barry Price on 2016-11-12
290
This bug affects 53 people
Affects Status Importance Assigned to Milestone
libfprint (Ubuntu)
Undecided
Unassigned

Bug Description

Running "fprint-demo" with this hardware installed reports "No devices found".

This is the integrated reader in new ASUS ZenBook UX390UA laptops.

lsusb -v output here: http://paste.ubuntu.com/23464942/

ProblemType: Bug
DistroRelease: Ubuntu 16.10
Package: libfprint0 1:0.6.0-2
ProcVersionSignature: Ubuntu 4.8.0-27.29-generic 4.8.1
Uname: Linux 4.8.0-27-generic x86_64
NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
ApportVersion: 2.20.3-0ubuntu8
Architecture: amd64
CurrentDesktop: Unity
Date: Sat Nov 12 15:59:17 2016
InstallationDate: Installed on 2016-11-08 (3 days ago)
InstallationMedia: Ubuntu 16.10 "Yakkety Yak" - Release amd64 (20161012.2)
SourcePackage: libfprint
UpgradeStatus: No upgrade log present (probably fresh install)

Barry Price (barryprice) wrote :
Nuno (nmrcardoso) wrote :

Same here but with ASUS ux360uak and "Bus 001 Device 005: ID 04f3:0903 Elan Microelectronics Corp"
Not recognized either.

Nuno (nmrcardoso) wrote :

Here is my output for that device:
Bus 001 Device 005: ID 04f3:0903 Elan Microelectronics Corp.
Couldn't open device, some information will be missing
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x04f3 Elan Microelectronics Corp.
  idProduct 0x0903
  bcdDevice 1.35
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 62
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower 100mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 5
      bInterfaceClass 255 Vendor Specific Class
      bInterfaceSubClass 0
      bInterfaceProtocol 0
      iInterface 0
      ** UNRECOGNIZED: 09 21 10 01 00 01 22 15 00
      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 1
      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 1
      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 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x83 EP 3 IN
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x03 EP 3 OUT
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in libfprint (Ubuntu):
status: New → Confirmed
Dmitry Korotovsky (rmpic30) wrote :

Same issue.

$ sudo fprintd-enroll
list_devices failed: No devices available

lshw:

              *-usb:2 UNCLAIMED
                   description: Generic USB device
                   product: ELAN:Fingerprint
                   vendor: ELAN
                   physical id: 9
                   bus info: usb@1:9
                   version: 1.35
                   capabilities: usb-2.00
                   configuration: maxpower=100mA speed=12Mbit/s

Dmitry Korotovsky (rmpic30) wrote :

ASUS ZenBook UX390UA

$ uname -a
Linux korotovskii 4.8.6-040806-generic #201610310831 SMP Mon Oct 31 12:33:48 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial

Corentin Dancette (cdancette) wrote :

Same here with ubuntu 17.04, Asus ZenBook UX360UAK

$ uname -a
Linux zenbook 4.10.4-041004-generic #201703180831 SMP Sat Mar 18 12:34:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Aless Jeant (aless-jeant) wrote :
Download full text (3.2 KiB)

Same here,

~ uname -a
Linux Zenbook3 4.10.0-19-generic #21-Ubuntu SMP Thu Apr 6 17:04:57 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

~lsusb -v
Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Couldn't open device, some information will be missing
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x04f3 Elan Microelectronics Corp.
  idProduct 0x0903
  bcdDevice 1.35
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 62
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower 100mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 5
      bInterfaceClass 255 Vendor Specific Class
      bInterfaceSubClass 0
      bInterfaceProtocol 0
      iInterface 0
      ** UNRECOGNIZED: 09 21 10 01 00 01 22 15 00
      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 1
      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 1
      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 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x83 EP 3 IN
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x03 EP 3 OUT
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Typ...

Read more...

William Elliott (willdorf) wrote :

Same here with Asus ZenBook UX330UA

gerrit (gerrit-damen) wrote :

Can confirm this problem with ASUS Zenbook 3 UX390UA-GS042T

$ uname -a
Linux zenx 4.8.0-46-generic #49-Ubuntu SMP Fri Mar 31 13:57:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ sudo lsusb -v is attached

Patrick Hofmann (pahofmann) wrote :

Can confirm on UX330UA.

$lsusb

Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Couldn't open device, some information will be missing
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x04f3 Elan Microelectronics Corp.
  idProduct 0x0903
  bcdDevice 1.35
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 62
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower 100mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 5
      bInterfaceClass 255 Vendor Specific Class
      bInterfaceSubClass 0
      bInterfaceProtocol 0
      iInterface 0
      ** UNRECOGNIZED: 09 21 10 01 00 01 22 15 00
      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 1
      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 1
      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 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x83 EP 3 IN
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x03 EP 3 OUT
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1

Isaac Emesowum (iemesowum) wrote :

Confirmed on UX390U.

This bug should actually be a feature request. There is currently no support for elantech fingerprint scanners in libfprint. Someone needs to write a driver for it. It's proprietary, so that might be tricky.

Yep, same here:

Asus Zenbook UX430U

Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Couldn't open device, some information will be missing
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x04f3 Elan Microelectronics Corp.
  idProduct 0x0903
  bcdDevice 1.35
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 62
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower 100mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 5
      bInterfaceClass 255 Vendor Specific Class
      bInterfaceSubClass 0
      bInterfaceProtocol 0
      iInterface 0
      ** UNRECOGNIZED: 09 21 10 01 00 01 22 15 00
      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 1
      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 1
      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 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x83 EP 3 IN
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x03 EP 3 OUT
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1

Tony Tascioglu (tonytash) wrote :
Download full text (3.2 KiB)

Fingerprint scanner on Asus UX330UA running Ubuntu 17.04 and Linux Mint 18.2 not working either.

Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Couldn't open device, some information will be missing
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x04f3 Elan Microelectronics Corp.
  idProduct 0x0903
  bcdDevice 1.35
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 62
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower 100mA
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 5
      bInterfaceClass 255 Vendor Specific Class
      bInterfaceSubClass 0
      bInterfaceProtocol 0
      iInterface 0
      ** UNRECOGNIZED: 09 21 10 01 00 01 22 15 00
      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 1
      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 1
      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 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x83 EP 3 IN
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 1
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x03 EP 3 OUT
        bmAttributes 2
          Transfer Type Bulk
          Synch Type None
          Usage Type Data
        wMaxPacketSize ...

Read more...

Tony Tascioglu (tonytash) wrote :

If it helps, I have attached the driver provided by ASUS for Windows 10 from their website.

http://dlcdnet.asus.com/pub/ASUS/nb/DriversForWin10/Fingerprint/Fingerprint_ELAN_Win10_64_VER15012.zip

rhY (rhy) wrote :

Yep. Same issue. UX330U :( WAUGH!!!

Arash (ara4sh) wrote :

Same issue Asus UX490

Casey Salvador (csalvador) wrote :

I'm having the same issue with Asus UX430UA as well.

Dylan Borg (borgdylan) wrote :

The same device i on the Zenbook Pro UX550 as well.

Dmitry Korotovsky (rmpic30) wrote :

Looks like I would change my laptop a way faster than Ubuntu team would fix this bug =/

Manuel Matas (manuelmatas) wrote :

Same issue with Asus UX550VE. No devices found on Fingerprint GUI 1.09.

Toky RALALA (ralala-toky) wrote :

I'm confirming the same issue on ASUS UX530UX too

skilo (ramskilo) wrote :

Same here with Zenbook UX430UN.
There's a kernel module named elan_i2c that makes me wonder:
modinfo elan_i2c
filename: /lib/modules/4.10.0-xxxx/kernel/drivers/input/mouse/elan_i2c.ko
version: 1.6.2
license: GPL
description: Elan I2C/SMBus Touchpad driver
author: Duson Lin <email address hidden>
srcversion: 775624509AF59206724C275
alias: i2c:elan_i2c
alias: acpi*:ELAN1000:*
alias: acpi*:ELAN0608:*
alias: acpi*:ELAN0605:*
alias: acpi*:ELAN0600:*
alias: acpi*:ELAN0100:*
alias: acpi*:ELAN0000:*
depends:
intree: Y
vermagic: 4.10.0-38-generic SMP mod_unload

Since the fingerprint sensor is part of the touchpad, it could be managed by this module (?). But in my configuration this is not loaded by default, and it is loaded instead hid_multitouch.ko.
Unfortunately neither load this manually and remove hid_multitouch resolves.

Hope this helps

Dani (databio) wrote :

I'm confirming the same issue on Xiaomi Air 13 2017

lsusb -v output here: http://paste.ubuntu.com/25923923/

Linux 4.13.0-16-generic #19-Ubuntu SMP Wed Oct 11 18:35:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful

yanqian (yanqian) wrote :

same issue on ASUS UX310UAK.

Bus 001 Device 005: ID 04f3:0903 Elan Microelectronics Corp.

Jerome B (revv-k) wrote :

Same here, with ASUS UX430UA

Alberto Martino (malbertom) wrote :

Same here, with ASUS UX430UA

Alberto Martino (malbertom) wrote :

Seems that someone is working on that:
https://<email address hidden>/msg00873.html

last message 08-11-2017

Andrea Nisticò (andrean.pk) wrote :

Did someone try this libfprint's branch with 04f3:0903 (ELAN on Asus UX530UX)?

I gave it a try with 04f3:0903:

"This program will enroll your right index finger, unconditionally
overwriting any right-index print that was enrolled previously. If you want
to continue, press enter, otherwise hit Ctrl+C

Found device claimed by ElanTech Fingerprint Sensor driver
Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 5 times to complete the
process.

Scan your finger now.
async:error [fpi_drvcb_enroll_stage_completed] BUG at async.c:161
sync:error [fp_enroll_finger_img] unrecognised return code -71"

I used the 'enroll' example binary after building the code at that
location. It's not a device file permission issue. Has this worked for
anyone else?

Isaac

On Nov 28, 2017 13:31, "Andrea Nisticò" <email address hidden> wrote:

Did someone try this libfprint's branch with 04f3:0903 (ELAN on Asus
UX530UX)?

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1641290

Title:
  [04f3:0903] Elan Microelectronics Corp fingerprint reader not
  recognised

Status in libfprint package in Ubuntu:
  Confirmed

Bug description:
  Running "fprint-demo" with this hardware installed reports "No devices
  found".

  This is the integrated reader in new ASUS ZenBook UX390UA laptops.

  lsusb -v output here: http://paste.ubuntu.com/23464942/

  ProblemType: Bug
  DistroRelease: Ubuntu 16.10
  Package: libfprint0 1:0.6.0-2
  ProcVersionSignature: Ubuntu 4.8.0-27.29-generic 4.8.1
  Uname: Linux 4.8.0-27-generic x86_64
  NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
  ApportVersion: 2.20.3-0ubuntu8
  Architecture: amd64
  CurrentDesktop: Unity
  Date: Sat Nov 12 15:59:17 2016
  InstallationDate: Installed on 2016-11-08 (3 days ago)
  InstallationMedia: Ubuntu 16.10 "Yakkety Yak" - Release amd64 (20161012.2)
  SourcePackage: libfprint
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/164
1290/+subscriptions

JM (josemesnaola) wrote :

I also gave it a try with 04f3:0903 in ASUS UX490UA.

Unfortunately I obtain the same results as Isaac Emesowum (iemesowum).

Once compiled and installed I'm able to execute fprint_demo (as superuser) and when I try to enroll I get the following errors (I enabled debugging):

elan:debug [elan_cmd_cb] unexpected transfer length
drv:debug [fpi_ssm_mark_aborted] error -71 from state 0
drv:debug [fpi_ssm_mark_completed] 0x55fae265b840 completed with status -71
elan:debug [init_complete]
fp:debug [fpi_imgdev_session_error] error -71
async:error [fpi_drvcb_enroll_stage_completed] BUG at async.c:161
async:debug [fpi_drvcb_enroll_stage_completed] result -71
async:debug [fp_async_enroll_stop]
elan:debug [dev_deactivate]

I also executed enroll (in examples folder) with the same result.
I don't know anything about lsusb so I didn't manage to understand what was going on.

Alberto Martino (malbertom) wrote :

The branch sbechet/libfprint is only a "first try"
the developer hasn't figured out yet how to make elan work.

At the moment the device is only added to be a "supported device" but the code on the file

https://github.com/sbechet/libfprint/blob/elan/libfprint/drivers/elan.c

throws an error (-71) on this method:

static void elan_cmd_cb(struct libusb_transfer *transfer)

on line 197 -> else if (transfer->length != transfer->actual_length) //throws the error -71

I'm reporting here the message from Igor Filatov to Sébastien Béchet

> With these devices the scanned area is so small that not many minutiae can
> be found there. I got like 5 o so with my finger and that's what I can
> visually confirm looking at the scanned images. It's not about image
> quality. I think original drivers could be using a different algorithm.
>
> Looks like your device doesn't react normally to 402a (not unexpected). It's
> the third init command in elan.h. Try removing it. Actually, you can try
> removing all commands not found in you traces. Just don't remove the arrays
> with commands for now, leave empty if needed.
>
> It doesn't seem to complicated to adapt the driver based on your traces but
> don't think I'll have any time for it soon…

January 2018 still not working for 04f3:0c1a on Xiaomi notebook Pro

Lord_JABA (lordjaba) wrote :

Same on 2017 xiomi notebook air 13.
lsusb:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:0a2b Intel Corp.
Bus 001 Device 003: ID 04f3:0c1a Elan Microelectronics Corp.
Bus 001 Device 002: ID 04f2:b5a3 Chicony Electronics Co., Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

uname -a:
Linux slider 4.13.0-32-generic #35~16.04.1-Ubuntu SMP Thu Jan 25 10:13:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Timur Celik (clktmr) wrote :

Current official master branch works for me (UX430UA [04f3:0903]).

The only change I made was adding my device to the driver:

@@ -608,6 +608,7 @@ static void dev_deactivate(struct fp_img_dev *dev)

 static const struct usb_id id_table[] = {
  {.vendor = 0x04f3,.product = 0x0907},
+ {.vendor = 0x04f3,.product = 0x0903},
  {0, 0, 0,},
 };

1 comments hidden view all 103 comments
Timur Celik (clktmr) wrote :

I added that line to drivers/elan.c. However, after some testing it's not working reliably for me. My fingerprint is recognized in about 1 out of 10 cases only. libfprint doesn't seem to like the images provided by the sensor. Possibly some improvement in the image processing is necessary. I will look into this if I find the time.

SN (sigma343) wrote :

where did you find the source code? all the downloads I have seen dont have a elan.c file in the drivers folder.

23 comments hidden view all 103 comments
Igor Filatov (iafilatov) wrote :

@Pauline Essentially, you need to produce a scan that's similar to one of the enrolled scans. In my experience, one of the best things you can do to improve recognition is to move your finger in a straight line. Don't bend your finger until the last moment when you need to scan the finger tip. Try pulling it along the sensor moving the entire palm of your hand. If you observe the images, the ones that are the least curved are the best.

BTW another person found a bug in stitching code a few days ago. When it's fixed, the recognition rate should improve somewhat.

Aless Jeant (aless-jeant) wrote :

@Igor it's awesome what you've done to add support for elan fingerprinters! however I just tried your examples, and there's a few issues (Asus Zenbook 3, ux390, with usb fingerprint reader 04f3:0903, square on top of touchpad).
I was able to scan a few times with the image capture examples, but the scans never quite stitch together properly, and the enroll was stuck most times, then it enrolled once and it got stuck on verification so I ctrl+c'd it, and now it seems stuck and timeouts each time I try one of the two example programs. I attached the CLI outputs.
Thank you again for your amazing work!

Igor Filatov (iafilatov) wrote :

@Aless

Thank you! It's hard to tell just from the logs but it looks like you don't move your finger enough during swipe. Did you just hold in on the reader till it said "please try again"? Does enrolled.pgm look like a stripe from a fingerprint image? You need to swipe all the way to finger tip and then raise the finger.

Your reader got stuck because you aborted the sequence when it was waiting for finger. Is this state it doesn't respond to other commands until a finger press is detected. If you just touch the reader once it should recover. I can't induce this state just by ctrl+c'ing at the same place but I remember getting into it when sending commands manually, so... I think I have an idea how to help this, will try making some changes.

Igor Filatov (iafilatov) wrote :

I've added some fixes to frame assembling code (bugs found and fixed by Timur Celik (clktmr), hope he sumbits the patch upstream). They they can improve stitching for your Elan scanner a little or a lot, depending on the direction in which you swipe (which can differ even on identical readers depending on how the device is oriented).

Ben Selinger (blistovmhz) wrote :
Download full text (3.9 KiB)

Same issue here as Malammar. The first time I tried 'sudo ./enroll', it did read my print and I did get a pgm out of it. Subsequent tests however just time out, like so:

bens@quadrillion /usr/local/src/libfprint/examples $ sudo ./enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:0903
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0903
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
async:debug [fpi_drvcb_open_complete] status 0
sync:debug [sync_open_cb] status 0
Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 5 times to complete the process.

Scan your finger now.
sync:debug [fp_enroll_finger_img]
async:debug [fp_async_enroll_start] starting enrollment
fp:debug [generic_acquire_start] action 1
elan:debug [dev_activate]
elan:debug [elan_activate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x1f9cce0 entering state 0
elan:debug [elan_run_cmd] 4019
sync:debug [fp_enroll_finger_img] elan will handle enroll stage 0/4
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 0
drv:debug [fpi_ssm_mark_completed] 0x1f9cce0 completed with status -110
elan:debug [activate_complete]
fp:debug [fpi_imgdev_activate_complete] status -110
async:debug [fpi_drvcb_enroll_started] status -110
sync:debug [sync_enroll_cb] result -110
sync:error [fp_enroll_finger_img] unrecognised return code -110
sync:debug [fp_enroll_finger_img] ending enrollment
async:debug [fp_async_enroll_stop]
elan:debug [dev_deactivate]
elan:debug [dev_change_state] 0
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009986s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] 0
elan:debug [elan...

Read more...

Igor Filatov (iafilatov) wrote :

Unfortunately I have no idea right now what could could cause the reader to get stuck like that... Does it recover eventually or after a reboot? If it does, could you please record the entire log including a successful enrollment and a timeout afterwards?

As for fprint_demo, for me it needs to run as root to see the device.

Mustafa (malammar) wrote :
Download full text (47.3 KiB)

Hi @Igor,

I restarted and the reader does recover, but I run into the same issue as before when I try to re-enroll:

Here's the log:

=====================================
╰─$ sudo examples/enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:0903
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0903
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
async:debug [fpi_drvcb_open_complete] status 0
sync:debug [sync_open_cb] status 0
Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 5 times to complete the process.

Scan your finger now.
sync:debug [fp_enroll_finger_img]
async:debug [fp_async_enroll_start] starting enrollment
fp:debug [generic_acquire_start] action 1
elan:debug [dev_activate]
elan:debug [elan_activate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x72ab00 entering state 0
elan:debug [elan_run_cmd] 4019
sync:debug [fp_enroll_finger_img] elan will handle enroll stage 0/4
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x72ab00 entering state 1
elan:debug [activate_run_state] FW ver 0x0135
drv:debug [__ssm_call_handler] 0x72ab00 entering state 2
elan:debug [elan_run_cmd] 000c
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x72ab00 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 96x96
drv:debug [__ssm_call_handler] 0x72ab00 entering state 4
elan:debug [elan_run_cmd] 402a
elan:debug [elan_run_cmd] skipping for this device
elan:debug [elan_cmd_done]
drv:debug [fpi_ssm_mark_completed] 0x72ab00 completed with status 0
elan:debug [activate_complete]
elan:debug [elan_calibrate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_ca...

Igor Filatov (iafilatov) wrote :

@Mustafa this is probably unrelated but I think you're pressing, not swiping. Img height too low, plus too little minutiae:

assembling:debug [fpi_assemble_frames] height is -131
fp:debug [fpi_img_new] length=26064
fp:debug [fpi_imgdev_image_captured]
fp:debug [fpi_img_detect_minutiae] minutiae scan completed in 0.009151 secs
fp:debug [fpi_img_detect_minutiae] detected 0 minutiae
fp:debug [print_data_new] driver=15 devtype=0000
fp:debug [fpi_imgdev_image_captured] not enough minutiae, 0/10

Try opening enroll.pgm with an image viewer. If capture goes fine, it should have a mostly correct partial fingerprint image. Also, it seems like you're using an older version. See if you can update. If anything, the latest has some image stitching issues fixed.

Mihai Banu (m-banu94) wrote :

lsusb:
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 04f3:0c03 Elan Microelectronics Corp.
Bus 001 Device 004: ID 04f2:b580 Chicony Electronics Co., Ltd
Bus 001 Device 003: ID 04ca:3016 Lite-On Technology Corp.
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

uname -a:
Linux mihai-Aspire-S5-371 4.13.0-36-generic #40-Ubuntu SMP Fri Feb 16 20:07:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

no luck getting it to work. Could someone help please? Thank you!

Svyatoslav (chgcool) wrote :

I have 0903.

Successfully installed driver.
First time I ran $:examples/img_capture it was fine;
then $:examples/enroll was also going fine and even managed to enroll the fingerprint for several times, but then stopped for some reason.
After that I never managed even to launch first command, got such report:
fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:0903
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0903
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
async:debug [fpi_drvcb_open_complete] status 0
sync:debug [sync_open_cb] status 0
Opened device. It's now time to scan your finger.

sync:debug [fp_dev_img_capture] to be handled by elan
async:debug [fp_async_capture_start]
fp:debug [generic_acquire_start] action 4
elan:debug [dev_activate]
elan:debug [elan_activate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x1bd9100 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 0
drv:debug [fpi_ssm_mark_completed] 0x1bd9100 completed with status -110
elan:debug [activate_complete]
fp:debug [fpi_imgdev_activate_complete] status -110
async:debug [fpi_drvcb_capture_started]
sync:error [fp_dev_img_capture] unrecognised return code -110
sync:debug [fp_dev_img_capture] ending capture
async:debug [fp_async_capture_stop]
elan:debug [dev_deactivate]
elan:debug [dev_change_state] 0
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009990s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] already in 0

won't stop without force quit.

Svyatoslav (chgcool) wrote :

Make clean and make distclean didn't help

Aless Jeant (aless-jeant) wrote :

Hey, I just tried again after I pulled the new upstream, this time I was able to get to enroll a fingerprint, and when I tried to verify it it never succeeded, no matter how much I tried to repeat the exact same movement. After that the device seemed to become busy as it did the last time, so this time it timed out a bunch of times. As you are saying this is more of an issue relating to the hardware, it would be nice to instruct it to shutdown after use as well! anyway, I'll be glad to hear about the development on this, keep up the great work! (and if anything, it's cool to see my actual fingerprint scan! Would there be a way to store all the frames separately, in order to work on improving the stitching? I'm not sure how it all works, but I believe with improved stitching one could allow similar usage to the windows version, where the entire fingerprint is scanned from all angles and stitched in a nice way, so that the fingerprint can then be verified over a smaller area by just touching the sensor :)

Igor Filatov (iafilatov) wrote :

@Aless

Thanks for testing!

> Hey, I just tried again after I pulled the new upstream

The log doesn't look like it's from from the latest. Sorry, stupid question: did you rebuild after pulling? Not that it would fix the busy problem (I'd be surprised if it did). Unfortunately...

> it never succeeded, no matter how much I tried to repeat the exact same movement

Can't say for sure, but just seeing from the logs most of the time the scanned image appears to be not so good. The assembled height is quite low. Not enough movement?

> this is more of an issue relating to the hardware, it would be nice to instruct it to shutdown after use as well

I really don't know what it's related to. I think your 0903 used to work ok for people earlier. Although I don't have any reports where it did and then didn't, so could be a combination of factors.
The driver is unconditionally sending a shutdown command (what seems to be the closest thing) but the problem is, I don't think the reader responds to it. Because it's stuck.
Can I ask you to do an experiment (more like a shot in the dark)? It looks like the problem only occurs on enroll. Can you please try running img_capture like 20 times in a row and see if it fails at some point?

> Would there be a way to store all the frames separately

Not without a small hack. I can send you a patch if you want.

> entire fingerprint is scanned from all angles and stitched in a nice way, so that the fingerprint can then be verified over a smaller area by just touching the sensor

Unfortunately, it's not that "simple". Long story short, even with perfect stitching, you'd need to scan and assemble the entire print on each verification. I believe win (and smartphones etc) use an entirely different *comparison* algo.

Foaly (foalyy) wrote :

Hi Igor,

I was looking to make the fp sensor on my new UX430UN notebook on ArchLinux and I found this subject. Here is my config and the results of my tests with the latest version cloned from https://github.com/iafilatov/libfprint.

lsusb -v : https://pastebin.com/ZSjAk2Ws

img_capture works... sometimes. When it doesn't I get a "image capture failed, code -22" error. I have the feeling that it happens when I don't "insist" enough while putting my finger on the sensor. For example, pressing it without moving for a second works, but swiping it more quickly doesn't ("-22"). Unfortunately, as you explained earlier, libfprint expects a swipe and the result images are pretty bad if I don't swipe. I can get relatively decent results when I swipe slowly [for libfprint] then keep pressing the tip of the finger (without moving) for half a second [to not get "error -22"].

I strugle to obtain a good-looking image like the one that is shown on github though (with the "center of the fingerprint"). I tried different movements, and it seems it works a bit better with the middle finger that with the index according to the image results, but I can't get "verify" to get a match ("enroll" mostly work even though I get get a lot of "swipe too short, try again").

If you want to try to improve this sensor's support in the library, I'd be more than happy to provide you as many test images and logs as you'd need. Please tell me how you'd like to exchange email addresses.

Thanks a lot for your time!

Mihai Banu (m-banu94) wrote :

Is it possible to use this to login to ubuntu instead of password? If so, how? my last attempt at this libfprint ended with a terminal that continuously scanned my fingers than checked if the scans are any good.

Thanks in advance!

Jose Baeza (baeza-jos-t) wrote :

Hi Igor,

I got this error when executing autogen.sh:
./configure: line 16282: syntax error near unexpected token `LIBUSB,'
./configure: line 16282: `PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= 0.9.1)'

Can you help me?

Igor Filatov (iafilatov) wrote :

@Mihai
To use login with fingerprint you need to install libpam-frpintd package. But first make sure you can enroll and verify reasonably well using fprint_demo (package called fprint-demo).

@Jose
You need pkg-config. I.e. apt install pkg-config or whatever works for your distro.

Jose Baeza (baeza-jos-t) wrote :

Now I get this message:

"checking for LIBUSB... no
configure: error: Package requirements (libusb-1.0 >= 0.9.1) were not met:

No package 'libusb-1.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBUSB_CFLAGS
and LIBUSB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details."

BUT, libusb-1.0.0 it IS installed! Sorry. I haven't used the console in the past 6 years!

Igor Filatov (iafilatov) wrote :

@Jose
Normally when configure says it can't find package foo, you need foo-dev (headers). Try installing libusb-dev.

Luca Bognolo (m01l17c21r18) wrote :
Download full text (28.3 KiB)

Hi,
img_capture worked, but enroll didn't. Subsequent attempts with img_capture failed with similar problem as enroll. Maybe device not released properly? Will try to reboot the laptop and if things change will post again.
Thanks for your efforts!

lsusb output:
...
Bus 001 Device 007: ID 04f3:0903 Elan Microelectronics Corp.
...

uname -a
Linux Asus-UX430U 4.13.0-39-generic #44-Ubuntu SMP Thu Apr 5 14:25:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

examples/img_capture
fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:0903
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0903
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
async:debug [fpi_drvcb_open_complete] status 0
sync:debug [sync_open_cb] status 0
Opened device. It's now time to scan your finger.

sync:debug [fp_dev_img_capture] to be handled by elan
async:debug [fp_async_capture_start]
fp:debug [generic_acquire_start] action 4
elan:debug [dev_activate]
elan:debug [elan_activate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x5583508ce660 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 0135
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x5583508ce660 entering state 1
elan:debug [activate_run_state] FW ver 0x0135
drv:debug [__ssm_call_handler] 0x5583508ce660 entering state 2
elan:debug [elan_run_cmd] 000c
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 6000... (4 bytes)
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x5583508ce660 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 96x96
drv:debug [__ssm_call_handler] 0x5583508ce660 entering state 4
elan:debug [elan_run_cmd] 402a
elan:debug [elan_run_cmd] skipping for this device
elan:debug [elan_cmd_done]
drv:debug [fpi_ssm_mark_completed] 0x5583508ce660 completed with status 0
elan:debug [activate_complete]
elan:debug [elan_calibrate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x5583508cad10 enteri...

Igor Filatov (iafilatov) wrote :

@Luca
There's a problem with 0903 that for many people it locks up during enroll. It seems to happen pretty some people but I don't know why and can't diagnose because I don't own this model. All I see in logs is that it stops responding while waiting for an image... and doesn't recover until you power-cycle it.

Jose Baeza (baeza-jos-t) wrote :

@Igor

Now I get:
No package 'nss' found

I have not been able to found it.

Moreover, which packets do I need to execute autogen.sh???

Thanks

Igor Filatov (iafilatov) wrote :

@Jose
Try libnss3-dev. I don't have the exact package names for libfprint and there isn't one provided because they could change from one distro to another, some people prefer to compile deps from source etc. The usual way to go is run ./configure (or autogen.sh) fixing each error one-by-one till it works. Here's a list which might help, but it's not "complete" or universal. Don't install stuff until you get an error saying it's needed.
libglib2.0-dev
libnss3-dev
libpixman-1-dev
libudev-dev
libusb-1.0.0-dev
libxv-dev

Matt Heck (hpg-mheck) wrote :

Hello! First, please let me congratulate all of you on your persistent troubleshooting efforts. I recently picked up an Acer Spin 5, which has a newer ELAN unit in it, so I thought I'd see if I could help. I use this system primarily for software development under Fedora 28, so I should be in a good position to help test the hardware, if not the Ubuntu-specific login process.

The unit in this laptop enumerates as:
Bus 001 Device 003: ID 04f3:25a1 Elan Microelectronics Corp.

I have installed code from GitHub, current as of today. Without even adding the model to the driver, the test program properly read and verified a print, at least some of the time. There are issues but the point is it worked at least once, using the test utilities.

I added the 25a1 model code to the driver list, and installed, but as yet, fprintd-enroll still fails:

[mheck@localhost ~]$ fprintd-enroll
list_devices failed: No devices available
[mheck@localhost ~]$ sudo fprintd-enroll
[sudo] password for mheck:
list_devices failed: No devices available

I'm not sure what's going on with that, but in any case, the model number "25a1" seems supportable, since it works with the standalone test programs, and should probably be added to the model list.

Anything else I can do to help add support for that particular model? Seems to be recent, but deliberately backward compatible.

Igor Filatov (iafilatov) wrote :

@Matt
Thanks for your input!
25a1 is not is the list of supported models so I'm pretty sure the driver wouldn't pick it up without modification. It only recognizes 0903, 0907 and 0c01-0c33. Are you sure it's not something else, maybe touchpad? What does lsusb | grep 04f3 show? Could you please compile with debug support (https://github.com/iafilatov/libfprint#trying-it-out) and paste the first ~30 lines of examples/img_capture?

For fprintd(-enroll) to work you need fprintd to link against the compiled and installed libfprint lib. If you installed fprintd as a package, it likely pulled original libfprint as dependency and keeps using it. See ldd `which fprintd` | grep libfprint. If it's not in /usr/local/... , it's the original one. You may need to [configure and] run ldconfig.

Hi, I have an Dell Latitude 7370 with an Elan fingerprint reader and can't get it to work

jeroen@nice:~/libfprint$ lsusb | grep -i elan
Bus 001 Device 003: ID 04f3:2335 Elan Microelectronics Corp.

I tried your fork of libprintf, Igor, and noticed you don't support ID 04f3:2335.
I added it to elan.h but unfortunately no joy:

jeroen@nice:~/libfprint/builddir_dbg/examples$ sudo ./enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:2335
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:2335
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
elan:error [dev_init] could not claim interface 0: LIBUSB_ERROR_BUSY
async:error [fp_async_dev_open] device initialisation failed, driver=elan
Could not open device.
fp:debug [fp_exit]

Igor Filatov (iafilatov) wrote :

@Jeroen

04f3:2335 is the touchscreen. I found full lsusb output at https://wiki.archlinux.org/index.php/Dell_Latitude_7370#lsusb and I don't know which of those is fingerprint reader, if any.

Ouch what a mistake to make!
Not sure what the fingerprint reader is:

jeroen@nice:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0bda:5768 Realtek Semiconductor Corp.
Bus 001 Device 004: ID 0a5c:5834 Broadcom Corp.
Bus 001 Device 003: ID 04f3:2335 Elan Microelectronics Corp.
Bus 001 Device 002: ID 8087:0a2b Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
jeroen@nice:~$ lspci
00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 515 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port (rev f1)
00:1c.7 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #8 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d46 (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
6c:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)
6d:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)

1 comments hidden view all 103 comments
Louis Penin (lpenin) wrote :

Hi all,

Thank you Igor, I followed the instructions and everything worked!

However when I try to enroll my prints, here's what happens:

louis@louis-UX330UAK:~$ fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-unknown-error
VerifyStop failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Knowing that:

louis@louis-UX330UAK:~$ ldd `which fprintd` | grep libfprint
 libfprint.so.0 => /usr/local/lib/libfprint.so.0 (0x00007f34648e8000)

And that:

louis@louis-UX330UAK:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 0bda:58d1 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Do you know to what it is due and what I can do for it?

Igor Filatov (iafilatov) wrote :

@Louis

Does fprint_demo work right after fprintd-enroll fails? If not, it's the 0903 bug.

Louis Penin (lpenin) wrote :

Hi

Well it opens but it says Error loading enrolled prints..

I tried again to examples/enroll but here's what I get (even though it worked yesterday!) :

(venv) louis@louis-UX330UAK:~/libfprint/builddir_dbg$ examples/enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

fp:debug [fp_init]
fp:debug [register_driver] registered driver upekts
fp:debug [register_driver] registered driver aes3500
fp:debug [register_driver] registered driver aes4000
fp:debug [register_driver] registered driver aes2501
fp:debug [register_driver] registered driver aes2550
fp:debug [register_driver] registered driver uru4000
fp:debug [register_driver] registered driver vcom5s
fp:debug [register_driver] registered driver upeksonly
fp:debug [register_driver] registered driver aes1610
fp:debug [register_driver] registered driver aes1660
fp:debug [register_driver] registered driver aes2660
fp:debug [register_driver] registered driver vfs101
fp:debug [register_driver] registered driver vfs301
fp:debug [register_driver] registered driver vfs5011
fp:debug [register_driver] registered driver upektc
fp:debug [register_driver] registered driver upektc_img
fp:debug [register_driver] registered driver etes603
fp:debug [register_driver] registered driver vfs0050
fp:debug [register_driver] registered driver elan
fp:debug [find_supporting_driver] driver elan supports USB device 04f3:0903
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0903
Found device claimed by ElanTech Fingerprint Sensor driver
sync:debug [fp_dev_open]
async:debug [fp_async_dev_open]
elan:debug [dev_init]
async:debug [fpi_drvcb_open_complete] status 0
sync:debug [sync_open_cb] status 0
Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 5 times to complete the process.

Scan your finger now.
sync:debug [fp_enroll_finger_img]
async:debug [fp_async_enroll_start] starting enrollment
fp:debug [generic_acquire_start] action 1
elan:debug [dev_activate]
elan:debug [elan_activate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x117aa00 entering state 0
elan:debug [elan_run_cmd] 4019
sync:debug [fp_enroll_finger_img] elan will handle enroll stage 0/4
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 0
drv:debug [fpi_ssm_mark_completed] 0x117aa00 completed with status -110
elan:debug [activate_complete]
fp:debug [fpi_imgdev_activate_complete] status -110
async:debug [fpi_drvcb_enroll_started] status -110
sync:debug [sync_enroll_cb] result -110
sync:error [fp_enroll_finger_img] unrecognised return code -110
sync:debug [fp_enroll_finger_img] ending enrollment
async:debug [fp_async_enroll_stop]
elan:debug [dev_deactivate]
elan:debug [dev_change_state] 0
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009989s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] already in 0

Is that the 0903 bug?

Igor Filatov (iafilatov) wrote :

fprint_demo could require root if you ran it or examples/enroll as root before. The log seems to indicate the 0903 bug. Try reboot or cold boot.

Louis Penin (lpenin) wrote :

Hi Igor, You are right, it seems to be the 0903 bug, if there's anything I can do to help you resolve this bug: let me know!

Thanks for your help

Cascanuez (cascanuez) wrote :

Hi everybody and thank you very much for this work Igor :)

Unfortunately, I didn't manage to install the driver so I would want to know, before trying harder to understand the README.md, if an integration in the official repositories is planned.

Thank you again :)

Igor Filatov (iafilatov) wrote :

It is planned. In fact, it is under way. But I need to find time to prepare for merging and I keep failing at this...

Cascanuez (cascanuez) wrote :

Yeah I understand perfectly. I'll wait so :)

Thanks again for this job !

John Doe (jdoeqqqw) wrote :

Fedora user here (Asus Zenbook UX330UA), I wanted to say thank you for your efforts on making those sensors work. Hopefuly you'll find them to have your fix merged into the official lib.

Igor Filatov (iafilatov) wrote :

I've changed the order of commands a bit and it may fix the 0903 lock-up issue. It's still a shot in the dark though. If anyone is willing to test (run enroll a few times in a row to see) I'd appreciate it. Thanks!
https://github.com/iafilatov/libfprint/tree/elan-try-fix-0903

Displaying first 40 and last 40 comments. View all 103 comments or add a comment.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers