HID interface


The HID interface is an HID upper filter driver that can support any Windows HID device so USB or I2C.
As discussed this builds on the new OS Connector framework OS Connector is a complete replacement for the bootstrap logic, the current implementation of which is tightly bound up with libusb.
OS Connector is an internal construct and of no concern to end users so no documentation required.
This is as yet incomplete but over time I expect to make more use of this. But for now please bear in mind that the 2 are mutually exclusive; you can not mix the 2 frameworks in a single bundle.

This implementation is currently 64 bit Windows 10 only. Given the signing situation on W7 I think it  unlikely we can support that.

When attestation signing an hid package the cab file is called updd_hid.cab. We should only select the 64 bit platforms although oddly it does not fail if we select the 32 bit options.
During attestation a prompt may be seen warning about “missing” symbols files. This can be ignored.

To define a controller you must set

Port type = hidi2c or hidusb
Controller matching as described below
Manually set an hid definition as in “Elan 2097, I2C” or provide an embedded hidrd or a legacy packet definition.

The controller matching string for hid devices is 4 parts separated by semicolons

<vid or vidpid>;<pid>;<interface>;<collection>

I2c devices have a single vidpid value.

I’ve retained the 4 part format to allow for cases we have not seen but might arise even though for I2C it is perhaps not necessary.

All values apart from vidpid can include a range or a list as with usb matching strings

To determine the matching string we look at the  device manager entry

 

Right click -> properties -> details -> device instance path


The example above is an i2c device and only has VIDPID and hid collection values so the matching string is ELAN2097;;;1

The example above is from a usb device and has all 4 values so the matching string is

1FD2;6103;0;1

Note MI = interface

There are some loose ends. I’ve created a Trello card  for these

https://trello.com/c/lr6VYR5y/262-os-connector-hid-and-i2c

recordraw is needed for us to be able to see the touch data and so I’ll implement this asap. Once this is done a diag can be used as normal.

Multi device support is largely done, but in the final testing phase I realised there was an error in the logic. To avoid further delay I hacked this to assume a single device and circumvent the issue. I need to revisit this at some point.

Search