Giter Site home page Giter Site logo

iafilatov / libfprint Goto Github PK

View Code? Open in Web Editor NEW
146.0 19.0 20.0 1.48 MB

libfrpint driver for a family of Elantech fingerprint sensors

Home Page: https://cgit.freedesktop.org/libfprint/libfprint/

License: GNU Lesser General Public License v2.1

C 99.55% Meson 0.45%
libfprint fingerprint driver

libfprint's Introduction

Read this first

This driver went upstream. If you are about to clone and build this repo, better clone the official libfprint repo instead. If your package manager ships libfprint >= 0.8.3, it's already there. Yay!

I'm not responding to issues and pull requests in this repo. Send them to the official repo. The code here is very old and I don't actively maintain it.

For help with this driver consider opening a ticket in the official repo or asking on the mailing list. I will keep this fork as a landing page for a while.

A fork of libfrpint with ElanTech fingerprint reader driver

Original libfprint readme is in README

Supported readers

04f3: 0903, 0907, 0c01-0c33

Getting code and Build tools

libfprint is built with Meson Build System.

If you installed libfprint from source before c5c5fcf (May 17, 2018) please see Uninstalling with autotools.

git clone [email protected]:iafilatov/libfprint.git
cd libfprint

apt install ninja-build

# The doc recommends system-wide installation with pip, which might not be the best/easiest option.
# Here is how you can install meson in isolated environment:
python3 -m venv venv
. venv/bin/activate
pip install -U pip
pip install meson

Trying it out

venv/bin/meson builddir_dbg
venv/bin/meson configure builddir_dbg -Ddebug_log=true
cd builddir_dbg
ninja

Pre-requisites

YMMV. The best way to get all required packages and avoid installing unnecessary ones is to keep running meson builddir and installing the packages it asks for one-by-one.

libglib2.0-dev
libnss3-dev
libpixman-1-dev
libusb-1.0.0-dev
libx11-dev
libxv-dev
pkg-config

Capture

This may require root

examples/img_capture

Then open finger.pgm with an image viewer.

Try enrolling and verifying

examples/enroll
examples/verify

Last enrolled image is stored in enrolled.pgm, last one used for verification is verify.pgm.

Try with fprint_demo

Install fprint_demo.

LD_LIBRARY_PATH=./libfprint/.libs/ fprint_demo

Unrecognized devices

If you have a device that is not detected by this driver and you want to try it out, you can add it to the supported devices list and recompile. I have reasons to believe that the entire family of compatible Elan readers should already be recognized without modification, so if you need to do this, the chance is slim. But my info could be outdated.

WARNING: However small, there is a possibility that your device can be damaged or end up in some unusable state if it receives commands that it doesn't recognize. I think this is quite unlikely. Nevertheless, you have been warned.

First, find out device id of your reader.

$ lsusb | grep -i elan
Bus 002 Device 028: ID 04f3:abcd Elan Microelectronics Corp.
                            ^^^^

Now add it to libfprint/drivers/elan.h before {0, 0, 0}.

@@ -208,6 +208,7 @@ static const struct usb_id elan_id_table[] = {
        {.vendor = ELAN_VEND_ID,.product = 0x0c31,.driver_data = ELAN_ALL_DEV},
        {.vendor = ELAN_VEND_ID,.product = 0x0c32,.driver_data = ELAN_ALL_DEV},
        {.vendor = ELAN_VEND_ID,.product = 0x0c33,.driver_data = ELAN_ALL_DEV},
+       {.vendor = ELAN_VEND_ID,.product = 0xabcd,.driver_data = ELAN_ALL_DEV},
        {0, 0, 0,},
 };

And recompile.

Installing

You probably want a clean build without debug logging.

venv/bin/meson builddir
venv/bin/meson configure builddir -Ddoc=false -Dlibdir=lib
cd builddir
ninja
sudo ninja install

Now you can use it with fprintd. Don't forget to enroll: fprintd-enroll. If you want to use it for auth (login, sudo etc.) you also need PAM module: apt install libpam-fprintd.

fprintd-enroll and fprintd-verify are separate from examples/enroll and examples/verify.

Uninstalling

cd builddir
sudo ninja uninstall

Common problems

The algorithm which libfprint uses to match fingerprints doesn't like small images like the ones these drivers produce. There's just not enough minutiae (recognizable print-specific points) on them for a reliable match. This means that unless another matching algo is found/implemented, these readers will not work as good with libfprint as they do with vendor drivers.

To get bigger images the driver expects you to swipe the finger over the reader. This works quite well for readers with a rectangular 144x64 sensor. Worse than real swipe readers but good enough for day-to-day use. It needs a steady and relatively slow swipe. There are also square 96x96 sensors and I don't know whether they are in fact usable or not because I don't have one. I imagine they'd be less reliable because the resulting image is even smaller. If they can't be made usable with libfprint, I might end up dropping them because it's better than saying they work when they don't.

