iafilatov / libfprint

libfrpint driver for a family of Elantech fingerprint sensors
https://cgit.freedesktop.org/libfprint/libfprint/
GNU Lesser General Public License v2.1
146 stars 20 forks source link

Support for 04f3:0c4b #39

Open UnSstrennen opened 3 years ago

UnSstrennen commented 3 years ago

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.

XelXen commented 2 years ago

Even I am facing that issue, i am trying other branches

listout commented 2 years ago

@XelXen Same, I tried build the driver from source. Not working.

p-patil commented 2 years ago

I also tried building from source and manually adding this product ID to the table. Couldn't get examples/img_capture to work, and saw this at the end of the logs:

libusb: error [udev_hotplug_event] ignoring udev action change
libusb: error [udev_hotplug_event] ignoring udev action bind

I have a ThinkBook 14, which uses this fingerprint sensor.

listout commented 2 years ago

@UnSstrennen Any clues. @iafilatov says that the devices line could be supported (quote). I would like to work on this if there was any help from the maintainers.

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.

However the on libprintf's gitlab they mentioned something about reverse engineering being required for support.

jackfido commented 2 years ago

I have the same issue with this driver too, I have to run example/img_capture

(venv) user@host:~/Downloads/libfprint-elan-github-msg/builddir_dbg$ 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:0c4b fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0c4b Found device claimed by ElanTech Fingerprint Sensor driver sync:debug [fp_dev_open] async:debug [fp_async_dev_open] **libusb: error [get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/003/008, errno=13 libusb: error [get_usbfs_fd] libusb requires write access to USB device nodes async:error [fp_async_dev_open] usb_open failed, error -3 Could not open device. fp:debug [fp_exit]**

then as sudo:

`(venv) user@host:~/Downloads/libfprint-elan-github-msg/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:0c4b fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0c4b 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] 0x561384fafec0 entering state 0 elan:debug [elan_run_cmd] 4019 elan:debug [elan_cmd_cb] elan:debug [elan_cmd_read] elan:debug [elan_cmd_cb] 0401 elan:debug [elan_cmd_done] drv:debug [ssm_call_handler] 0x561384fafec0 entering state 1 elan:debug [activate_run_state] FW ver 0x0401 drv:debug [ssm_call_handler] 0x561384fafec0 entering state 2 elan:debug [elan_run_cmd] 000c elan:debug [elan_cmd_cb] elan:debug [elan_cmd_read] elan:debug [elan_cmd_cb] 4f00... (4 bytes) elan:debug [elan_cmd_done] drv:debug [ssm_call_handler] 0x561384fafec0 entering state 3 elan:debug [activate_run_state] sensor dimensions, WxH: 79x79 drv:debug [ssm_call_handler] 0x561384fafec0 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] 0x561384fafec0 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.009997s poll:debug [get_next_timeout_expiry] next timeout in 0.009992s 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] 0x561384fafec0 entering state 0 elan:debug [elan_run_cmd] 0009 elan:debug [elan_cmd_cb] elan:debug [elan_cmd_read] elan:debug [elan_cmd_cb] transfer failed: 6 elan:debug [elan_dev_reset] drv:debug [fpi_ssm_mark_aborted] error -5 from state 0 drv:debug [fpi_ssm_mark_completed] 0x561384fafec0 completed with status -5 elan:debug [calibrate_complete] elan:debug [elan_capture] elan:debug [elan_dev_reset] drv:debug [ssm_call_handler] 0x561384f98750 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] 0x561384f98750 entering state 1 elan:debug [elan_run_cmd] 403f elan:debug [elan_cmd_cb] transfer failed: 5 elan:debug [elan_dev_reset] drv:debug [fpi_ssm_mark_aborted] error -5 from state 1 drv:debug [fpi_ssm_mark_completed] 0x561384f98750 completed with status -5 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.009996s poll:debug [get_next_timeout_expiry] next timeout in 0.009989s poll:debug [get_next_timeout_expiry] next timeout in 0.009979s poll:debug [get_next_timeout_expiry] next timeout in 0.009976s poll:debug [get_next_timeout_expiry] next timeout in 0.009971s poll:debug [get_next_timeout_expiry] next timeout in 0.009967s 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] 0x561384f98750 entering state 0 elan:debug [stop_capture_run_state] elan:debug [elan_run_cmd] 000b drv:debug [fpi_ssm_mark_aborted] error -4 from state 0 drv:debug [fpi_ssm_mark_completed] 0x561384f98750 completed with status -4 elan:debug [stop_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.009998s poll:debug [get_next_timeout_expiry] first timeout already expired poll:debug [handle_timeout] elan:debug [elan_change_state] already in 3 libusb: error [udev_hotplug_event] ignoring udev action change ^C `

XelXen commented 2 years ago

I read about the driver support for 04f3:0c4b on thier gitlab but found out that it is not supported yet

listout commented 2 years ago

@XelXen It's most probably never will be supported (requires a lot of work).

On Tue, Jun 14, 2022 at 12:47 PM XelXen @.***> wrote:

I read about the driver support for 04f3:0c4b on thier gitlab but found out that it is not supported yet

— Reply to this email directly, view it on GitHub https://github.com/iafilatov/libfprint/issues/39#issuecomment-1154808378, or unsubscribe https://github.com/notifications/unsubscribe-auth/AP4726UA5A5LFM4FMBTJR7DVPAWX3ANCNFSM47CDIRWA . You are receiving this because you commented.Message ID: @.***>

XelXen commented 2 years ago

@listout elan drivers are closed Source I guess which is why they need reverse engineering to make an open source driver for it

listout commented 2 years ago

Yeah. The people who were successful in reverse engineering used to sniff packets using wireshark and then decrypt those packets. Although I'm not an expert, I have just seen people do it that way. If I knew how to do it, maybe I could give it a try since I've some free time at hand now.

On Tue, Jun 14, 2022 at 12:49 PM XelXen @.***> wrote:

@listout elan drivers are closed Source I guess which is why they need reverse engineering to make an open source driver for it

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

XelXen commented 2 years ago

@listout the worst part is that our device was unlucky to get the support

UnSstrennen commented 2 years ago

@XelXen @listout but it works on Windows devices!

listout commented 2 years ago

@UnSstrennen I know, I'm sure we all here know that. But that driver is closed source. libprintf have very recently added this device to their supported devices list. It's working, but not properly. So I guess we are heading in the right direction.

@XelXen Look at this merge request https://gitlab.freedesktop.org/libfprint/libfprint/-/merge_requests/356 and https://fprint.freedesktop.org/supported-devices.html (just ctrl+f and 04f3:0c4b). I was trying out the new release and there are some issues.

@UnSstrennen we can close this issue now.

XelXen commented 2 years ago

@UnSstrennen the drivers used on windows are official Elan FP Drivers. Libfprint team is just reverse-engineering the workings of the closed-source driver to port it to Linux and sadly our device hasn't been ported yet

XelXen commented 2 years ago

@listout Looks like u found a miracle, maybe we can reinstall libfprint and check if we got the support. The commit was merged 2 months ago but I tested it 8 months ago so we can try

listout commented 2 years ago

@XelXen I've tested the latest release, it's not good. The guy who made the change just made sure that it works and thats about it. If you look at the gitlab thread, you can see that other people have tested it voiced their opinion. My experience is same as those people. Verification still doesn't work.

Don't know why the developers though it was good enough to merge into a release :/

XelXen commented 2 years ago

@listout what were the issues you faced?

listout commented 2 years ago
XelXen commented 2 years ago

@listout We can just wait till the patches come out

listout commented 2 years ago

Yeah, but things are headed in right direction

On Thu, 16 Jun 2022, 10:49 am XelXen, @.***> wrote:

@listout https://github.com/listout We can just wait till the patches come out

— Reply to this email directly, view it on GitHub https://github.com/iafilatov/libfprint/issues/39#issuecomment-1157243667, or unsubscribe https://github.com/notifications/unsubscribe-auth/AP4726WK26TBRDMJVMENRY3VPK2OJANCNFSM47CDIRWA . You are receiving this because you were mentioned.Message ID: @.***>

XelXen commented 2 years ago

@listout if that's the case then I'm gonna wait for devs

listout commented 1 year ago

@XelXen definitely unlucky. I bought my ThinkPad E14 back in september and included the FP option. If I had known this model of FP was not supported I would have opted out of that, since I primarily use Linux.

On Tue, Jun 14, 2022 at 12:54 PM XelXen @.***> wrote:

@listout https://github.com/listout the worst part is that our device was unlucky to get the support

— Reply to this email directly, view it on GitHub https://github.com/iafilatov/libfprint/issues/39#issuecomment-1154814486, or unsubscribe https://github.com/notifications/unsubscribe-auth/AP4726XGXGHYWGVXN3IECATVPAXSDANCNFSM47CDIRWA . You are receiving this because you were mentioned.Message ID: @.***>

UnSstrennen commented 1 year ago

https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/285

va1m commented 1 year ago

https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/285#note_1734717

XelXen commented 3 months ago

Just checking in, the driver has finally been added and it works for the initial part but enroll process doesn't even work so I can't test it out any further.

Btw, my device is Thinkbook 15IML

jackfido commented 2 weeks ago

Idk if some of you has still the issue, but to me help me this link https://support.lenovo.com/mx/es/downloads/ds560939-elan-fingerprint-driver-for-ubuntu-2204-thinkpad-e14-gen-4-e15-gen-4 since Feb 2023 Lenovo has a driver, and I use it very well on Ubuntu Unity 22.04 LTS

listout commented 2 weeks ago

Does this work for E14 Gen 3?