Missing 04f3:0c98 support
The Lenovo Yoga 7 2-in-1 14IML9's (https://linux-hardware.org/?probe=a4e0198cce) 04f3:0c98 Elan finger print sensor seems not to be supported.
$ sudo fprintd-enroll
Impossible to enroll: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No devices available
I tried adding the hardware id to elan.h as described here https://github.com/iafilatov/libfprint?tab=readme-ov-file#unrecognized-devices
$ 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:0c98
fp:debug [find_supporting_driver] selected driver elan supports USB device 04f3:0c98
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] 0x5dd8dd7593c0 entering state 0
elan:debug [elan_run_cmd] 4019
elan:debug [elan_cmd_cb]
elan:debug [elan_cmd_read]
elan:debug [elan_cmd_cb] 0617
elan:debug [elan_cmd_done]
drv:debug [__ssm_call_handler] 0x5dd8dd7593c0 entering state 1
elan:debug [activate_run_state] FW ver 0x0617
drv:debug [__ssm_call_handler] 0x5dd8dd7593c0 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] 0x5dd8dd7593c0 entering state 3
elan:debug [activate_run_state] sensor dimensions, WxH: 79x79
drv:debug [__ssm_call_handler] 0x5dd8dd7593c0 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] 0x5dd8dd7593c0 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.009999s
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] changing to 1
elan:debug [elan_calibrate]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x5dd8dd7593c0 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] 0x5dd8dd7593c0 completed with status -5
elan:debug [calibrate_complete]
elan:debug [elan_capture]
elan:debug [elan_dev_reset]
drv:debug [__ssm_call_handler] 0x5dd8dd7592c0 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] 0x5dd8dd7592c0 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] 0x5dd8dd7592c0 completed with status -110
elan:debug [capture_complete]
elan:debug [capture_complete] swipe too short: want >= 7 frames, got 0
elan:debug [dev_change_state] 3
poll:debug [fpi_timeout_add] in 10ms
poll:debug [get_next_timeout_expiry] next timeout in 0.009995s
poll:debug [get_next_timeout_expiry] next timeout in 0.009993s
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] 0x5dd8dd7592c0 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] 0x5dd8dd7592c0 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 101
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:error [fp_dev_img_capture] unrecognised return code 101
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.009985s
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]