Most enrolling and verification problems are caused by bad quality of scans. Check various *.pgm files to see what's wrong.

If you still wish to try touch operation, use elan-touch branch. For me even enrolling is impossible with touch. YMMV.

Good image

good image

Touch instead of swipe

touch instead of swipe

Part of log from example/enroll:

...
assembling:debug [do_movement_estimation] calc delta completed in 0.151993 secs
assembling:debug [do_movement_estimation] calc delta completed in 0.145175 secs
assembling:debug [fpi_do_movement_estimation] errors: 164713 rev: 163875
assembling:debug [fpi_assemble_frames] height is -20              <-- height too small (abs value)
fp:debug [fpi_img_new] length=15120
fp:debug [fpi_imgdev_image_captured]
fp:debug [fpi_img_detect_minutiae] minutiae scan completed in 0.003507 secs
fp:debug [fpi_img_detect_minutiae] detected 4 minutiae
fp:debug [print_data_new] driver=15 devtype=0000
fp:debug [fpi_imgdev_image_captured] not enough minutiae, 4/10    <-- can't get enough minutiae
...
sync:debug [fp_enroll_finger_img] enroll should retry
fp:debug [fp_img_save_to_file] written to 'enrolled.pgm'
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Finger moved too fast

moved too fast

If you swipe too fast, frames don't cover the fingerprint without gaps. Try swiping along the entire fingerprint in no less than 2 sec.

Rotated reader

Some readers have square sensors and since they are in fact touch type, there's no difference how they are installed in relation to the user. The driver assumes a certain orientation but since in can't know for sure, sometimes the orientation is wrong and the the frames are assembled incorrectly.

rotated reader

Since in theory the same reader can be installed differently, there's no good way to deal with this problem at the moment. If you have it, please open an issue and include your device id and short description (e.g laptop model if the reader is integrated or model if it's a separate USB device).

Uninstalling with autotools

libfprint has been ported to Meson. This means once you clone a recent version of code, you won't be able to make uninstall libfprint you installed from source earlier. Before you upgrade it's better to remove the previous installation:

git checkout c723a0f
./autogen.sh
sudo make uninstall
git checkout elan

libfprint's People

Contributors

alexiade avatar anarsoul avatar andree182 avatar antoneliasson avatar azzieg avatar carlosolmedo avatar cgwalters avatar fabled avatar gchain avatar gentakojima avatar guidograzioli avatar gws avatar hadess avatar hmaarrfk avatar iafilatov avatar jbicha avatar juvenn avatar jwrdegoede avatar kunalg avatar moben avatar patrickmarlier avatar wrussell1999 avatar zemen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libfprint's Issues

f510ua(x510uar) linux does not see the scanner in lsusb

Hello! Before and after installing libfprint (Everything was compiled without errors) in lsusb and lspci there is nothing like fingerprint. Windows 10 sees fingerprint (ACPI \ VEN_ELAN & DEV_7001), and in Linux only the touchpad (04f3:3057) in $ xinput. Can you advise something?

fprintd-enroll times out

I'm on Arch Linux (rolling release distro) with a very recent version of fprint: 0.8.0-1

After installing the modified libfprint library, running fprint-enroll times out with the following error:

[philipp@lion ~]$ fprintd-enroll 
list_devices failed: Failed to activate service 'net.reactivated.Fprint': timed out (service_start_timeout=25000ms)

Using examples/enroll and examples/verify works nicely with my 04f3:0c1a Elan though.

Build Fails with Syntax Error

While trying to build, I get a syntax error:

./configure: line 16239: syntax error near unexpected token `LIBUSB,'
./configure: line 16239: `PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= 0.9.1)'

I tried searching for a solution, but didn't come up with anything...

Authentication Failed for 04f3:0c4b

I am using the lenovo Ideapad 3 Ryzen 5500
O/P of lsusb:
04f3:0c4b Elan Microelectronics Corp. ELAN:Fingerprint
Issue:
When trying to enroll it says fingerprint disconnected

Not device found

