To capture USB protocol between a a device and driver you can use software based USB monitoring tool to capture the USB traffic between the host and the device.
Mosts Window's USB monitoring tools should be able to capture this information. We use USBlyzer. Others exist such as https://freeusbanalyzer.com/.
If the touch device is known to be capable of multi-touch output it is best to capture this data in Windows 7 / 8 so that the device enters multi-touch mode.
Using this tool we are trying to capture the following data associated with the controller:
For an overview of some of the USB terminologies used in this document and seen in the USBlyzer dialogs see our USB basics document.
Download and install USBlyzer. Invoke the program and identify the touchscreen from the list of USB devices.
In this example the touch device is registered as a USB Composite Device comprising 3 x USB Input Devices all of which would list the vendor and product id of the touch device:
USB Vendor and Product id
As stated the above touch device is registering as a composite device, meaning that it has a number of interfaces and the tree is showing 3 x USB Input Devices. The first entry is showing as the touch entry on Interface 0. This is the device we need to support. The other entries are likely to be Tablet, Mouse and even Keyboard entries. Depending on the OS in use the device will output Touch, Tablet or Mouse packets. With UPDD we try and configure devices to always output touch data packets irrespective of the OS in use so we are only interested in the touch mode initialisation and touch data format.
Important note: Some touch devices, such as non HID compatible or devices running in an HID mode other than ‘touch’ mode may not be listed as a ‘Touch’ device. In this case try to identify the touch device as best as possible which, for example, may be listed as a digitizer, mouse or other type of device. This is made easier if you know the vendor id of the device.
Next select to capture device information when the device is enumerated on the system to see if HID places the device in any special mode of operation:
Now identify the touch device in the Device Tree and click the check box next to all the entries related to the touch device to indicate this is the device to be captured.
Next, start recording the traffic and disconnect, reconnect the device (or enabled / disable the device in the Device Manager if it cannot physically be unplugged). In this instance the device has indicated in the USB descriptor that it is capable of more than 1 touch and we can see below the USB feature request sent by Windows 7 HID to inform the controller that the driver (in this case the native HID driver) supports dual/multi-touch and that it should run in dual/multi-touch mode. This captured data allows us to set up the correct USB request in UPDD requesting the device runs in multi-touch mode, irrespective of the OS in use. Some controllers only output single touch data (commonly known as Mouse data) in non Win 7 OS or in some case none at all.
Touch data packet capture
Touching the touch screen will now record the touch data exchange, here with a single touch:
And dual touch data:
The recordings can be saved at appropriate times and the log files sent to us for analysis.