mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-05-11 11:58:11 +02:00
Add a new "validity" driver for Validity/Synaptics fingerprint sensors that use the VCSFW protocol (as opposed to BMKT). This is iteration 1 of a multi-phase effort to bring native libfprint support to these widely-deployed sensors found in ThinkPad T480/T480s/T580/X1 Carbon Gen6 and many other laptops. This initial iteration implements: - VCSFW command/response transport layer over USB bulk endpoints - GET_VERSION command parsing (firmware version, product ID, build) - Synchronous probe and async open/close state machines - Stub implementations for enroll/verify/identify (return NOT_SUPPORTED) - umockdev replay test with real hardware capture Supported USB IDs (VCSFW protocol): - 138a:0090 (Validity VFS7500) - 138a:0097 (Validity VFS5011) - 06cb:009a (Synaptics Metallica MIS Touch) - 138a:009d (Validity VFS7552) These were previously (incorrectly) claimed by the synaptics driver which uses the BMKT protocol.
264 lines
9.3 KiB
Text
264 lines
9.3 KiB
Text
P: /devices/pci0000:00/0000:00:14.0/usb1/1-9
|
|
N: bus/usb/001/006=12010002FF10FF08CB069A0064010000010109023500010100A0320904000005FF000000070501024000000705810240000007058202400000070583030800040705840310000A
|
|
E: BUSNUM=001
|
|
E: DEVNAME=/dev/bus/usb/001/006
|
|
E: DEVNUM=006
|
|
E: DEVTYPE=usb_device
|
|
E: DRIVER=usb
|
|
E: ID_AUTOSUSPEND=1
|
|
E: ID_BUS=usb
|
|
E: ID_INTEGRATION=internal
|
|
E: ID_MODEL=009a
|
|
E: ID_MODEL_ENC=009a
|
|
E: ID_MODEL_FROM_DATABASE=Metallica MIS Touch Fingerprint Reader
|
|
E: ID_MODEL_ID=009a
|
|
E: ID_PATH=pci-0000:00:14.0-usb-0:9
|
|
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_9
|
|
E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:9
|
|
E: ID_PERSIST=0
|
|
E: ID_REVISION=0164
|
|
E: ID_SERIAL=06cb_009a_c7e2948627cb
|
|
E: ID_SERIAL_SHORT=c7e2948627cb
|
|
E: ID_USB_INTERFACES=:ff0000:
|
|
E: ID_USB_MODEL=009a
|
|
E: ID_USB_MODEL_ENC=009a
|
|
E: ID_USB_MODEL_ID=009a
|
|
E: ID_USB_REVISION=0164
|
|
E: ID_USB_SERIAL=06cb_009a_c7e2948627cb
|
|
E: ID_USB_SERIAL_SHORT=c7e2948627cb
|
|
E: ID_USB_VENDOR=06cb
|
|
E: ID_USB_VENDOR_ENC=06cb
|
|
E: ID_USB_VENDOR_ID=06cb
|
|
E: ID_VENDOR=06cb
|
|
E: ID_VENDOR_ENC=06cb
|
|
E: ID_VENDOR_FROM_DATABASE=Synaptics, Inc.
|
|
E: ID_VENDOR_ID=06cb
|
|
E: MAJOR=189
|
|
E: MINOR=5
|
|
E: PRODUCT=6cb/9a/164
|
|
E: SUBSYSTEM=usb
|
|
E: TYPE=255/16/255
|
|
A: authorized=1\n
|
|
A: avoid_reset_quirk=0\n
|
|
A: bConfigurationValue=1\n
|
|
A: bDeviceClass=ff\n
|
|
A: bDeviceProtocol=ff\n
|
|
A: bDeviceSubClass=10\n
|
|
A: bMaxPacketSize0=8\n
|
|
A: bMaxPower=100mA\n
|
|
A: bNumConfigurations=1\n
|
|
A: bNumInterfaces= 1\n
|
|
A: bcdDevice=0164\n
|
|
A: bmAttributes=a0\n
|
|
A: busnum=1\n
|
|
A: configuration=
|
|
H: descriptors=12010002FF10FF08CB069A0064010000010109023500010100A0320904000005FF000000070501024000000705810240000007058202400000070583030800040705840310000A
|
|
A: dev=189:5\n
|
|
A: devnum=6\n
|
|
A: devpath=9\n
|
|
L: driver=../../../../../bus/usb/drivers/usb
|
|
L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1d/device:1e/device:29
|
|
A: idProduct=009a\n
|
|
A: idVendor=06cb\n
|
|
A: ltm_capable=no\n
|
|
A: maxchild=0\n
|
|
A: physical_location/dock=no\n
|
|
A: physical_location/horizontal_position=left\n
|
|
A: physical_location/lid=no\n
|
|
A: physical_location/panel=unknown\n
|
|
A: physical_location/vertical_position=upper\n
|
|
L: port=../1-0:1.0/usb1-port9
|
|
A: power/active_duration=39041\n
|
|
A: power/autosuspend=2\n
|
|
A: power/autosuspend_delay_ms=2000\n
|
|
A: power/connected_duration=8463727\n
|
|
A: power/control=auto\n
|
|
A: power/level=auto\n
|
|
A: power/persist=1\n
|
|
A: power/runtime_active_time=39927\n
|
|
A: power/runtime_status=active\n
|
|
A: power/runtime_suspended_time=8423564\n
|
|
A: power/wakeup=disabled\n
|
|
A: power/wakeup_abort_count=\n
|
|
A: power/wakeup_active=\n
|
|
A: power/wakeup_active_count=\n
|
|
A: power/wakeup_count=\n
|
|
A: power/wakeup_expire_count=\n
|
|
A: power/wakeup_last_time_ms=\n
|
|
A: power/wakeup_max_time_ms=\n
|
|
A: power/wakeup_total_time_ms=\n
|
|
A: quirks=0x0\n
|
|
A: removable=fixed\n
|
|
A: rx_lanes=1\n
|
|
A: serial=c7e2948627cb\n
|
|
A: speed=12\n
|
|
A: tx_lanes=1\n
|
|
A: urbnum=124\n
|
|
A: version= 2.00\n
|
|
|
|
P: /devices/pci0000:00/0000:00:14.0/usb1
|
|
N: bus/usb/001/001=12010002090001406B1D020019060302010109021900010100E0000904000001090000000705810304000C
|
|
E: BUSNUM=001
|
|
E: CURRENT_TAGS=:seat:
|
|
E: DEVNAME=/dev/bus/usb/001/001
|
|
E: DEVNUM=001
|
|
E: DEVTYPE=usb_device
|
|
E: DRIVER=usb
|
|
E: ID_AUTOSUSPEND=1
|
|
E: ID_BUS=usb
|
|
E: ID_FOR_SEAT=usb-pci-0000_00_14_0
|
|
E: ID_MODEL=xHCI_Host_Controller
|
|
E: ID_MODEL_ENC=xHCI\x20Host\x20Controller
|
|
E: ID_MODEL_FROM_DATABASE=2.0 root hub
|
|
E: ID_MODEL_ID=0002
|
|
E: ID_PATH=pci-0000:00:14.0
|
|
E: ID_PATH_TAG=pci-0000_00_14_0
|
|
E: ID_REVISION=0619
|
|
E: ID_SERIAL=Linux_6.19.10-zen1-1-zen_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
|
|
E: ID_SERIAL_SHORT=0000:00:14.0
|
|
E: ID_USB_INTERFACES=:090000:
|
|
E: ID_USB_MODEL=xHCI_Host_Controller
|
|
E: ID_USB_MODEL_ENC=xHCI\x20Host\x20Controller
|
|
E: ID_USB_MODEL_ID=0002
|
|
E: ID_USB_REVISION=0619
|
|
E: ID_USB_SERIAL=Linux_6.19.10-zen1-1-zen_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
|
|
E: ID_USB_SERIAL_SHORT=0000:00:14.0
|
|
E: ID_USB_VENDOR=Linux_6.19.10-zen1-1-zen_xhci-hcd
|
|
E: ID_USB_VENDOR_ENC=Linux\x206.19.10-zen1-1-zen\x20xhci-hcd
|
|
E: ID_USB_VENDOR_ID=1d6b
|
|
E: ID_VENDOR=Linux_6.19.10-zen1-1-zen_xhci-hcd
|
|
E: ID_VENDOR_ENC=Linux\x206.19.10-zen1-1-zen\x20xhci-hcd
|
|
E: ID_VENDOR_FROM_DATABASE=Linux Foundation
|
|
E: ID_VENDOR_ID=1d6b
|
|
E: MAJOR=189
|
|
E: MINOR=0
|
|
E: PRODUCT=1d6b/2/619
|
|
E: SUBSYSTEM=usb
|
|
E: TAGS=:seat:
|
|
E: TYPE=9/0/1
|
|
A: authorized=1\n
|
|
A: authorized_default=1\n
|
|
A: avoid_reset_quirk=0\n
|
|
A: bConfigurationValue=1\n
|
|
A: bDeviceClass=09\n
|
|
A: bDeviceProtocol=01\n
|
|
A: bDeviceSubClass=00\n
|
|
A: bMaxPacketSize0=64\n
|
|
A: bMaxPower=0mA\n
|
|
A: bNumConfigurations=1\n
|
|
A: bNumInterfaces= 1\n
|
|
A: bcdDevice=0619\n
|
|
A: bmAttributes=e0\n
|
|
A: busnum=1\n
|
|
A: configuration=
|
|
H: descriptors=12010002090001406B1D020019060302010109021900010100E0000904000001090000000705810304000C
|
|
A: dev=189:0\n
|
|
A: devnum=1\n
|
|
A: devpath=0\n
|
|
L: driver=../../../../bus/usb/drivers/usb
|
|
L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1d/device:1e
|
|
A: idProduct=0002\n
|
|
A: idVendor=1d6b\n
|
|
A: interface_authorized_default=1\n
|
|
A: ltm_capable=no\n
|
|
A: manufacturer=Linux 6.19.10-zen1-1-zen xhci-hcd\n
|
|
A: maxchild=12\n
|
|
A: power/active_duration=8464967\n
|
|
A: power/autosuspend=0\n
|
|
A: power/autosuspend_delay_ms=0\n
|
|
A: power/connected_duration=8464967\n
|
|
A: power/control=auto\n
|
|
A: power/level=auto\n
|
|
A: power/runtime_active_time=8464965\n
|
|
A: power/runtime_status=active\n
|
|
A: power/runtime_suspended_time=0\n
|
|
A: power/wakeup=disabled\n
|
|
A: power/wakeup_abort_count=\n
|
|
A: power/wakeup_active=\n
|
|
A: power/wakeup_active_count=\n
|
|
A: power/wakeup_count=\n
|
|
A: power/wakeup_expire_count=\n
|
|
A: power/wakeup_last_time_ms=\n
|
|
A: power/wakeup_max_time_ms=\n
|
|
A: power/wakeup_total_time_ms=\n
|
|
A: product=xHCI Host Controller\n
|
|
A: quirks=0x0\n
|
|
A: removable=unknown\n
|
|
A: rx_lanes=1\n
|
|
A: serial=0000:00:14.0\n
|
|
A: speed=480\n
|
|
A: tx_lanes=1\n
|
|
A: urbnum=1481\n
|
|
A: version= 2.00\n
|
|
|
|
P: /devices/pci0000:00/0000:00:14.0
|
|
E: DRIVER=xhci_hcd
|
|
E: ID_AUTOSUSPEND=1
|
|
E: ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller
|
|
E: ID_PATH=pci-0000:00:14.0
|
|
E: ID_PATH_TAG=pci-0000_00_14_0
|
|
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
|
|
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
|
|
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
|
|
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
|
|
E: MODALIAS=pci:v00008086d00009D2Fsv000017AAsd00002258bc0Csc03i30
|
|
E: PCI_CLASS=C0330
|
|
E: PCI_ID=8086:9D2F
|
|
E: PCI_SLOT_NAME=0000:00:14.0
|
|
E: PCI_SUBSYS_ID=17AA:2258
|
|
E: SUBSYSTEM=pci
|
|
A: ari_enabled=0\n
|
|
A: broken_parity_status=0\n
|
|
A: class=0x0c0330\n
|
|
H: config=86802F9D060490022130030C00008000040032E8000000000000000000000000000000000000000000000000AA175822000000007000000000000000FF010000FD01348088C60F8000000000000000005B6ECE0F000000000000000000000000306000000000000000000000000000000180C2C10800000000000000000000000500B7001803E0FE0000000000000000090014F01000400100000000C10A080000080000001800008F40020000010400010000000200000000000000000000000000000000000000000000000000000001000000020000000000000000000000000000000000000000000000000000000000000000000000B30F410800000000
|
|
A: consistent_dma_mask_bits=64\n
|
|
A: d3cold_allowed=1\n
|
|
A: dbc=disabled\n
|
|
A: dbc_bInterfaceProtocol=01\n
|
|
A: dbc_bcdDevice=0010\n
|
|
A: dbc_idProduct=0010\n
|
|
A: dbc_idVendor=1d6b\n
|
|
A: dbc_poll_interval_ms=64\n
|
|
A: device=0x9d2f\n
|
|
A: dma_mask_bits=64\n
|
|
L: driver=../../../bus/pci/drivers/xhci_hcd
|
|
A: driver_override=(null)\n
|
|
A: enable=1\n
|
|
L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1d
|
|
L: iommu=../../virtual/iommu/dmar1
|
|
L: iommu_group=../../../kernel/iommu_groups/4
|
|
A: irq=128\n
|
|
A: local_cpulist=0-7\n
|
|
A: local_cpus=ff\n
|
|
A: modalias=pci:v00008086d00009D2Fsv000017AAsd00002258bc0Csc03i30\n
|
|
A: msi_bus=1\n
|
|
A: msi_irqs/128=msi\n
|
|
A: msi_irqs/129=msi\n
|
|
A: msi_irqs/130=msi\n
|
|
A: msi_irqs/131=msi\n
|
|
A: msi_irqs/132=msi\n
|
|
A: msi_irqs/133=msi\n
|
|
A: msi_irqs/134=msi\n
|
|
A: msi_irqs/135=msi\n
|
|
A: numa_node=-1\n
|
|
A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 1 32 128 1\nbuffer-32 0 0 32 0\nxHCI 256 port bw ctx arrays 0 0 256 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 12 13 2112 13\nxHCI ring segments 45 45 4096 45\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 3 32 128 1\nbuffer-32 0 0 32 0\n
|
|
A: power/control=auto\n
|
|
A: power/runtime_active_time=8465365\n
|
|
A: power/runtime_status=active\n
|
|
A: power/runtime_suspended_time=0\n
|
|
A: power/wakeup=enabled\n
|
|
A: power/wakeup_abort_count=0\n
|
|
A: power/wakeup_active=0\n
|
|
A: power/wakeup_active_count=0\n
|
|
A: power/wakeup_count=0\n
|
|
A: power/wakeup_expire_count=0\n
|
|
A: power/wakeup_last_time_ms=0\n
|
|
A: power/wakeup_max_time_ms=0\n
|
|
A: power/wakeup_total_time_ms=0\n
|
|
A: power_state=D0\n
|
|
A: resource=0x00000000e8320000 0x00000000e832ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n
|
|
A: revision=0x21\n
|
|
A: subsystem_device=0x2258\n
|
|
A: subsystem_vendor=0x17aa\n
|
|
A: vendor=0x8086\n
|
|
|