[fprint] Improving the etes603 driver

Vasily Khoruzhick anarsoul at gmail.com
Thu Aug 20 18:58:19 PDT 2015


Hi Jason,

On Thu, Aug 20, 2015 at 11:51 AM, Jason Gerard DeRose
<jason at system76.com> wrote:
> 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.

Great!

> 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?

# do configure with custom prefix, enough to do it once
./configure --prefix=/home/user/tmp

# Installs your changes into your home
make all install

LD_LIBRARY_PATH=/home/user/tmp/lib ./fprint_demo

> 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?

Patrick probably can answer these questions

> 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'.

Hm, enroll-unknown-error doesn't look good. I guess you'll need to
debug it further.

>    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).

Ubuntu is fine, but please use libfprint from git for development

> 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]
>
> _______________________________________________
> fprint mailing list
> fprint at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/fprint


More information about the fprint mailing list