Thanks for the USB HID Mouse, Keyboard, Joystick and Midi support. Also I need USB HID Touchscreen support.
In this post you find the USB Touchscreen Device Descriptor of my Touchscreen (10 Finger Multi-Touch) that is working fine with OSX, Linux and Android.
Infos about the MultiTouch Report you can find here: http://janaxelson.com/forum/index.php?topic=733.0
It would be nice if you can support it in the next Teensy updates, I'm using Teensy 3.2 with the Arduino IDE 1.6.6
Report Descriptor:
--------------------
Usage Page (Digitizer) 05 0D
Usage (Touch Screen) 09 04
Collection (Application) A1 01
Report ID (1) 85 01
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Logical Minimum (0) 15 00
Logical Maximum (65535) 27 FF FF 00 00
Report Size (16) 75 10
Report Count (1) 95 01
Usage (Scan Time) 09 56
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Logical Maximum (10) 25 0A
Report Size (8) 75 08
Usage (Contact Count) 09 54
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report ID (68) 85 44
Usage (Contact Count Maximum) 09 55
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (68) 85 44
Usage Page (Vendor-Defined 1) 06 00 FF
Usage (Vendor-Defined 197) 09 C5
Logical Maximum (255) 26 FF 00
Report Count (256) 96 00 01
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (240) 85 F0
Usage (Vendor-Defined 1) 09 01
Report Count (4) 95 04
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (242) 85 F2
Usage (Vendor-Defined 3) 09 03
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 4) 09 04
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 5) 09 05
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report Count (1) 95 01
Usage (Vendor-Defined 6) 09 06
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 7) 09 07
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (241) 85 F1
Usage (Vendor-Defined 2) 09 02
Report Count (7) 95 07
Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02
Report ID (243) 85 F3
Usage (Vendor-Defined 8) 09 08
Report Count (61) 95 3D
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
End Collection C0
static const uint8_t _hidReportDescriptor[] PROGMEM = {
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x04, // Usage (Touch Screen)
0xA1, 0x01, // Collection (Application)
0x85, 0x01, // Report ID (1)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x15, 0x00, // Logical Minimum (0)
0x27, 0xFF, 0xFF, 0x00, 0x00, // Logical Maximum (65535)
0x75, 0x10, // Report Size (16)
0x95, 0x01, // Report Count (1)
0x09, 0x56, // Usage (Scan Time)
0x81 ,0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x25, 0x0A, // Logical Maximum (10)
0x75, 0x08, // Report Size (8)
0x09, 0x54, // Usage (Contact Count)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x85, 0x44, // Report ID (68)
0x09, 0x55, // Usage (Contact Count Maximum)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0x44, // Report ID (68)
0x06, 0x00, 0xFF, // Usage Page (Vendor-Defined 1)
0x09, 0xC5, // Usage (Vendor-Defined 197)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x96, 0x00, 0x01, // Report Count (256)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF0, // Report ID (240)
0x09, 0x01, // Usage (Vendor-Defined 1)
0x95, 0x04, // Report Count (4)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF2, // Report ID (242)
0x09, 0x03, // Usage (Vendor-Defined 3)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x04, // Usage (Vendor-Defined 4)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x05, // Usage (Vendor-Defined 5)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x95, 0x01, // Report Count (1)
0x09, 0x06, // Usage (Vendor-Defined 6)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x07, // Usage (Vendor-Defined 7)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF1, // Report ID (241)
0x09, 0x02, // Usage (Vendor-Defined 2)
0x95, 0x07, // Report Count (7)
0x91, 0x02, // Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF3, // Report ID (243)
0x09, 0x08, // Usage (Vendor-Defined 8)
0x95, 0x3D, // Report Count (61)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0xC0 // End Collection
Information for device CoolTouch(TM) System (VID=0x2149 PID=0x2316):
Connection Information:
------------------------------
Connection status: Device connected
Device actual bus speed: FullSpeed
Device is hub: No
Device address: 0x0002
Current configuration value: 0x01
Number of open pipes: 4
Device Descriptor:
------------------------------
0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x2149 idVendor
0x2316 idProduct
0x1331 bcdDevice
0x01 iManufacturer "Advanced Silicon S.A"
0x02 iProduct "CoolTouch(TM) System"
0x00 iSerialNumber
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x00 0x02 0x00 0x00 0x00 0x40 0x49 0x21
0x16 0x23 0x31 0x13 0x01 0x02 0x00 0x01
Configuration Descriptor:
------------------------------
0x09 bLength
0x02 bDescriptorType
0x0049 wTotalLength (73 Bytes)
0x02 bNumInterfaces
0x01 bConfigurationValue
0x03 iConfiguration "CoolTouch® System 104 "
0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup)
0xFA bMaxPower (500 mA)
Hex dump:
0x09 0x02 0x49 0x00 0x02 0x01 0x03 0xA0 0xFA
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x04 iInterface "CoolTouch® USB Interface 1 "
Hex dump:
0x09 0x04 0x00 0x00 0x02 0x03 0x00 0x00 0x04
HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0110 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x019B bDescriptorLength
Hex dump:
0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x9B 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x01 0x03 0x40 0x00 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x81 0x03 0x40 0x00 0x01
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x04 iInterface "CoolTouch® USB Interface 1 "
Hex dump:
0x09 0x04 0x01 0x00 0x02 0x03 0x00 0x00 0x04
HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0110 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x001D bDescriptorLength
Hex dump:
0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x1D 0x00
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x02 bEndpointAddress (OUT Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x02 0x03 0x40 0x00 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x82 0x03 0x40 0x00 0x01
Microsoft OS Descriptor:
------------------------------
0x12 bLength
0x03 bDescriptorType
Hex dump:
0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00
0x31 0x00 0x30 0x00 0x30 0x00 0x01 0x00
String Descriptor Table
--------------------------------
Index LANGID String
0x00 0x0000 0x0409
Hex dump:
0x04 0x03 0x09 0x04
0x01 0x0409 "Advanced Silicon S.A"
Hex dump:
0x2A 0x03 0x41 0x00 0x64 0x00 0x76 0x00 0x61 0x00
0x6E 0x00 0x63 0x00 0x65 0x00 0x64 0x00 0x20 0x00
0x53 0x00 0x69 0x00 0x6C 0x00 0x69 0x00 0x63 0x00
0x6F 0x00 0x6E 0x00 0x20 0x00 0x53 0x00 0x2E 0x00
0x41 0x00
0x02 0x0409 "CoolTouch(TM) System"
Hex dump:
0x2A 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0x28 0x00 0x54 0x00 0x4D 0x00 0x29 0x00 0x20 0x00
0x53 0x00 0x79 0x00 0x73 0x00 0x74 0x00 0x65 0x00
0x6D 0x00
0x03 0x0409 "CoolTouch® System 104 "
Hex dump:
0x4E 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0xAE 0x00 0x20 0x00 0x53 0x00 0x79 0x00 0x73 0x00
0x74 0x00 0x65 0x00 0x6D 0x00 0x20 0x00 0x31 0x00
0x30 0x00 0x34 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x04 0x0409 "CoolTouch® USB Interface 1 "
Hex dump:
0x4E 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0xAE 0x00 0x20 0x00 0x55 0x00 0x53 0x00 0x42 0x00
0x20 0x00 0x49 0x00 0x6E 0x00 0x74 0x00 0x65 0x00
0x72 0x00 0x66 0x00 0x61 0x00 0x63 0x00 0x65 0x00
0x20 0x00 0x31 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
------------------------------
Whole Device Descriptor as hex dump:
0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x49, 0x21,
0x16, 0x23, 0x31, 0x13, 0x01, 0x02, 0x00, 0x01
Whole Configuration Descriptor as hex dump:
0x09, 0x02, 0x49, 0x00, 0x02, 0x01, 0x03, 0xA0, 0xFA, 0x09,
0x04, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x04, 0x09, 0x21,
0x10, 0x01, 0x00, 0x01, 0x22, 0x9B, 0x01, 0x07, 0x05, 0x01,
0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x81, 0x03, 0x40, 0x00,
0x01, 0x09, 0x04, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x04,
0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x1D, 0x00, 0x07,
0x05, 0x02, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x82, 0x03,
0x40, 0x00, 0x01
Whole String Descriptor as hex dump:
0x12, 0x03, 0x4D, 0x00, 0x53, 0x00, 0x46, 0x00, 0x54, 0x00,
0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x01, 0x00
------------------------------
Connection path for device:
Standard OpenHCD USB-Hostcontroller
Root Hub
CoolTouch(TM) System (VID=0x2149 PID=0x2316) Port: 2
Running on: Windows 7 with Service Pack 1
Brought to you by TDD v1.84.0, Dec 14 2015, 09:19:38
In this post you find the USB Touchscreen Device Descriptor of my Touchscreen (10 Finger Multi-Touch) that is working fine with OSX, Linux and Android.
Infos about the MultiTouch Report you can find here: http://janaxelson.com/forum/index.php?topic=733.0
It would be nice if you can support it in the next Teensy updates, I'm using Teensy 3.2 with the Arduino IDE 1.6.6
Report Descriptor:
--------------------
Usage Page (Digitizer) 05 0D
Usage (Touch Screen) 09 04
Collection (Application) A1 01
Report ID (1) 85 01
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Usage (Finger) 09 22
Collection (Logical) A1 02
Usage (Tip Switch) 09 42
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (2) 95 02
Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
Usage (Contact Identifier) 09 51
Logical Maximum (31) 25 1F
Report Size (5) 75 05
Report Count (1) 95 01
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Usage Page (Generic Desktop) 05 01
Logical Maximum (32767) 26 FF 7F
Report Size (16) 75 10
Unit Exponent (-2) 55 0E
Unit (SI Lin: Length (cm)) 65 11
Usage (X) 09 30
Physical Minimum (0) 35 00
Physical Maximum (5095) 46 E7 13
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (2866) 46 32 0B
Usage (Y) 09 31
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Physical Maximum (0) 45 00
End Collection C0
Usage Page (Digitizer) 05 0D
Logical Minimum (0) 15 00
Logical Maximum (65535) 27 FF FF 00 00
Report Size (16) 75 10
Report Count (1) 95 01
Usage (Scan Time) 09 56
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Logical Maximum (10) 25 0A
Report Size (8) 75 08
Usage (Contact Count) 09 54
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report ID (68) 85 44
Usage (Contact Count Maximum) 09 55
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (68) 85 44
Usage Page (Vendor-Defined 1) 06 00 FF
Usage (Vendor-Defined 197) 09 C5
Logical Maximum (255) 26 FF 00
Report Count (256) 96 00 01
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (240) 85 F0
Usage (Vendor-Defined 1) 09 01
Report Count (4) 95 04
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (242) 85 F2
Usage (Vendor-Defined 3) 09 03
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 4) 09 04
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 5) 09 05
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report Count (1) 95 01
Usage (Vendor-Defined 6) 09 06
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Usage (Vendor-Defined 7) 09 07
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
Report ID (241) 85 F1
Usage (Vendor-Defined 2) 09 02
Report Count (7) 95 07
Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02
Report ID (243) 85 F3
Usage (Vendor-Defined 8) 09 08
Report Count (61) 95 3D
Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02
End Collection C0
static const uint8_t _hidReportDescriptor[] PROGMEM = {
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x04, // Usage (Touch Screen)
0xA1, 0x01, // Collection (Application)
0x85, 0x01, // Report ID (1)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x09, 0x42, // Usage (Tip Switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x95, 0x02, // Report Count (2)
0x81, 0x03, // Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x09, 0x51, // Usage (Contact Identifier)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x05, // Report Size (5)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x05, 0x01, // Usage Page (Generic Desktop)
0x26, 0xFF, 0x7F, // Logical Maximum (32767)
0x75, 0x10, // Report Size (16)
0x55, 0x0E, // Unit Exponent (-2)
0x65, 0x11, // Unit (SI Lin: Length (cm))
0x09, 0x30, // Usage (X)
0x35, 0x00, // Physical Minimum (0)
0x46, 0xE7, 0x13, // Physical Maximum (5095)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x46, 0x32, 0x0B, // Physical Maximum (2866)
0x09, 0x31, // Usage (Y)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x45, 0x00, // Physical Maximum (0)
0xC0, // End Collection
0x05, 0x0D, // Usage Page (Digitizer)
0x15, 0x00, // Logical Minimum (0)
0x27, 0xFF, 0xFF, 0x00, 0x00, // Logical Maximum (65535)
0x75, 0x10, // Report Size (16)
0x95, 0x01, // Report Count (1)
0x09, 0x56, // Usage (Scan Time)
0x81 ,0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x25, 0x0A, // Logical Maximum (10)
0x75, 0x08, // Report Size (8)
0x09, 0x54, // Usage (Contact Count)
0x81, 0x02, // Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)
0x85, 0x44, // Report ID (68)
0x09, 0x55, // Usage (Contact Count Maximum)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0x44, // Report ID (68)
0x06, 0x00, 0xFF, // Usage Page (Vendor-Defined 1)
0x09, 0xC5, // Usage (Vendor-Defined 197)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x96, 0x00, 0x01, // Report Count (256)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF0, // Report ID (240)
0x09, 0x01, // Usage (Vendor-Defined 1)
0x95, 0x04, // Report Count (4)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF2, // Report ID (242)
0x09, 0x03, // Usage (Vendor-Defined 3)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x04, // Usage (Vendor-Defined 4)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x05, // Usage (Vendor-Defined 5)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x95, 0x01, // Report Count (1)
0x09, 0x06, // Usage (Vendor-Defined 6)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x09, 0x07, // Usage (Vendor-Defined 7)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF1, // Report ID (241)
0x09, 0x02, // Usage (Vendor-Defined 2)
0x95, 0x07, // Report Count (7)
0x91, 0x02, // Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0x85, 0xF3, // Report ID (243)
0x09, 0x08, // Usage (Vendor-Defined 8)
0x95, 0x3D, // Report Count (61)
0xB1, 0x02, // Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)
0xC0 // End Collection
Information for device CoolTouch(TM) System (VID=0x2149 PID=0x2316):
Connection Information:
------------------------------
Connection status: Device connected
Device actual bus speed: FullSpeed
Device is hub: No
Device address: 0x0002
Current configuration value: 0x01
Number of open pipes: 4
Device Descriptor:
------------------------------
0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x2149 idVendor
0x2316 idProduct
0x1331 bcdDevice
0x01 iManufacturer "Advanced Silicon S.A"
0x02 iProduct "CoolTouch(TM) System"
0x00 iSerialNumber
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x00 0x02 0x00 0x00 0x00 0x40 0x49 0x21
0x16 0x23 0x31 0x13 0x01 0x02 0x00 0x01
Configuration Descriptor:
------------------------------
0x09 bLength
0x02 bDescriptorType
0x0049 wTotalLength (73 Bytes)
0x02 bNumInterfaces
0x01 bConfigurationValue
0x03 iConfiguration "CoolTouch® System 104 "
0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup)
0xFA bMaxPower (500 mA)
Hex dump:
0x09 0x02 0x49 0x00 0x02 0x01 0x03 0xA0 0xFA
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x04 iInterface "CoolTouch® USB Interface 1 "
Hex dump:
0x09 0x04 0x00 0x00 0x02 0x03 0x00 0x00 0x04
HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0110 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x019B bDescriptorLength
Hex dump:
0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x9B 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x01 0x03 0x40 0x00 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x81 0x03 0x40 0x00 0x01
Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x04 iInterface "CoolTouch® USB Interface 1 "
Hex dump:
0x09 0x04 0x01 0x00 0x02 0x03 0x00 0x00 0x04
HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0110 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x001D bDescriptorLength
Hex dump:
0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x1D 0x00
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x02 bEndpointAddress (OUT Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x02 0x03 0x40 0x00 0x01
Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x82 0x03 0x40 0x00 0x01
Microsoft OS Descriptor:
------------------------------
0x12 bLength
0x03 bDescriptorType
Hex dump:
0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00
0x31 0x00 0x30 0x00 0x30 0x00 0x01 0x00
String Descriptor Table
--------------------------------
Index LANGID String
0x00 0x0000 0x0409
Hex dump:
0x04 0x03 0x09 0x04
0x01 0x0409 "Advanced Silicon S.A"
Hex dump:
0x2A 0x03 0x41 0x00 0x64 0x00 0x76 0x00 0x61 0x00
0x6E 0x00 0x63 0x00 0x65 0x00 0x64 0x00 0x20 0x00
0x53 0x00 0x69 0x00 0x6C 0x00 0x69 0x00 0x63 0x00
0x6F 0x00 0x6E 0x00 0x20 0x00 0x53 0x00 0x2E 0x00
0x41 0x00
0x02 0x0409 "CoolTouch(TM) System"
Hex dump:
0x2A 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0x28 0x00 0x54 0x00 0x4D 0x00 0x29 0x00 0x20 0x00
0x53 0x00 0x79 0x00 0x73 0x00 0x74 0x00 0x65 0x00
0x6D 0x00
0x03 0x0409 "CoolTouch® System 104 "
Hex dump:
0x4E 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0xAE 0x00 0x20 0x00 0x53 0x00 0x79 0x00 0x73 0x00
0x74 0x00 0x65 0x00 0x6D 0x00 0x20 0x00 0x31 0x00
0x30 0x00 0x34 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x04 0x0409 "CoolTouch® USB Interface 1 "
Hex dump:
0x4E 0x03 0x43 0x00 0x6F 0x00 0x6F 0x00 0x6C 0x00
0x54 0x00 0x6F 0x00 0x75 0x00 0x63 0x00 0x68 0x00
0xAE 0x00 0x20 0x00 0x55 0x00 0x53 0x00 0x42 0x00
0x20 0x00 0x49 0x00 0x6E 0x00 0x74 0x00 0x65 0x00
0x72 0x00 0x66 0x00 0x61 0x00 0x63 0x00 0x65 0x00
0x20 0x00 0x31 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
------------------------------
Whole Device Descriptor as hex dump:
0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x49, 0x21,
0x16, 0x23, 0x31, 0x13, 0x01, 0x02, 0x00, 0x01
Whole Configuration Descriptor as hex dump:
0x09, 0x02, 0x49, 0x00, 0x02, 0x01, 0x03, 0xA0, 0xFA, 0x09,
0x04, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x04, 0x09, 0x21,
0x10, 0x01, 0x00, 0x01, 0x22, 0x9B, 0x01, 0x07, 0x05, 0x01,
0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x81, 0x03, 0x40, 0x00,
0x01, 0x09, 0x04, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x04,
0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x1D, 0x00, 0x07,
0x05, 0x02, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x82, 0x03,
0x40, 0x00, 0x01
Whole String Descriptor as hex dump:
0x12, 0x03, 0x4D, 0x00, 0x53, 0x00, 0x46, 0x00, 0x54, 0x00,
0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x01, 0x00
------------------------------
Connection path for device:
Standard OpenHCD USB-Hostcontroller
Root Hub
CoolTouch(TM) System (VID=0x2149 PID=0x2316) Port: 2
Running on: Windows 7 with Service Pack 1
Brought to you by TDD v1.84.0, Dec 14 2015, 09:19:38
Last edited: