Device info:
Bus 003 Device 003: ID 06cb:0169 Synaptics, Inc.
Laptop: HP Laptop 15 (Intel Core Ultra 5, Intel Arc Graphics), running Ubuntu 24.04 (noble).
What I tried:
06cb:0169 is not present in validitysensor/usb.py's SupportedDevices enum (only 06cb:009a is listed for this vendor). As an experiment, I:
- Added
DEV_169 = (0x06cb, 0x0169) to SupportedDevices in usb.py
- Added a branch in
blobs.py routing 0x0169 to the existing blobs_9a firmware module (borrowing the 009a init blob), since it's the closest known device under the same vendor ID
Result:
Basic USB claim/open succeeds fine via pyusb:
from validitysensor.usb import usb
usb.open() # works, no error
But calling usb.send_init() — which sends the RomInfo.get() command (hex 01) as its first step — times out completely:
File "validitysensor/usb.py", line 106, in cmd
resp = self.dev.read(129, 100 * 1024)
File ".../usb/backend/libusb1.py", line 954, in __read
_check(retval)
usb.core.USBTimeoutError: [Errno 110] Operation timed out
No response at all from the device, not even an error packet — suggesting 0169 doesn't share 009a's command protocol at this most basic handshake step, despite sharing a vendor ID.
Ask: Is anyone able to add support for 06cb:0169, or point me toward the right way to capture genuine USB traffic (e.g. via a Windows VM with USB passthrough + Wireshark/usbmon) to help reverse-engineer the actual protocol? Happy to test patches or provide more debug output.
Device info:
Bus 003 Device 003: ID 06cb:0169 Synaptics, Inc.
Laptop: HP Laptop 15 (Intel Core Ultra 5, Intel Arc Graphics), running Ubuntu 24.04 (noble).
What I tried:
06cb:0169is not present invaliditysensor/usb.py'sSupportedDevicesenum (only06cb:009ais listed for this vendor). As an experiment, I:DEV_169 = (0x06cb, 0x0169)toSupportedDevicesinusb.pyblobs.pyrouting0x0169to the existingblobs_9afirmware module (borrowing the009ainit blob), since it's the closest known device under the same vendor IDResult:
Basic USB claim/open succeeds fine via
pyusb:But calling
usb.send_init()— which sends theRomInfo.get()command (hex01) as its first step — times out completely:File "validitysensor/usb.py", line 106, in cmd
resp = self.dev.read(129, 100 * 1024)
File ".../usb/backend/libusb1.py", line 954, in __read
_check(retval)
usb.core.USBTimeoutError: [Errno 110] Operation timed out
No response at all from the device, not even an error packet — suggesting
0169doesn't share009a's command protocol at this most basic handshake step, despite sharing a vendor ID.Ask: Is anyone able to add support for
06cb:0169, or point me toward the right way to capture genuine USB traffic (e.g. via a Windows VM with USB passthrough + Wireshark/usbmon) to help reverse-engineer the actual protocol? Happy to test patches or provide more debug output.