I run command LD_LIBRARY_PATH=./libfprint/.libs/ fprint_demo and see message "Device not found" ((
default

Help me please((

Tried to access unknown option "drivers"

Hello,

when i tried to compile the library, i have this mistake :

Called /usr/bin/pkg-config libusb-1.0 --libs -> 0
-lusb-1.0
Native dependency libusb-1.0 found: YES 1.0.21
Running compile:
Working directory: /tmp/tmp_qskrjw6
Command line: cc /tmp/tmp_qskrjw6/testfile.c -pipe -D_FILE_OFFSET_BITS=64 -o /tmp/tmp_qskrjw6/output.exe -O0 -Wl,--start-group -lm -Wl,--end-group
Code:
int main(int argc, char **argv) { return 0; }
Compiler stdout:
Compiler stderr:
Library m found: YES
meson.build:46:0: ERROR: Tried to access unknown option "drivers".

I use ubuntu 18.04 and the kernel 4.17.6-041706-generic.

Thanks a lot :)

I own a 04f3:0903 (Asus Zenbook 430) and willing to hack

Hi,
I just bought this new Zenbook with the 04f3:090 fingerprint reader and with the 0.99 version of libfprint the fingerprint reader works to some extent, it sometimes successfully enrolls, but most of the time exits with: enroll-unknown-error.

I can program / hack / test, just need some pointers on where to start.
I don't know whether I better start here, or with the official libfprint repo, I guess it is good to use the official code since it was merged there, but maybe this is the place for good pointers to the specific hardware.

Logs from 0903 while not crashing

Host

Debian Buster:
Linux renegade 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

ASUS UX430U:
Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.

Enroll

$ sudo examples/enroll 2> enroll.txt 
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.
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Scan your finger now.
Wrote scanned image to enrolled.pgm
Enroll stage passed. Yay!

Scan your finger now.
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Scan your finger now.
Wrote scanned image to enrolled.pgm
Enroll stage passed. Yay!

Scan your finger now.
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Scan your finger now.
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Scan your finger now.
Wrote scanned image to enrolled.pgm
Didn't quite catch that. Please try again.

Scan your finger now.
Enroll failed with error -22

STDERR: enroll.txt

Verify (fails)

$ sudo examples/verify 2> verify.txt
Found device claimed by ElanTech Fingerprint Sensor driver
Opened device. Loading previously enrolled right index finger data...

STDERR: verify.txt

Scanner rotated on Acer Swift 5

It appears that on the Acer Swift 5 the fingerprint sensor is rotated 90 degrees from where this driver expects it to be, resulting in images that don't stitch together properly. Seems like the code assumes that the driver is positioned like this:

XXXXXXX
XXXXXXX
XXXXXXX

But on my laptop it is like this:

XXXX
XXXX
XXXX
XXXX

The code works otherwise for scanning the print, it just stitches the image together incorrectly. If I swipe left to right instead of top to bottom then it produces a good image. (For some reason verification fails still, but it is at least giving a good image that way. I can open a separate issue for the verify failure.)

Not sure how the stitching works currently, but it seem to do some sort of overlap detection to help with the alignment. If there's a way of quantifying how well the images overlap maybe run the process in both orientations, that way it will work either way that you scan your print?

By the way, thanks a ton for working on this driver!

Making the drivers work on 96x96 sensor

I have a square sensor but I don't know if it is the 96x96 sensor but what I can tell is that the driver doesn't detect my finger print correctly or even if it does in some rare cases it is not sufficient to authenticate.

Is there is a way to make it work?

sudo command broken, shared libraries not found

Hi,

I installed the drivers then I got strange messages when typing sudo command in terminal. I tried to remove the driver by deleting the shared libraries in /usr/local/lib, now sudo command is completely broken.

Here is the message I got each time I type sudo command:

fingerprint-helper: error while loading shared libraries: libfprint.so.0: cannot open shared object file: No such file or directory

then entering my password give me a error message and I can do nothing.

I run Linux Mint 18.3 Cinnamon based on Ubuntu 16.04.
I can't even reinstall the drivers, because I need sudo command.

Can you help me ?

SPI device not detected

Hi, I am using Asus Flip S UX370UAF with ArchLinux. When I tried to list available devices, there were none.
However with cmd
cat /sys/bus/acpi/devices/*/path | grep "\.SPI\|\.FPNT"

I have output

\_SB_.PCI0.SPI0
\_SB_.PCI0.SPI1.FPNT
\_SB_.PCI0.SPI0.SPBA
\_SB_.PCI0.SPI1

Is there any way I can modify the code to get it to work?

Thanks in advance.
Jack Lu

0903 not recognize by fprint

I followed all the instructions on github and I tried all the examples. It all works but fprint is not recognizing my devices.

list_devices failed: No devices available

Here is my lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f3:0903 Elan Microelectronics Corp. 
Bus 001 Device 006: ID 13d3:56dd IMC Networks 
Bus 001 Device 005: ID 8087:0a2b Intel Corp. 
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Log file:

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] 0x5616fd924ae0 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 0142
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd924ae0 entering state 1
elan:debug [activate_run_state] FW ver 0x0142
drv:debug [__ssm_call_handler] 0x5616fd924ae0 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] 0x5616fd924ae0 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 96x96
drv:debug [__ssm_call_handler] 0x5616fd924ae0 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] 0x5616fd924ae0 completed with status 0
elan:debug [activate_complete] 
fp:debug [fpi_imgdev_activate_complete] status 0
async:debug [fpi_drvcb_capture_started] 
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009996s
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] changing to 1
elan:debug [elan_calibrate] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x5616fd924ae0 entering state 0
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 6e1e... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd924ae0 entering state 1
elan:debug [elan_save_background] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd924ae0 entering state 2
elan:debug [elan_run_cmd] 4024
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 1e1e
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd924ae0 entering state 3
elan:debug [elan_need_calibration] 
elan:debug [elan_need_calibration] calibration mean: 7680, bg mean: 7742, delta: 62
drv:debug [fpi_ssm_mark_completed] 0x5616fd924ae0 completed with status 0
elan:debug [calibrate_complete] 
elan:debug [elan_capture] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 0
elan:debug [elan_run_cmd] 4031
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
fp:debug [fpi_imgdev_report_finger_status] finger on sensor
elan:debug [dev_change_state] 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 572f... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 0c30... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] ab30... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] d12f... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 6331... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] bb31... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 6c31... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] fa30... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] a830... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] f430... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 8b31... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] c031... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 8c35... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 4529... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] f335... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] a02f... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 742d... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 632d... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 8a32... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 5031... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 4832... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x5616fd91f430 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 1
drv:debug [fpi_ssm_mark_completed] 0x5616fd91f430 completed with status -110
elan:debug [capture_complete] 
elan:debug [elan_submit_image] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
assembling:debug [do_movement_estimation] calc delta completed in 0.246890 secs
assembling:debug [do_movement_estimation] calc delta completed in 0.247447 secs
assembling:debug [fpi_do_movement_estimation] errors: 107085 rev: 111939
assembling:debug [do_movement_estimation] calc delta completed in 0.246745 secs
assembling:debug [fpi_assemble_frames] height is 35
fp:debug [fpi_img_new] length=12240
fp:debug [fpi_imgdev_image_captured] 
elan:debug [dev_change_state] 3
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009986s
poll:debug [get_next_timeout_expiry] next timeout in 0.009978s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout] 
elan:debug [elan_change_state] changing to 3
elan:debug [elan_stop_capture] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x5616fd926470 entering state 0
elan:debug [stop_capture_run_state] 
elan:debug [elan_run_cmd] 000b
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done] 
drv:debug [fpi_ssm_mark_completed] 0x5616fd926470 completed with status 0
elan:debug [stop_capture_complete] 
fp:debug [fpi_imgdev_report_finger_status] finger removed
async:debug [fpi_drvcb_report_capture_result] result 0
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009997s
sync:debug [fp_dev_img_capture] result: complete
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.009942s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout] 
elan:debug [elan_change_state] changing to 0
elan:debug [elan_deactivate] 
fp:debug [fpi_imgdev_deactivate_complete] 
async:debug [fpi_drvcb_capture_stopped] 
sync:debug [capture_stop_cb] 
fp:debug [fp_img_save_to_file] written to 'finger.pgm'
fp:debug [fp_img_save_to_file] written to 'finger_standardized.pgm'
sync:debug [fp_dev_close] 
elan:debug [dev_deinit] 
elan:debug [elan_dev_reset] 
async:debug [fpi_drvcb_close_complete] 
sync:debug [sync_close_cb] 
fp:debug [fp_exit] 
(venv) lau@ubuntulau:~/libfprint/builddir_dbg$ sudo 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] 0x564ccb02f640 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 0142
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb02f640 entering state 1
elan:debug [activate_run_state] FW ver 0x0142
drv:debug [__ssm_call_handler] 0x564ccb02f640 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] 0x564ccb02f640 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 96x96
drv:debug [__ssm_call_handler] 0x564ccb02f640 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] 0x564ccb02f640 completed with status 0
elan:debug [activate_complete] 
fp:debug [fpi_imgdev_activate_complete] status 0
async:debug [fpi_drvcb_capture_started] 
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009996s
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] changing to 1
elan:debug [elan_calibrate] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x564ccb02f640 entering state 0
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 031e... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb02f640 entering state 1
elan:debug [elan_save_background] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb02f640 entering state 2
elan:debug [elan_run_cmd] 4024
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 1e1e
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb02f640 entering state 3
elan:debug [elan_need_calibration] 
elan:debug [elan_need_calibration] calibration mean: 7680, bg mean: 7637, delta: 43
drv:debug [fpi_ssm_mark_completed] 0x564ccb02f640 completed with status 0
elan:debug [calibrate_complete] 
elan:debug [elan_capture] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 0
elan:debug [elan_run_cmd] 4031
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
fp:debug [fpi_imgdev_report_finger_status] finger on sensor
elan:debug [dev_change_state] 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] e724... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] f325... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 5025... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] da23... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 7725... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 0d24... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 1632... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] b531... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 6533... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 7525... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 7f27... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 1925... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 5829... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 55
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 2
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] 1431... (18432 bytes)
elan:debug [elan_cmd_done] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 3
elan:debug [elan_save_img_frame] 
elan:debug [elan_save_frame] 
drv:debug [__ssm_call_handler] 0x564ccb037b00 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 1
drv:debug [fpi_ssm_mark_completed] 0x564ccb037b00 completed with status -110
elan:debug [capture_complete] 
elan:debug [elan_submit_image] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
elan:debug [elan_process_frame_thirds] 
assembling:debug [do_movement_estimation] calc delta completed in 0.214317 secs
assembling:debug [do_movement_estimation] calc delta completed in 0.154640 secs
assembling:debug [fpi_do_movement_estimation] errors: 142343 rev: 188798
assembling:debug [do_movement_estimation] calc delta completed in 0.155844 secs
assembling:debug [fpi_assemble_frames] height is 212
fp:debug [fpi_img_new] length=37728
fp:debug [fpi_imgdev_image_captured] 
elan:debug [dev_change_state] 3
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009987s
poll:debug [get_next_timeout_expiry] next timeout in 0.009980s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout] 
elan:debug [elan_change_state] changing to 3
elan:debug [elan_stop_capture] 
elan:debug [elan_dev_reset] 
drv:debug [__ssm_call_handler] 0x564ccb038560 entering state 0
elan:debug [stop_capture_run_state] 
elan:debug [elan_run_cmd] 000b
elan:debug [elan_cmd_cb] 
elan:debug [elan_cmd_read] 
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done] 
drv:debug [fpi_ssm_mark_completed] 0x564ccb038560 completed with status 0
elan:debug [stop_capture_complete] 
fp:debug [fpi_imgdev_report_finger_status] finger removed
async:debug [fpi_drvcb_report_capture_result] result 0
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009997s
sync:debug [fp_dev_img_capture] result: complete
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.009938s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout] 
elan:debug [elan_change_state] changing to 0
elan:debug [elan_deactivate] 
fp:debug [fpi_imgdev_deactivate_complete] 
async:debug [fpi_drvcb_capture_stopped] 
sync:debug [capture_stop_cb] 
fp:debug [fp_img_save_to_file] written to 'finger.pgm'
fp:debug [fp_img_save_to_file] written to 'finger_standardized.pgm'
sync:debug [fp_dev_close] 
elan:debug [dev_deinit] 
elan:debug [elan_dev_reset] 
async:debug [fpi_drvcb_close_complete] 
sync:debug [sync_close_cb] 
fp:debug [fp_exit]

Unrecognized error code when running img_capture with Elan 04f3:0903

Hi,
thanks for the project - awesome stuff!

I have been trying to setup the whole libfprint/fprintd stuff today on my zenbook ux430.
I've tried to run your examples as well, and while verify and enroll seem to work perfectly, I had a strange issue when running img_capture.

I am pasting the logs here:

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

sync:error [fp_dev_img_capture] unrecognised return code 101
image capture failed, code -22

It looks like fp_dev_img_capture is getting this weird 101 error code when calling fp_async_capture_start... maybe it's a driver issue?

Thanks again!

Fingerprint not reliable

Hi,
first of all, thank you for your great work.

Concerning the problem, I find the reader very unreliable, I did the fprint-enroll about 20 times and still can't get a single match with fprint-verify. I think the problem come from the fingerprint reader itself: it is not made for a ''Swipe'' finger identification. The size of the reader (about 1cm by 1cm) makes it more appropriate for ''single scan'' authentication.

I might be wrong though.

have a nice day and continue your great work !

Francis

Great job!

Many many thanks for your job!
I successfully configured my Xiaomi Notebook Pro to log in with fingerprint, I'm really happy πŸ˜„ πŸŽ‰

for other users with my same hardware, I can say that it works:

notebook: Xiaomi Notebook Pro
os: Linux Mint 19 (Ubuntu 18.04)
device: ID 04f3:0c1a Elan Microelectronics Corp

Asus UX461UN | Unrecognized device

Hey. I successfully installed your program on ubuntu 18.10. Unfortunately, my device is unrecognized on my new Asus UX461UN. I also realized that the lsusb | command grep -i elan does not show my fingerprint reader device info. Here is the thread about it https://ubuntuforums.org/showthread.php?t=2388793 . Unfortunately, I did not find any more information. I can not find any driver. What can you advise me in this situation? Is there a chance that the driver will appear? Best Regards

fprint enroll not keeping fingerpints

Fedora fc40 with 04f3:0c6e Elan Microelectronics Corp. ELAN:Fingerprint

So using the Gnome fingerprint reader errors when it starts to scan fingerprint with "device claimed by another process" You can kill the process and start again, but it does the same.

fprintd-enrol seems to work

root_root@fedora:/usr/lib64# fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-stage-passed
Enroll result: enroll-disconnected
_

but list shows empty

found 1 devices

Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
User root has no fingers enrolled for ElanTech Fingerprint Sensor.

Syslog shows

Jun 29 09:18:10 fedora fprintd[11792]: Device reported an error during enroll: The driver encountered a protocol error with the device.

This kills the systemd process and needs to be restarted.

I did as normal user and as root.

I've tried the fedora supplied fprintd v1.94.2 but also manually installed v.1.94.6 and v.1.94.7

If there is any debugging you want me to do please let me know how I can help.

Kind regards

Paul

Trying to make 04F3:3057 work

I have an ELAN1300:00 04F3:3057 touchpad with included fingerprint sensor. The thing is, I'm not even sure the fingerprint sensor should be listed separately as its own input device, but it's currently not (in /proc/bus/input/devices only the touchpad is listed).

Then I'd like to see if this driver can work out of the box for this fingerprint sensor (I don't know any C at all, unfortunately)

How could I do that ? (tell the driver the device to use, as currently it does show No device detected)

Support for 2542

Hi,

I have an Asus Vivobook 14 Flip. It has an Elan fingerprint reader, which shows up as 04f3:2542. I was wondering how hard it would be to add support for this device to your driver.

Here's the output of lsusb...

Bus 002 Device 009: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 002 Device 008: ID 2109:0813 VIA Labs, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 8087:0a2b Intel Corp.
Bus 001 Device 004: ID 04f3:2542 Elan Microelectronics Corp.
Bus 001 Device 003: ID 13d3:5a03 IMC Networks
Bus 001 Device 002: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 009: ID 2109:2813 VIA Labs, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Is there anything I can do to facilitate adding support for this device?

where to find finger.pgm?

after doing "sudo examples/img_capture", how to open finger.pgm, and where can I found it? what to do from that file?

Lockout after cancelling enroll or verify operation

I own 04f3:0903 too. Thanks for this ELAN driver. Now I can log in with the fingerprint. I learned how to get a good fingerprint scan by using gtk-libfprint-test and match it with the sample images provided in this repository.

Here is what I learned:

  • Swipe down, not swipe up.
  • Touch gently. Don't have to touch too hard or too light.

I noticed that the fingerprint device will locked up when I cancelled enrolling or verifying. Here is how it looks like:

➜  ~/Projects/libfprint/libfprint git:(1abe213) βœ— fprintd-verify
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
 - #0: right-index-finger
^C
➜  ~/Projects/libfprint/libfprint git:(1abe213) βœ— fprintd-verify
Using device /net/reactivated/Fprint/Device/0
failed to claim device: Device was already claimed

I have to reboot my laptop so the fingerprint can be unlocked. I'm willing to help, but I'm still a beginner here. Just tell me how to do it if you need something, like logs, etc. Thank you very much.

[request] Support for Synaptics 06cb:00da

Would be great if this fingerprintreader would get support.

lsusb -v

Bus 003 Device 004: ID 06cb:00da Synaptics, Inc.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 16
bDeviceProtocol 255
bMaxPacketSize0 8
idVendor 0x06cb Synaptics, Inc.
idProduct 0x00da
bcdDevice 0.00
iManufacturer 0
iProduct 0
iSerial 1 8f0f31bae366
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0027
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 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 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 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval

Install dependancies on Fedora

I'm trying to compile this on fedora 37. I cannot acquire the requirements and I'm not prompted for them. This is the output of venv/bin/meson builddir_debug

The Meson build system
Version: 1.0.0
Source dir: /home/cpeck/libfprint
Build dir: /home/cpeck/libfprint/builddir_dbg
Build type: native build
Project name: libfprint
Project version: 0.7.0
C compiler for the host machine: cc (gcc 12.2.1 "cc (GCC) 12.2.1 20220819 (Red Hat 12.2.1-2)")
C linker for the host machine: cc ld.bfd 2.38-24
C++ compiler for the host machine: c++ (gcc 12.2.1 "c++ (GCC) 12.2.1 20220819 (Red Hat 12.2.1-2)")
C++ linker for the host machine: c++ ld.bfd 2.38-24
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -fgnu89-inline: YES 
Compiler for C supports arguments -fvisibility=hidden: YES 
Compiler for C supports arguments -std=gnu99: YES 
Compiler for C supports arguments -Wall: YES 
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Werror-implicit-function-declaration: YES 
Compiler for C supports arguments -Wno-pointer-sign: YES 
Compiler for C supports arguments -Wshadow: YES 
Found pkg-config: /usr/bin/pkg-config (1.8.0)
Run-time dependency glib-2.0 found: YES 2.74.1
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency libusb-1.0 found: NO (tried pkgconfig)

meson.build:42:0: ERROR: Dependency "libusb-1.0" not found, tried pkgconfig

A full log can be found at /home/cpeck/libfprint/builddir_dbg/meson-logs/meson-log.txt
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.

elan fingerprint rotated reader bug

i have an acer swift 5 2017
with an elantech reader 04f3:0c03
and the picture saved looks like this rotation example.
verify always fails.

ninja install failed Linux fail

On sudo ninja install
FAILED: meson-internal__install
/home/muneeb/Downloads/libfprint/venv/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.

Support for 04f3:0c4b

ID 04f3:0c4b Elan Microelectronics Corp. ELAN:Fingerprint

Your solve will be unique, because I found out so many sites&repos(

That ID is mounted on Lenovo ThinkPads.

After run command 'ninja', i noticed error

I run commands:

venv/bin/meson builddir_dbg
venv/bin/meson configure builddir_dbg -Ddebug_log=true
cd builddir_dbg
ninja

But after ninja, I noticed error: ../libfprint/drivers/elan.c:827:2: error: implicit declaration of function β€˜G_DEBUG_HERE’ [-Werror=implicit-function-declaration]

Noisy/disjointed image on 04f3:0c1a

Fingerprint scanner is producing an extremely noisy and disjointed images, with banding similar to what is shown on the 'too fast' image. Is this just a result of a poor sensor?

No prerequisite list found

I had problems compiling cause many libs were missing.
Here it is a list of what I had to install to make it working:

  • pkg-config
  • libtool
  • m4
  • automake
  • libusb-1.0.0-dev (I had to compile it from source)
  • libudev-dev
  • libnss3-dev
  • libglib2.0-dev
  • libpixman-1-dev
  • libxv-dev

Probably the list it's not complete but I am quite sure that all of these packages are needed.
It would be helpful adding a complete list in the README.md file.

Problem with fprintd-enroll

I have done all things as in instructions and i can get my fingerprint image from
sudo ./examples/img_capture
but after ninja install, doing "apt install libpam-fprintd" and making fprintd-enroll i am getting "list_devices failed: No devices available"
what i am doing wrong?

here is my Elan device log from lsusb
Bus 001 Device 003: ID 04f3:0c1a Elan Microelectronics Corp.

[fp_dev_img_capture] unrecognised return code -74

I followed all the instructions on github and I get error -74. And device is unrecognize all fprint.
lsusb:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 1038:1280 SteelSeries ApS
Bus 001 Device 009: ID 1038:1283 SteelSeries ApS
Bus 001 Device 007: ID 0451:2036 Texas Instruments, Inc. TUSB2036 Hub
Bus 001 Device 006: ID 04f3:0c1a Elan Microelectronics Corp.
Bus 001 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 004: ID 1bcf:2cb7 Sunplus Innovation Technology Inc.
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 062a:415e Creative Labs
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Call sudo example/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:0c1a
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0c1a
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] 0x55992d323ff0 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 0142
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 1
elan:debug [activate_run_state] FW ver 0x0142
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 2
elan:debug [elan_run_cmd] 000c
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 4000... (4 bytes)
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 144x64
drv:debug [__ssm_call_handler] 0x55992d323ff0 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] 0x55992d323ff0 completed with status 0
elan:debug [activate_complete]
fp:debug [fpi_imgdev_activate_complete] status 0
async:debug [fpi_drvcb_capture_started]
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009994s
poll:debug [get_next_timeout_expiry] next timeout in 0.009980s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] changing to 1
elan:debug [elan_calibrate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 0
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 8b24... (18432 bytes)
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 1
elan:debug [elan_save_background]
elan:debug [elan_save_frame]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 2
elan:debug [elan_run_cmd] 4024
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 1af0
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d323ff0 entering state 3
elan:debug [elan_need_calibration]
elan:debug [elan_need_calibration] calibration mean: 6870, bg mean: 6748, delta: 122
drv:debug [fpi_ssm_mark_completed] 0x55992d323ff0 completed with status 0
elan:debug [calibrate_complete]
elan:debug [elan_capture]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x55992d32c070 entering state 0
elan:debug [elan_run_cmd] 4031
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d32c070 entering state 1
elan:debug [elan_run_cmd] 403f
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] af
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55992d32c070 entering state 2
drv:debug [fpi_ssm_mark_aborted] error -74 from state 2
drv:debug [fpi_ssm_mark_completed] 0x55992d32c070 completed with status -74
elan:debug [capture_complete]
elan:debug [dev_change_state] 3
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009990s
poll:debug [get_next_timeout_expiry] next timeout in 0.009965s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] changing to 3
elan:debug [elan_stop_capture]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x55992d32c070 entering state 0
elan:debug [stop_capture_run_state]
elan:debug [elan_run_cmd] 000b
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done]
drv:debug [fpi_ssm_mark_completed] 0x55992d32c070 completed with status 0
elan:debug [stop_capture_complete]
fp:debug [fpi_imgdev_report_finger_status] finger removed
async:debug [fpi_drvcb_report_capture_result] result -74
elan:debug [dev_change_state] 1
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009992s
sync:error [fp_dev_img_capture] unrecognised return code -74
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.009800s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_change_state] changing to 0
elan:debug [elan_deactivate]
fp:debug [fpi_imgdev_deactivate_complete]
async:debug [fpi_drvcb_capture_stopped]
sync:debug [capture_stop_cb]
image capture failed, code -22
sync:debug [fp_dev_close]
elan:debug [dev_deinit]
elan:debug [elan_dev_reset]
async:debug [fpi_drvcb_close_complete]
sync:debug [sync_close_cb]
fp:debug [fp_exit]

when i run command sudo examples/verify some error is appar.

dk@dk:~/libfprint/builddir_dbg$ sudo examples/verify
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:0c1a
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0c1a
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. Loading previously enrolled right index finger data...
fp:debug [load_from_file] from /home/dk/.fprint/prints/0015/00000000/7
fp:error [load_from_file] /home/dk/.fprint/prints/0015/00000000/7 load failed: Failed to open file β€œ/home/dk/.fprint/prints/0015/00000000/7”: No such file or directory
Failed to load fingerprint, error -2
Did you remember to enroll your right index finger first?
sync:debug [fp_dev_close] 
elan:debug [dev_deinit] 
elan:debug [elan_dev_reset] 
async:debug [fpi_drvcb_close_complete] 
sync:debug [sync_close_cb] 
fp:debug [fp_exit] 

Support for 04f3:30c6

Is this device supported? If not it's easy to path this fork and adding support for this device?

Elan 0903 fingerprint bug

Hi,

First of all, thank you for your work on developing a driver for these Elan hardware. I followed your discussion on launchpad and I understand it was a hard job

I just tried the last version of fprint and tried to use my Elan device. img_capture works well and enroll works for some time. However after 2-4 times of scanning my fingerprint a bug occurs and the device seems to not respond. Here is the output of enroll when it crashs:

Scan your finger now.
sync:debug [fp_enroll_finger_img]
sync:debug [fp_enroll_finger_img] elan will handle enroll stage 4/4
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_capture]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x55ed7034b010 entering state 0
elan:debug [elan_run_cmd] 4031
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_read] skipping read, not expecting anything
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x55ed7034b010 entering state 1
elan:debug [elan_run_cmd] 403f
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] 0x55ed7034b010 entering state 2
fp:debug [fpi_imgdev_report_finger_status] finger on sensor
elan:debug [elan_run_cmd] 0009
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_cb] transfer timed out
drv:debug [fpi_ssm_mark_aborted] error -110 from state 2
drv:debug [fpi_ssm_mark_completed] 0x55ed7034b010 completed with status -110
elan:debug [capture_complete]
fp:debug [fpi_imgdev_session_error] error 0
fp:error [fpi_imgdev_session_error] BUG at imgdev.c:313
async:debug [fpi_drvcb_enroll_stage_completed] result 0
sync:debug [sync_enroll_cb] result 0
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009980s
sync:error [fp_enroll_finger_img] unrecognised return code 0
sync:debug [fp_enroll_finger_img] ending enrollment
async:debug [fp_async_enroll_stop]
elan:debug [dev_deactivate]
elan:debug [elan_deactivate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x55ed7034b010 entering state 0
elan:debug [deactivate_run_state]
elan:debug [elan_run_cmd] 000b
poll:debug [get_next_timeout_expiry] next timeout in 0.009680s
poll:debug [get_next_timeout_expiry] first timeout already expired
poll:debug [handle_timeout]
elan:debug [elan_capture]
elan:debug [elan_dev_reset]
elan:error [elan_dev_reset] BUG at drivers/elan.c:101
drv:debug [__ssm_call_handler] 0x55ed703ee460 entering state 0
elan:debug [elan_run_cmd] 4031
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] 0x55ed7034b010 completed with status -110
elan:debug [deactivate_complete]
fp:debug [fpi_imgdev_deactivate_complete]
async:debug [fpi_drvcb_enroll_stopped]
sync:debug [enroll_stop_cb]
Enroll failed with error -22
sync:debug [fp_dev_close]
elan:debug [dev_deinit]
elan:debug [elan_dev_reset]
async:debug [fpi_drvcb_close_complete]
libusb: error [do_close] Device handle closed while transfer was still being processed, but the device is still connected as far as we know
libusb: error [do_close] A cancellation hasn't even been scheduled on the transfer for which the device is closing
sync:debug [sync_close_cb]
fp:debug [fp_exit]

Please tell me if you need more information.
Thank you again for your job!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.