2808:c652 HOLTEK FocalTech Fingerprint Device | Tecno Megabook T1 | Unsupported
Please, add support of this FocalTech fp usb scaner. I can provide any needed information about hardware and any test of builds.
Base information:
$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 23.10
Release: 23.10
Codename: mantic
$ uname -r
6.5.0-17-generic
$ sudo lsusb -vd 2808:c652
Bus 001 Device 002: ID 2808:c652 HOLTEK FocalTech Fingerprint Device
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 2
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2808
idProduct 0xc652
bcdDevice 2.03
iManufacturer 1 HOLTEK
iProduct 2 FocalTech Fingerprint Device
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0020
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 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 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 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
Windows driver: ftwbiodriverumdfv3.inf_amd64_1bd8fb1f80da33c7.zip
In the ".ini" file for driver installation the same compatible in "focaltech_moc.c" pid "a959" is specified, but when adding the required "c652" to it I get libusb error when executing examples/enroll:
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.122: 2568081098: ../libfprint/drivers/focaltech_moc/focaltech_moc.c:1850
(process:11077): libfprint-device-WARNING **: 20:03:52.123: Failed to disable USB persist by writing to /sys/bus/usb/devices/1-3/power/persist
(process:11077): libfprint-device-DEBUG: 20:03:52.123: Device reported probe completion
(process:11077): libfprint-device-DEBUG: 20:03:52.123: Completing action FPI_DEVICE_ACTION_PROBE in idle!
(process:11077): libfprint-device-DEBUG: 20:03:52.123: Not updating temperature model, device can run continuously!
Selected device 0 (Focaltech MOC Sensors) claimed by focaltech_moc driver
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.409: class:a, subclass:0, protocol:0
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.409: bytes size:0
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.409: kind:5, max packet size:64, poll interval:0, refresh:0, sync address:0, address:3, number:3, direction:G_USB_DEVICE_DIRECTION_HOST_TO_DEVICE
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.409: bytes size:0
(process:11077): libfprint-focaltech_moc-DEBUG: 20:03:52.409: kind:5, max packet size:64, poll interval:0, refresh:0, sync address:0, address:81, number:1, direction:G_USB_DEVICE_DIRECTION_DEVICE_TO_HOST
(process:11077): libfprint-SSM-DEBUG: 20:03:52.409: [focaltech_moc] DEV_INIT_STATES entering state 0
(process:11077): libfprint-SSM-DEBUG: 20:03:52.409: [focaltech_moc] FP_CMD_NUM_STATES entering state 0
(process:11077): libfprint-SSM-DEBUG: 20:03:52.409: [focaltech_moc] FP_CMD_NUM_STATES entering state 1
libusb: error [udev_hotplug_event] ignoring udev action change
libusb: error [udev_hotplug_event] ignoring udev action change
And process stuck.
Part of ACPI dump in windows: (Maybe it can be helpful) Full device ACPI path - _SB.PCI0.GP17.XHC0.RHUB.PRT3
/* Some roots */
Device ()
{
Name (_ADR, 0x03) // _ADR: Address
Name (UPC1, Package (0x04)
{
Zero,
0xFF,
Zero,
Zero
})
Method (_UPC, 0, Serialized) // _UPC: USB Port Capabilities
{
Return (UPC1) /* \_SB_.PCI0.GP17.XHC0.RHUB.PRT3.UPC1 */
}
Name (PLD1, Package (0x01)
{
Buffer (0x14)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x58, 0x1C, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, // X.......
/* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF // ....
}
})
Method (_PLD, 0, Serialized) // _PLD: Physical Location of Device
{
Return (PLD1) /* \_SB_.PCI0.GP17.XHC0.RHUB.PRT3.PLD1 */
}
}
/* Another device */
Device (PRT3)
{
Name (_ADR, 0x03) // _ADR: Address
Name (UPC1, Package (0x04)
{
0xFF,
0x03,
Zero,
Zero
})
Method (_UPC, 0, Serialized) // _UPC: USB Port Capabilities
{
Return (UPC1) /* \_SB_.PCI0.GP17.XHC1.RHUB.PRT3.UPC1 */
}
Name (PLD1, Package (0x01)
{
Buffer (0x14)
{
/* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x91, 0x1C, 0x80, 0x03, 0x01, 0x00, 0x00, 0x00, // ........
/* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF // ....
}
})
Method (_PLD, 0, Serialized) // _PLD: Physical Location of Device
{
Return (PLD1) /* \_SB_.PCI0.GP17.XHC1.RHUB.PRT3.PLD1 */
}
Method (_RMV, 0, NotSerialized) // _RMV: Removal Status
{
If ((THPN == 0x04))
{
Return (Zero)
}
Else
{
Return (One)
}
}
}