Revision 1.2 – 30th May 2013

 USB Protocol Capture








If you have a USB device that you would like supported by UPDD then we need to know certain characteristics of the device to be able to add support.  These include the USB vendor and product id, touch data initialisation (if required) interface and endpoint utilisation and touch data packet format.


This document describes some methods of capturing the relevant USB information on various host systems.


The best operating system to capture the USB data is Windows due to the availability of various commercial USB protocol capture tools, such as USBlyzer. These tools can be used to select the USB device, show configuration information, record transfers and show transfer data.


For Mac users that cannot connect the device to a Windows system you can use the Mac USB Prober to capture some of the required data on a Mac.


For Linux users you can run a command to list device data that can be used to set up the device.

UPDD considerations

Normally our initial approach to capturing USB data is to supply a UPDD driver configured to connect to the USB device by registering itself as the device driver for the device based on the vendor and product id. The driver supplied for this purpose will be configured to capture data on USB interface 0, endpoint 1. However, if the UPDD driver does not capture data but the device does work with the manufacturer’s driver or the HID driver supplied as part of the OS then these USB monitor tools can be used to see the USB traffic between the host system and the device when utilising a driver known to work.  The UPDD driver can then be further configured to support the device based on the captured USB information.


Where we do not initially need to view the full protocol but sufficient data that should allow us to configure our UPDD driver to be able to capture the data you can use a utility like USBview to identify the device and extract the required information.


To capture USB protocol interface you will need to use a USB monitoring tool to capture the USB traffic between the host and the device.


Most Windows USB monitoring tool should be able to capture all this information.  We use and prefer logs from USBlyzer. The full sequence of captured information using USBlyzer is documented here. If a different tool is used please capture the same information as shown in the USBlyzer capture document.


We have not located a Mac tool that can capture touch data but we have found a utility that can show us sufficient data that should allow us to configure our UPDD driver to be able to capture the data. Usage of the tool is documented here.


We have not located specific Linux utility that can capture touch data but there is the command ‘LSUSB –V’ to list device properties for connected devices which shows sufficient data that allows us to configure the device in UPDD to capture touch data, typically:


Bus 001 Device 004: ID 6615:0c20 IRTOUCHSYSTEMS Co. Ltd.

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0

  bDeviceProtocol         0

  bMaxPacketSize0        64

  idVendor           0x6615 IRTOUCHSYSTEMS Co. Ltd.

  idProduct          0x0c20

  bcdDevice            6.46

  iManufacturer           1 Beijing IRTOUCHSYSTEMS Co.,LtD

  iProduct                2 Optical TouchScreen

  iSerial                 0

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           25

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0

    bmAttributes         0xa0

      (Bus Powered)

      Remote Wakeup

    MaxPower              500mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass       255 Vendor Specific Class

      bInterfaceSubClass    255 Vendor Specific Subclass

      bInterfaceProtocol    255 Vendor Specific Protocol

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

Device Status:     0x0000

  (Bus Powered)


For further information or technical assistance please email the technical support team at