[fprint] elan patch + poc 0x903 and 0x0C03

Hans de Goede hdegoede at redhat.com
Thu Jan 18 10:04:47 UTC 2018


Hi,

On 18-01-18 10:48, Sébastien Béchet wrote:
> On 17-01-18 19:21, Igor Filatov wrote:
>> We didn't have the spec before so I had no idea how different devices worked. Especially given that some commands which worked fine for me produced errors one other devices. Now that we have the docs I'll work on adapting the driver. Naturally, any info you have is welcome and so is any help with testing.
> 
> I have done the [synthesis](https://github.com/sbechet/elanfp/blob/master/README.md) about all informations we have a prepare questions for KT.

My 0x0c16 id reader has firmware version 1.56, resolution 96x96

I also have bought a stand-alone USB reader for when I would
find time to work on this, this has an usb-id of: 0x0c26.

After making these changes:

--- elanfp.c~	2018-01-18 10:58:59.919912347 +0100
+++ elanfp.c	2018-01-18 11:01:50.346280668 +0100
@@ -71,7 +71,8 @@
                  (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0903) ||
                  (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0907) ||
                  (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0c03) ||
-                (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0c16) ) {
+                (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0c16) ||
+                (desc.idVendor == 0x04f3) && (desc.idProduct == 0x0c26) ) {
                  r0 = 0;
                  printf("Device with vid %x pid %x found.\n", desc.idVendor, desc.idProduct);
                  break;
@@ -156,7 +157,7 @@
          printf("CMD Get Image Size sent\n");
      }
      r0 = libusb_bulk_transfer(handle, BULK_EP3_IN, img_buf, 4, &transferred, 0);
-    printf("Width x height = %dx%d\n", img_buf[0], img_buf[2]);
+    printf("Width x height = %dx%d\n", (unsigned char)img_buf[0], (unsigned char)img_buf[2]);

      /* calibration */

@@ -180,6 +181,7 @@
          }
          r0 = libusb_bulk_transfer(handle, BULK_EP3_IN, &result, 1, &transferred, 0);
          printf("Calibration Status: 0x%x\n", result);
+        if (result == 0x03) break;

          r0 = libusb_bulk_transfer(handle, BULK_EP1_OUT, get_cmd_status, 2, &transferred, 0);
          if((r0 == 0) && (transferred == 2)) {

This one works with the POC too, although for some reason the generated out.png
is square and seems to contain the image 3 times?

This one has firmware version 1.64, resolution 64x144 and as shown in the necessary changes this
one does report a calibration status of 0x03 when it is done with the calibration, I think
we should add an extra column for this to the hardware report table.

Regards,

Hans


More information about the fprint mailing list