[fprint] Improving the etes603 driver

Jason Gerard DeRose jason at system76.com
Thu Aug 20 11:51:19 PDT 2015


Hello,

I work at System76 and am going to take a stab at improving the etes603
driver (1c7a:0603) as it's the fingerprint reader used in our current
generation hardware.

I'm just starting to get my head around the code and was hoping folks
here might be able to advise me on a few questions I currently have:

1.  What's the preferred workflow for making changes, building the
    library, and testing it?  In particular, can anyone point me to a
    good way to run the resulting build from the source tree without
    installing it?

2.  etes603.c mentions a number of features not yet implemented in the
    driver.  Of these missing features, any advise on where I should
    start, what features are likely to yield the best improvement for
    the effort when it comes to reliability and user experience?

3.  For whatever reason, this sensor and the current driver really
    don't like my fingers (which is actually great for testing).  When
    trying to enroll, frequently the etes603 driver will remove so many
    "empty" lines that the resulting image is less than 8 lines high,
    after which block_offsets() in nbis/mindtct/block.c will return an
    error, ultimately resulting in the device being put back into an
    idle state and fpintd-enroll failing with 'enroll-unknown-error'.

    At a glance, this seems like a scenario that the driver should be
    handling differently.  Is this true?  If so, can anyone describe
    what the driver should do in this scenario instead?  I have example
    log[*] output below from running against a libfprint deb I built
    with `--enable-debug-log`.

For what it's worth, I'm doing my development on Ubuntu Wily (libfprint
0.6.0, fprintd 0.6.0).

And a big thanks to everyone whose hard work gave the open source world
all these great drivers and a great driver framework!

Cheers,
Jason

[*]: Example log with --enable-debug-log enabled:

etes603:debug [process_remove_fp_end] Removing 498 empty lines from 
image
etes603:debug [process_remove_fp_end] Removing 496 empty lines from 
image
fp:debug [fpi_img_new] length=0
etes603:debug [m_capture_state] Sending the raw fingerprint image (0x0)
fp:debug [fpi_imgdev_image_captured]
fp:error [sanitize_image] no image height assigned
fp:debug [fpi_imgdev_report_finger_status] finger removed
fp:debug [fpi_imgdev_report_finger_status] reporting enroll result
async:debug [fpi_drvcb_enroll_stage_completed] result -22
async:debug [fp_async_enroll_stop]
etes603:debug [dev_deactivate] deactivating
etes603:debug [m_exit_start] Switching device to idle mode
drv:debug [__ssm_call_handler] 0x16e3000 entering state 0
drv:debug [fpi_ssm_mark_completed] 0x17572a0 completed with status 0
etes603:debug [m_capture_complete] And it's over.
drv:debug [__ssm_call_handler] 0x16e3000 entering state 1
drv:debug [fpi_ssm_mark_completed] 0x16e3000 completed with status 0
etes603:debug [m_exit_complete] The device is now in idle state
fp:debug [fpi_imgdev_deactivate_complete]
async:debug [fpi_drvcb_enroll_stopped]



More information about the fprint mailing list