From 13781884aa4615613eab0897321975d61f290a32 Mon Sep 17 00:00:00 2001 From: VisorCraft LLC Date: Tue, 26 May 2026 10:38:04 -0500 Subject: [PATCH] Add 06cb:0088 (Kensington VeriMark) redirect to dedicated libfprint driver 06cb:0088 is a pre-Prometheus Synaptics/Validity chip and uses a different protocol from the post-Prometheus 06cb:009a that this codebase targets: no fwext partition, different pre-TLS pairing, different cert flow. Rather than failing with a confusing 'no matching devices found' error when a VeriMark is plugged in, detect the device and print a clear redirect to the dedicated FLOSS libfprint driver at https://github.com/visorcraft/Kensington_VeriMark_06cb-0088 which covers enroll, verify, and PAM/login integration for this device. Closes #34. Closes #74. --- README.md | 7 +++++++ validitysensor/usb.py | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/README.md b/README.md index e327899..89dcec8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,13 @@ # python-validity Validity fingerprint sensor driver. +> **Note for Kensington VeriMark (`06cb:0088`) users:** that device is a +> pre-Prometheus chip and uses a different protocol from `06cb:009a` — no +> fwext partition, different pre-TLS pairing. A dedicated FLOSS `libfprint` +> driver for it lives at +> [Kensington_VeriMark_06cb-0088](https://github.com/visorcraft/Kensington_VeriMark_06cb-0088). +> Install that instead of `python-validity` for the `06cb:0088`. + Table of Contents ================= diff --git a/validitysensor/usb.py b/validitysensor/usb.py index 464b092..4d5915d 100644 --- a/validitysensor/usb.py +++ b/validitysensor/usb.py @@ -26,6 +26,19 @@ def from_usbid(cls, vendorid, productid): supported_devices = dict((dev.value, dev) for dev in SupportedDevices) +# Known Validity/Synaptics device IDs that this codebase does not target. +# Detected to print a clear redirect rather than failing with a confusing +# "no matching devices found" message. +_externally_supported_devices = { + (0x06cb, 0x0088): ( + "06cb:0088 (Kensington VeriMark) is a pre-Prometheus chip with a " + "different protocol from 06cb:009a (no fwext partition, different " + "pre-TLS pairing). A working FLOSS libfprint driver for it lives at " + "https://github.com/visorcraft/Kensington_VeriMark_06cb-0088 — " + "install that instead of python-validity for this device." + ), +} + class CancelledException(Exception): pass @@ -47,6 +60,13 @@ def match(d): dev = ucore.find(custom_match=match) + if dev is None: + # Check for a known-but-out-of-scope Validity/Synaptics + # device and print a clear redirect. + for (v, p), msg in _externally_supported_devices.items(): + if ucore.find(idVendor=v, idProduct=p) is not None: + raise Exception(msg) + self.open_dev(dev) def open_devpath(self, busnum: int, address: int):