Full lsusb output: Bus 001 Device 003: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.01 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x147e Upek idProduct 0x2016 Biometric Touchchip/Touchstrip Fingerprint Sensor bcdDevice 0.02 iManufacturer 1 UPEK iProduct 2 Biometric Coprocessor iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 39 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0004 1x 4 bytes bInterval 20 Device Status: 0x0000 (Bus Powered)
Debug output from enrollment: fp:debug [fp_init] fp:debug [register_driver] registered driver upekts fp:debug [register_driver] registered driver aes4000 fp:debug [register_driver] registered driver aes2501 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 Launching FprintObject fp:debug [find_supporting_driver] driver upekts supports USB device 147e:2016 ** Message: D-Bus service launched with name: net.reactivated.Fprint ** Message: entering main loop ** Message: user 'dhollis' claiming the device: 0 async:debug [fp_async_dev_open] ** Message: now monitoring fd 8 async:debug [fpi_drvcb_open_complete] status 0 ** Message: device 0 claim status 0 ** Message: start enrollment device 0 finger 7 async:debug [fp_async_enroll_start] starting enrollment drv:debug [__ssm_call_handler] 0x2516bd0 entering state 0 drv:debug [__ssm_call_handler] 0x2527a50 entering state 0 drv:debug [__ssm_call_handler] 0x2527a50 entering state 1 upekts:debug [__handle_incoming_msg] A=03 B=00 len=5 upekts:debug [__handle_incoming_msg] cmd 3 from device to driver drv:debug [__ssm_call_handler] 0x2527a50 entering state 2 upekts:debug [alloc_send_cmdresponse_transfer] seq=04 len=8 upekts:debug [initsm_send_msg_cb] state 2 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 3 upekts:debug [__handle_incoming_msg] A=05 B=00 len=1 upekts:debug [__handle_incoming_msg] cmd 5 from device to driver drv:debug [__ssm_call_handler] 0x2527a50 entering state 4 upekts:debug [alloc_send_cmd28_transfer] seq=00 subcmd=06 with 1 bytes of data upekts:debug [initsm_send_msg_cb] state 4 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 5 upekts:debug [__handle_incoming_msg] A=00 B=00 len=55 upekts:debug [__handle_incoming_msg] device responds to subcmd 6 with 49 bytes upekts:debug [initsm_read_msg_response_cb] state 5 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 6 upekts:debug [alloc_send_cmd28_transfer] seq=10 subcmd=51 with 5 bytes of data upekts:debug [initsm_send_msg_cb] state 6 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 7 upekts:debug [__handle_incoming_msg] A=00 B=10 len=27 upekts:debug [__handle_incoming_msg] device responds to subcmd 51 with 21 bytes upekts:debug [initsm_read_msg_response_cb] state 7 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 8 upekts:debug [alloc_send_cmd28_transfer] seq=20 subcmd=07 with 5 bytes of data upekts:debug [initsm_send_msg_cb] state 8 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 9 upekts:debug [__handle_incoming_msg] A=00 B=20 len=39 upekts:debug [__handle_incoming_msg] device responds to subcmd 7 with 33 bytes upekts:debug [initsm_read_msg_response_cb] state 9 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 10 upekts:debug [alloc_send_cmd28_transfer] seq=30 subcmd=08 with 99 bytes of data upekts:debug [initsm_send_msg_cb] state 10 completed drv:debug [__ssm_call_handler] 0x2527a50 entering state 11 upekts:debug [__handle_incoming_msg] A=00 B=30 len=7 upekts:debug [__handle_incoming_msg] non-zero bytes in cmd response upekts:debug [__handle_incoming_msg] device responds to subcmd 8 with 1 bytes upekts:debug [initsm_read_msg_response_cb] state 11 completed drv:debug [fpi_ssm_mark_completed] 0x2527a50 completed with status 0 drv:debug [__ssm_call_handler] 0x2516bd0 entering state 1 upekts:debug [alloc_send_cmd28_transfer] seq=40 subcmd=02 with 8 bytes of data drv:debug [__ssm_call_handler] 0x2516bd0 entering state 2 upekts:debug [__handle_incoming_msg] A=00 B=40 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes drv:debug [fpi_ssm_mark_completed] 0x2516bd0 completed with status 0 async:debug [fpi_drvcb_enroll_started] status 0 upekts:debug [alloc_send_cmd28_transfer] seq=50 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=50 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=60 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=60 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=70 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=70 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=80 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=80 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=90 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=90 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=a0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=08 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 8 from device to driver upekts:debug [__handle_incoming_msg] device busy, send busy-ack upekts:debug [alloc_send_cmdresponse_transfer] seq=09 len=0 upekts:debug [__handle_incoming_msg] A=00 B=a0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 20 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=b0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=b0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 2e async:debug [fpi_drvcb_enroll_stage_completed] result 3 ** Message: enroll_stage_cb: result 3 upekts:debug [e_handle_resp00] fuck yeah!! upekts:debug [alloc_send_cmd28_transfer] seq=c0 subcmd=00 with 2 bytes of data upekts:debug [e_handle_resp00] doh!! upekts:debug [__handle_incoming_msg] A=00 B=c0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=d0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=d0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=e0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=e0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=f0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=f0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=00 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=00 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=10 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=10 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=20 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=20 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=30 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=30 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=40 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=08 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 8 from device to driver upekts:debug [__handle_incoming_msg] device busy, send busy-ack upekts:debug [alloc_send_cmdresponse_transfer] seq=09 len=0 upekts:debug [__handle_incoming_msg] A=00 B=40 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 20 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=50 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=50 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 2e async:debug [fpi_drvcb_enroll_stage_completed] result 3 ** Message: enroll_stage_cb: result 3 upekts:debug [e_handle_resp00] fuck yeah!! upekts:debug [alloc_send_cmd28_transfer] seq=60 subcmd=00 with 2 bytes of data upekts:debug [e_handle_resp00] doh!! upekts:debug [__handle_incoming_msg] A=00 B=60 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=70 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=70 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=80 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=80 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=90 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=90 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=a0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=08 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 8 from device to driver upekts:debug [__handle_incoming_msg] device busy, send busy-ack upekts:debug [alloc_send_cmdresponse_transfer] seq=09 len=0 upekts:debug [__handle_incoming_msg] A=00 B=a0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 20 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=b0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=b0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 2e async:debug [fpi_drvcb_enroll_stage_completed] result 3 ** Message: enroll_stage_cb: result 3 upekts:debug [e_handle_resp00] fuck yeah!! upekts:debug [alloc_send_cmd28_transfer] seq=c0 subcmd=00 with 2 bytes of data upekts:debug [e_handle_resp00] doh!! upekts:debug [__handle_incoming_msg] A=00 B=c0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=d0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=d0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=e0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=e0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=f0 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=f0 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=00 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=08 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 8 from device to driver upekts:debug [__handle_incoming_msg] device busy, send busy-ack upekts:debug [alloc_send_cmdresponse_transfer] seq=09 len=0 upekts:debug [__handle_incoming_msg] A=00 B=00 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 20 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=10 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=10 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 2e async:debug [fpi_drvcb_enroll_stage_completed] result 3 ** Message: enroll_stage_cb: result 3 upekts:debug [e_handle_resp00] fuck yeah!! upekts:debug [alloc_send_cmd28_transfer] seq=20 subcmd=00 with 2 bytes of data upekts:debug [e_handle_resp00] doh!! upekts:debug [__handle_incoming_msg] A=00 B=20 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=30 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=30 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=40 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=40 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=50 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=50 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 0c upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=60 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=00 B=60 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 20 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=70 subcmd=00 with 2 bytes of data upekts:debug [__handle_incoming_msg] A=08 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 8 from device to driver upekts:debug [__handle_incoming_msg] device busy, send busy-ack upekts:debug [alloc_send_cmdresponse_transfer] seq=09 len=0 upekts:debug [__handle_incoming_msg] A=00 B=70 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 2e async:debug [fpi_drvcb_enroll_stage_completed] result 3 ** Message: enroll_stage_cb: result 3 upekts:debug [e_handle_resp00] fuck yeah!! upekts:debug [alloc_send_cmd28_transfer] seq=80 subcmd=00 with 2 bytes of data upekts:debug [e_handle_resp00] doh!! upekts:debug [__handle_incoming_msg] A=00 B=80 len=20 upekts:debug [__handle_incoming_msg] device responds to subcmd 0 with 14 bytes upekts:debug [e_handle_resp00] poll result = 00 upekts:debug [e_handle_resp00] huh?! upekts:debug [alloc_send_cmd28_transfer] seq=90 subcmd=00 with 2 bytes of data upekts:debug [read_msg_cb] didn't fit in buffer, need to extend by 1324 bytes upekts:debug [__handle_incoming_msg] A=00 B=90 len=1379 upekts:debug [__handle_incoming_msg] device responds to subcmd 2 with 1373 bytes fp:debug [print_data_new] length=1368 driver=01 devtype=0000 async:debug [fpi_drvcb_enroll_stage_completed] result 1 ** Message: enroll_stage_cb: result 1 fp:debug [fp_print_data_get_data] async:debug [fp_async_enroll_stop] drv:debug [__ssm_call_handler] 0x2528890 entering state 0 upekts:debug [alloc_send_cmdresponse_transfer] seq=07 len=1 drv:debug [__ssm_call_handler] 0x2528890 entering state 1 upekts:debug [__handle_incoming_msg] A=01 B=00 len=0 upekts:debug [__handle_incoming_msg] cmd 1 from device to driver drv:debug [fpi_ssm_mark_completed] 0x2528890 completed with status 0 async:debug [fpi_drvcb_enroll_stopped] async:debug [fpi_drvcb_close_complete] ** Message: no longer monitoring fd 8 ** Message: released device 0 On 04/26/2010 05:19 PM, Jorge Suárez de Lis wrote: >> Bus 001 Device 003: ID 147e:2016 Upek Biometric Touchchip/Touchstrip >> Fingerprint Sensor > > The name is actually given by the Linux kernel. What actually matters is > just the IDs. And it seems these IDs are very popular amongst these > readers. > >> I added the case 'case 0x2e' part and it actually will enroll my >> fingerprint! I just checked the enrollment with fprintd-verify and it >> verified with no problems. > > Good news! =) I'd appreciate a debug output of the full enrollment > process, to see what's going on with your device. > >> So the current downside is that the 0483:2016 device no longer works >> with this code so it'd really be best to get the upekts.c driver to work >> properly with both devices. > > Ok, I'll try to make a patch for tomorrow so upekts will support the > original reader, your reader and mine. > >> Are there multiple devices matching >> 147e:2016 that would need to be addressed somehow so that upeksonly >> could still service the 'old' device and upekts could service the 'new' >> version? Any idea if there is any way to differentiate? > > I don't think there's any way to do this on fprint. I still have to take > a better look at the code, but it seems that the drivers just register > themselves as "I am ready to support the device with these IDs, so I'll > do the job". > > Can you also post the relevant output of the command "lsusb -vvv"? Do it > as root, please. > > Thank you! > _______________________________________________ fprint mailing list fprint@reactivated.net http://lists.reactivated.net/mailman/listinfo/fprint