USB host Teensy 4.1. with Wacom Intuos5

well, what do you know... i managed to create a pull request. please tell me if this is correct like this...
 
I merged in your PR.

Have not looked at the LEDs yet. But I would probably look in wacom_sys.c for references to the word INTUOS5.

Like in wacom_initialize_leds()

And then look at functions like wacom_led_control()
Which I think sends the message. Then try to build the right buffer...
Then try to send the report to the right ID..
probably like we do to set to report 2:
static const uint8_t set_report_data[2] = {2, 2};
driver_->sendControlPacket(0x21, 9, 0x0302, 0, 2, (void*)set_report_data);

Which is in the cpp file. But different report ID and different data and see if that work.


Playing some with the Intuos S (4100), where it's PID does not have an entry in their driver. So, it goes through the generic. Which then I believe goes through all of the feature reports to figure out things.

But also need to spend time doing some other suff, so may not get very far today
 
Quick update to all (mainly mjs513 and lokki),

I have merged in the changes, but I think we probably should maybe look at how we should handle differences in the different tablets.

That is: there are now defined 3 different types of events:

a) PEN ones which may have information, like X, Y, pressure, proximity, and probably button states, like pen on tablet, and maybe the buttons on stylus.

b) Touch - some of the tablets support finger touch. Some allow more than one finger. We have some of the support in for this.

c) Buttons on the tablet. - @lokki - I think you defined a type of SIDE_CTRL - I am guessing that this now should handle the buttons on the edge? Both my Bamboo one and the Intuos S (4100) have 4 buttons. My guess is that we maybe should define something in the Tablet table to maybe define how many buttons there are.

So far I think mine are simply On/Off. - need to double check.

Some (Yours) have a wheel? neither of mine does. Again, probably something we can add to table.

Maybe possible to ask the tablets about some of this information, but so far, I have not tried to see how to send those types of messages and process the returns.

Make Sense?
 
This morning I am starting to play with seeing if I can enumerate the Report descriptors and later maybe try to query some/all of them.

I put up a new branch: https://github.com/KurtE/WacomController/tree/HIDReports

Where I sort of integrated a version of the USB HID Dumper program into it that again walks the USB HID Report descriptor, and optionally
print out like before, but it tries to build a table of all of the REPORTS with hopefully enough information about them.

I also know with some of my tablets, they have more than one HID interface that maps to the same Tablet. So, I try to remember all of them,
and then added a query to get the information.

I then added Serial command 'h' to the sketch that enumerates the USBHidParser objects that are attached to the object, and call the enumerate code,
as well as another method which prints out the table.

My Bamboo one output data:
Code:
*********************************************

Parsing Report descriptor (0x20004210) size: 176
  05 01	// Usage Page(1) - Generic Desktop
  09 02	// Usage(2) -(Mouse)
  A1 01	// Collection(1) top Usage(10000)
    85 01	// Report ID(1)
    09 01	// Usage(1) -(?)
    A1 00	// Collection(0)
    05 09	// Usage Page(9) - Button
    19 01	// Usage Minimum(1) -  (BUTTON 1)
    29 05	// Usage Maximum(5) -  (BUTTON 5)
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    95 05	// Report Count(5)
    75 01	// Report Size(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 01	// Report Count(1)
    75 03	// Report Size(3)
    81 01	// Input(1)	// (Constant, Array, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 02	// Report Count(2)
    81 06	// Input(6)	// (Data, Variable, Relative)
    C0	// End Collection
  C0	// End Collection
  05 0D	// Usage Page(d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(d0000)
    85 02	// Report ID(2)
    A1 00	// Collection(0)
    06 00 FF	// Usage Page(ff00) - Vendor Defined
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 08	// Report Count(8)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  09 01	// Usage(1) -
  85 02	// Report ID(2)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 03	// Report ID(3)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 04	// Report ID(4)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 05	// Report ID(5)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 10	// Report ID(10)
  95 02	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 11	// Report ID(11)
  95 10	// Report Count(10)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 13	// Report ID(13)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 20	// Report ID(20)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 21	// Report ID(21)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 06	// Report ID(6)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 07	// Report ID(7)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 14	// Report ID(14)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
0	d0000	1	2	8	1	0	255	2
1	d0000	1	3	8	1	0	255	2
2	d0000	1	4	8	1	0	255	2
3	d0000	1	5	8	1	0	255	2
4	d0000	1	16	8	2	0	255	2
5	d0000	1	17	8	16	0	255	2
6	d0000	1	19	8	1	0	255	2
7	d0000	1	32	8	1	0	255	2
8	d0000	1	33	8	1	0	255	2
9	d0000	1	6	8	1	0	255	2
10	d0000	1	7	8	1	0	255	2
11	d0000	1	20	8	1	0	255	2
*** End Report ***

*********************************************

Parsing Report descriptor (0x20004210) size: 176
  05 01	// Usage Page(1) - Generic Desktop
  09 02	// Usage(2) -(Mouse)
  A1 01	// Collection(1) top Usage(10000)
    85 01	// Report ID(1)
    09 01	// Usage(1) -(?)
    A1 00	// Collection(0)
    05 09	// Usage Page(9) - Button
    19 01	// Usage Minimum(1) -  (BUTTON 1)
    29 05	// Usage Maximum(5) -  (BUTTON 5)
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    95 05	// Report Count(5)
    75 01	// Report Size(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 01	// Report Count(1)
    75 03	// Report Size(3)
    81 01	// Input(1)	// (Constant, Array, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 02	// Report Count(2)
    81 06	// Input(6)	// (Data, Variable, Relative)
    C0	// End Collection
  C0	// End Collection
  05 0D	// Usage Page(d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(d0000)
    85 02	// Report ID(2)
    A1 00	// Collection(0)
    06 00 FF	// Usage Page(ff00) - Vendor Defined
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 08	// Report Count(8)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  09 01	// Usage(1) -
  85 02	// Report ID(2)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 03	// Report ID(3)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 04	// Report ID(4)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 05	// Report ID(5)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 10	// Report ID(10)
  95 02	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 11	// Report ID(11)
  95 10	// Report Count(10)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 13	// Report ID(13)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 20	// Report ID(20)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 21	// Report ID(21)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 06	// Report ID(6)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 07	// Report ID(7)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 14	// Report ID(14)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
0	d0000	1	2	8	1	0	255	2
1	d0000	1	3	8	1	0	255	2
2	d0000	1	4	8	1	0	255	2
3	d0000	1	5	8	1	0	255	2
4	d0000	1	16	8	2	0	255	2
5	d0000	1	17	8	16	0	255	2
6	d0000	1	19	8	1	0	255	2
7	d0000	1	32	8	1	0	255	2
8	d0000	1	33	8	1	0	255	2
9	d0000	1	6	8	1	0	255	2
10	d0000	1	7	8	1	0	255	2
11	d0000	1	20	8	1	0	255	2
*** End Report ***

*********************************************

Parsing Report descriptor (0x200048d0) size: 75
  06 00 FF	// Usage Page(ff00) - Vendor Defined
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff000000)
    85 02	// Report ID(2)
    05 0D	// Usage Page(d) - Digitizer
    09 22	// Usage(22) -
    A1 00	// Collection(0)
    06 00 FF	// Usage Page(ff00) - Vendor Defined
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 02	// Report Count(2)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    35 00	// Physical Minimum(0)
    46 44 48	// Physical Maximum(4844)
    26 E4 02	// Logical maximum(2e4)
    75 10	// Report Size(10)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 31	// Usage(31) -(Y)
    46 D4 30	// Physical Maximum(30d4)
    26 F4 01	// Logical maximum(1f4)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    06 00 FF	// Usage Page(ff00) - Vendor Defined
    09 01	// Usage(1) -
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 0D	// Report Count(d)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
*** End Report ***

My Intuos S (4100)
Code:
Wacom Tablet class Testing
*** Device HID1 56a:374 - connected ***
  manufacturer: Wacom Co.,Ltd.
  product: Intuos S
  Serial: 1GE00R2010013
WacomController::claim_collection(USBHIDParser 0x200041e0, 0x20007554, ff0d0001) - (56a:374) Claimed
>>> set tablet_info_index_ = 4 <<<
*** HID Device digi1 56a:374 - connected ***
  manufacturer: Wacom Co.,Ltd.
  product: Intuos S
  Serial: 1GE00R2010013

*********************************************


*********************************************

Parsing Report descriptor (0x20004210) size: 759
  06 0D FF	// Usage Page(ff0d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff0d0000)
    85 10	// Report ID(10)
    09 20	// Usage(20) -
    35 00	// Physical Minimum(0)
    45 00	// Physical Maximum(0)
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    A1 00	// Collection(0)
    09 42	// Usage(42) -
    09 44	// Usage(44) -
    09 5A	// Usage(5a) -
    25 01	// Logical maximum(1)
    75 01	// Report Size(1)
    95 03	// Report Count(3)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 02	// Report Count(2)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    09 32	// Usage(32) -
    09 36	// Usage(36) -
    95 02	// Report Count(2)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 01	// Report Count(1)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    0A 30 01	// Usage(130) -
    65 11	// Unit(11)
    55 0D	// Unit Exponent(d)
    47 60 3B 00 00	// Physical Maximum(3b60)
    27 60 3B 00 00	// Logical maximum(3b60)
    75 18	// Report Size(18)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    0A 31 01	// Usage(131) -
    47 1C 25 00 00	// Physical Maximum(251c)
    27 1C 25 00 00	// Logical maximum(251c)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 30	// Usage(30) -
    55 00	// Unit Exponent(0)
    65 00	// Unit(0)
    26 FF 0F	// Logical maximum(fff)
    75 10	// Report Size(10)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    75 08	// Report Size(8)
    95 06	// Report Count(6)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    0A 32 01	// Usage(132) -
    25 3F	// Logical maximum(3f)
    75 08	// Report Size(8)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 5B	// Usage(5b) -
    09 5C	// Usage(5c) -
    17 00 00 00 80	// Logical Minimum(80000000)
    27 FF FF FF 7F	// Logical maximum(7fffffff)
    75 20	// Report Size(20)
    95 02	// Report Count(2)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 77	// Usage(77) -
    15 00	// Logical Minimum(0)
    26 FF 0F	// Logical maximum(fff)
    75 10	// Report Size(10)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  85 11	// Report ID(11)
  65 00	// Unit(0)
  55 00	// Unit Exponent(0)
  35 00	// Physical Minimum(0)
  45 00	// Physical Maximum(0)
  09 39	// Usage(39) -
  A1 00	// Collection(0) top Usage(ff0d0039)
    0A 10 09	// Usage(910) -
    0A 11 09	// Usage(911) -
    0A 12 09	// Usage(912) -
    0A 13 09	// Usage(913) -
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    75 01	// Report Size(1)
    95 04	// Report Count(4)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 04	// Report Count(4)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    75 08	// Report Size(8)
    95 07	// Report Count(7)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    C0	// End Collection
  85 13	// Report ID(13)
  65 00	// Unit(0)
  55 00	// Unit Exponent(0)
  35 00	// Physical Minimum(0)
  45 00	// Physical Maximum(0)
  0A 13 10	// Usage(1013) -
  A1 00	// Collection(0) top Usage(ff0d1013)
    0A 3B 04	// Usage(43b) -
    15 00	// Logical Minimum(0)
    25 64	// Logical maximum(64)
    75 07	// Report Size(7)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    0A 04 04	// Usage(404) -
    25 01	// Logical maximum(1)
    75 01	// Report Size(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 00	// Usage(0) -
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    75 08	// Report Size(8)
    95 06	// Report Count(6)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    C0	// End Collection
  09 0E	// Usage(e) -
  A1 02	// Collection(2) top Usage(ff0d0000)
    85 02	// Report ID(2)
    0A 02 10	// Usage(1002) -
    15 01	// Logical Minimum(1)
    25 02	// Logical maximum(2)
    75 08	// Report Size(8)
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 03	// Report ID(3)
    0A 03 10	// Usage(1003) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 04	// Report ID(4)
    0A 04 10	// Usage(1004) -
    15 01	// Logical Minimum(1)
    25 01	// Logical maximum(1)
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 07	// Report ID(7)
    0A 09 10	// Usage(1009) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    B1 03	// Feature(3)	// (Constant, Variable, Absolute)
    0A 07 10	// Usage(1007) -
    09 00	// Usage(0) -
    27 FF FF 00 00	// Logical maximum(ffff)
    75 10	// Report Size(10)
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    75 08	// Report Size(8)
    95 09	// Report Count(9)
    B1 03	// Feature(3)	// (Constant, Variable, Absolute)
    85 0C	// Report ID(c)
    0A 30 0D	// Usage(d30) -
    0A 31 0D	// Usage(d31) -
    0A 32 0D	// Usage(d32) -
    0A 33 0D	// Usage(d33) -
    65 11	// Unit(11)
    55 0D	// Unit Exponent(d)
    35 00	// Physical Minimum(0)
    46 C8 00	// Physical Maximum(c8)
    15 00	// Logical Minimum(0)
    26 90 01	// Logical maximum(190)
    75 10	// Report Size(10)
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0D	// Report ID(d)
    0A 0D 10	// Usage(100d) -
    65 00	// Unit(0)
    55 00	// Unit Exponent(0)
    45 00	// Physical Maximum(0)
    25 01	// Logical maximum(1)
    75 08	// Report Size(8)
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 14	// Report ID(14)
    0A 14 10	// Usage(1014) -
    26 FF 00	// Logical maximum(ff)
    95 0D	// Report Count(d)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 CC	// Report ID(cc)
    0A CC 10	// Usage(10cc) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 31	// Report ID(31)
    0A 31 10	// Usage(1031) -
    25 64	// Logical maximum(64)
    95 03	// Report Count(3)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    95 02	// Report Count(2)
    B1 03	// Feature(3)	// (Constant, Variable, Absolute)
    C0	// End Collection
  0A AC 10	// Usage(10ac) -
  A1 02	// Collection(2) top Usage(ff0d10ac)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    85 AC	// Report ID(ac)
    09 00	// Usage(0) -
    96 BF 00	// Report Count(bf)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 15	// Report ID(15)
    09 00	// Usage(0) -
    95 0E	// Report Count(e)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 33	// Report ID(33)
    09 00	// Usage(0) -
    95 12	// Report Count(12)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 44	// Report ID(44)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 45	// Report ID(45)
    09 00	// Usage(0) -
    95 20	// Report Count(20)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 60	// Report ID(60)
    09 00	// Usage(0) -
    95 3F	// Report Count(3f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 61	// Report ID(61)
    09 00	// Usage(0) -
    95 3E	// Report Count(3e)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 62	// Report ID(62)
    09 00	// Usage(0) -
    95 3E	// Report Count(3e)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 65	// Report ID(65)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 66	// Report ID(66)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 67	// Report ID(67)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 68	// Report ID(68)
    09 00	// Usage(0) -
    95 11	// Report Count(11)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 6F	// Report ID(6f)
    09 00	// Usage(0) -
    95 3E	// Report Count(3e)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 CD	// Report ID(cd)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 16	// Report ID(16)
    09 00	// Usage(0) -
    95 0E	// Report Count(e)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 35	// Report ID(35)
    09 00	// Usage(0) -
    95 0A	// Report Count(a)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  85 D0	// Report ID(d0)
  09 01	// Usage(1) -
  96 08 00	// Report Count(8)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D1	// Report ID(d1)
  09 01	// Usage(1) -
  96 04 01	// Report Count(104)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D2	// Report ID(d2)
  09 01	// Usage(1) -
  96 04 01	// Report Count(104)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D3	// Report ID(d3)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D4	// Report ID(d4)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D5	// Report ID(d5)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D6	// Report ID(d6)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D7	// Report ID(d7)
  09 01	// Usage(1) -
  96 08 00	// Report Count(8)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D8	// Report ID(d8)
  09 01	// Usage(1) -
  96 0C 00	// Report Count(c)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 D9	// Report ID(d9)
  09 01	// Usage(1) -
  96 00 05	// Report Count(500)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DA	// Report ID(da)
  09 01	// Usage(1) -
  96 04 02	// Report Count(204)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DB	// Report ID(db)
  09 01	// Usage(1) -
  96 06 00	// Report Count(6)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DC	// Report ID(dc)
  09 01	// Usage(1) -
  96 02 00	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DD	// Report ID(dd)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DE	// Report ID(de)
  09 01	// Usage(1) -
  96 04 00	// Report Count(4)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 DF	// Report ID(df)
  09 01	// Usage(1) -
  96 22 00	// Report Count(22)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 E0	// Report ID(e0)
  09 01	// Usage(1) -
  96 01 00	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 E1	// Report ID(e1)
  09 01	// Usage(1) -
  96 02 00	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 E2	// Report ID(e2)
  09 01	// Usage(1) -
  96 02 00	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 E3	// Report ID(e3)
  09 01	// Usage(1) -
  96 02 00	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  85 E4	// Report ID(e4)
  09 01	// Usage(1) -
  96 FF 01	// Report Count(1ff)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  C0	// End Collection

	TOP		Usage	ID	Size	Count	Min	Max	Type
0	ff0d0000	1002	2	8	1	1	2	2
1	ff0d0000	1003	3	8	1	0	255	2
2	ff0d0000	1004	4	8	1	1	1	2
3	ff0d0000	1009	7	8	1	0	255	2
4	ff0d0000	1009	7	8	1	0	255	3
5	ff0d0000	0	7	16	2	0	65535	2
6	ff0d0000	0	7	8	9	0	65535	3
7	ff0d0000	d33	12	16	4	0	400	2
8	ff0d0000	100d	13	8	1	0	1	2
9	ff0d0000	1014	20	8	13	0	255	2
10	ff0d0000	10cc	204	8	2	0	255	2
11	ff0d0000	1031	49	8	3	0	100	2
12	ff0d0000	1031	49	8	2	0	100	3
13	ff0d10ac	0	21	8	14	0	255	2
14	ff0d10ac	0	51	8	18	0	255	2
15	ff0d10ac	0	68	8	4	0	255	2
16	ff0d10ac	0	69	8	32	0	255	2
17	ff0d10ac	0	96	8	63	0	255	2
18	ff0d10ac	0	97	8	62	0	255	2
19	ff0d10ac	0	98	8	62	0	255	2
20	ff0d10ac	0	101	8	4	0	255	2
21	ff0d10ac	0	102	8	4	0	255	2
22	ff0d10ac	0	103	8	4	0	255	2
23	ff0d10ac	0	104	8	17	0	255	2
24	ff0d10ac	0	111	8	62	0	255	2
25	ff0d10ac	0	205	8	2	0	255	2
26	ff0d10ac	0	22	8	14	0	255	2
27	ff0d10ac	0	53	8	10	0	255	2
28	ff0d10ac	1	208	8	8	0	255	2
29	ff0d10ac	1	209	8	260	0	255	2
30	ff0d10ac	1	210	8	260	0	255	2
31	ff0d10ac	1	211	8	4	0	255	2
32	ff0d10ac	1	212	8	4	0	255	2
33	ff0d10ac	1	213	8	4	0	255	2
34	ff0d10ac	1	214	8	4	0	255	2
35	ff0d10ac	1	215	8	8	0	255	2
36	ff0d10ac	1	216	8	12	0	255	2
37	ff0d10ac	1	217	8	1280	0	255	2
38	ff0d10ac	1	218	8	516	0	255	2
39	ff0d10ac	1	219	8	6	0	255	2
40	ff0d10ac	1	220	8	2	0	255	2
41	ff0d10ac	1	221	8	4	0	255	2
42	ff0d10ac	1	222	8	4	0	255	2
43	ff0d10ac	1	223	8	34	0	255	2
44	ff0d10ac	1	224	8	1	0	255	2
45	ff0d10ac	1	225	8	2	0	255	2
46	ff0d10ac	1	226	8	2	0	255	2
47	ff0d10ac	1	227	8	2	0	255	2
48	ff0d10ac	1	228	8	511	0	255	2
*** End Report ***
Lots more reports...
 
Last edited:
@KurtE

Just ran it for my wacom Intuos Pen & Touch small S size CTH-480 / S0:
Code:
*********************************************

Parsing Report descriptor (0x1fff2190) size: 192
  06 0D FF	// Usage Page(ff0d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff0d0000)
    85 02	// Report ID(2)
    A1 00	// Collection(0)
    06 00 FF	// Usage Page(ff00) - Vendor Defined
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 09	// Report Count(9)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  09 01	// Usage(1) -
  85 02	// Report ID(2)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 03	// Report ID(3)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 04	// Report ID(4)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 05	// Report ID(5)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 10	// Report ID(10)
  95 02	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 11	// Report ID(11)
  95 10	// Report Count(10)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 13	// Report ID(13)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 07	// Report ID(7)
  95 09	// Report Count(9)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 20	// Report ID(20)
  95 05	// Report Count(5)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 21	// Report ID(21)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 22	// Report ID(22)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 23	// Report ID(23)
  95 0E	// Report Count(e)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 14	// Report ID(14)
  95 1F	// Report Count(1f)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 30	// Report ID(30)
  96 02 00	// Report Count(2)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 31	// Report ID(31)
  96 09 01	// Report Count(109)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 32	// Report ID(32)
  96 08 01	// Report Count(108)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 33	// Report ID(33)
  95 01	// Report Count(1)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 24	// Report ID(24)
  95 1F	// Report Count(1f)
  B1 02	// Feature(2)	// (Data, Variable, Absolute)
  09 01	// Usage(1) -
  85 25	// Report ID(25)
  95 04	// Report Count(4)
  B1 1F	// Feature(1f)	// (Constant, Variable, Relative, Wrap, Non Linear)
  85 C0	// Report ID(c0)
  09 00	// Usage(0) -
  95 09	// Report Count(9)
  81 02	// Input(2)	// (Data, Variable, Absolute)
  C0	// End Collection

	TOP	Usage		ID	Size	Count	Min	Max	Type
0	ff0d0000	1	2	8	1	0	255	2
1	ff0d0000	1	3	8	1	0	255	2
2	ff0d0000	1	4	8	1	0	255	2
3	ff0d0000	1	5	8	1	0	255	2
4	ff0d0000	1	16	8	2	0	255	2
5	ff0d0000	1	17	8	16	0	255	2
6	ff0d0000	1	19	8	1	0	255	2
7	ff0d0000	1	7	8	9	0	255	2
8	ff0d0000	1	32	8	5	0	255	2
9	ff0d0000	1	33	8	1	0	255	2
10	ff0d0000	1	34	8	1	0	255	2
11	ff0d0000	1	35	8	14	0	255	2
12	ff0d0000	1	20	8	31	0	255	2
13	ff0d0000	1	48	8	2	0	255	2
14	ff0d0000	1	49	8	265	0	255	2
15	ff0d0000	1	50	8	264	0	255	2
16	ff0d0000	1	51	8	1	0	255	2
17	ff0d0000	1	36	8	31	0	255	2
18	ff0d0000	1	37	8	4	0	255	31
*** End Report ***

*********************************************

Parsing Report descriptor (0x1fff2850) size: 38
  06 00 FF	// Usage Page(ff00) - Vendor Defined
  09 80	// Usage(80) -
  A1 01	// Collection(1) top Usage(ff000080)
    85 02	// Report ID(2)
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 3F	// Report Count(3f)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    85 03	// Report ID(3)
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 3F	// Report Count(3f)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
*** End Report ***

On that Huion H640P tablet:
Code:
Wacom Tablet class Testing
*** Device HID1 416:3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
*** Device HID1 - disconnected ***
*** Device HID1 256c:6d - connected ***
  manufacturer: 	
  product: 	
*** Device HID2 256c:6d - connected ***
  manufacturer: 	
  product: 	
WacomController::claim_collection(USBHIDParser 0x1fff2160, 0x1fff59c4, ff000001) - (256c:6d) Claimed
>>> set tablet_info_index_ = 3 <<<
*** HID Device digi1 256c:6d - connected ***
  manufacturer: 	
  product: 	
WacomController::claim_collection(USBHIDParser 0x1fff2820, 0x1fff59c4, d0002) - (256c:6d) Claimed

*********************************************

Parsing Report descriptor (0x1fff2190) size: 18
  06 00 FF	// Usage Page(ff00) - Vendor Defined
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff000000)
    85 08	// Report ID(8)
    75 58	// Report Size(58)
    95 01	// Report Count(1)
    09 01	// Usage(1) -
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
*** End Report ***

*********************************************

Parsing Report descriptor (0x1fff2850) size: 93
  05 0D	// Usage Page(d) - Digitizer
  09 02	// Usage(2) -
  A1 01	// Collection(1) top Usage(d0000)
    85 0A	// Report ID(a)
    09 20	// Usage(20) -
    A1 00	// Collection(0)
    09 42	// Usage(42) -
    09 44	// Usage(44) -
    09 45	// Usage(45) -
    09 3C	// Usage(3c) -
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    75 01	// Report Size(1)
    95 06	// Report Count(6)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 32	// Usage(32) -
    75 01	// Report Size(1)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    55 0D	// Unit Exponent(d)
    65 33	// Unit(33)
    26 FF 7F	// Logical maximum(7fff)
    35 00	// Physical Minimum(0)
    46 00 08	// Physical Maximum(800)
    75 10	// Report Size(10)
    95 02	// Report Count(2)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    05 0D	// Usage Page(d) - Digitizer
    09 30	// Usage(30) -
    26 FF 1F	// Logical maximum(1fff)
    75 10	// Report Size(10)
    95 01	// Report Count(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    09 3D	// Usage(3d) -
    09 3E	// Usage(3e) -
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 02	// Report Count(2)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection
  C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
*** End Report ***
 
Last edited by a moderator:
c) Buttons on the tablet. - @lokki - I think you defined a type of SIDE_CTRL - I am guessing that this now should handle the buttons on the edge? Both my Bamboo one and the Intuos S (4100) have 4 buttons. My guess is that we maybe should define something in the Tablet table to maybe define how many buttons there are.

So far I think mine are simply On/Off. - need to double check.

Some (Yours) have a wheel? neither of mine does. Again, probably something we can add to table.

sorry, busy day. yes i figured it makes sense to declare a new type for those buttons. on the intuos4 and intuos5 as well as the intuos pro models, there are 9 buttons and a wheel (which is used to choose brush size for example) mine has a resolution of 71 units. older intuos models had two touch stripes to handle two different brushes/settings.

i just bought a secondhand intuos4 large which should get here next week...it was cheap!! the intuos4 series is special/fun since they have two OLED screens on the tablet to show the chosen function of the keys. will sure be fun to program those with a teensy :)

i will post my tablets output of your sketch some other day...
i am not sure if we are able (certainly not me) to create a *universal* driver for all wacoms for teensy, but it would be great! i just fear it is a deep rabbit hole, so many different wacom devices with different functionality.
 
ok, couldn't resist... here is the intuos5 medium:

Code:
*********************************************

Parsing Report descriptor (0x20004210) size: 243
  05 01	// Usage Page(1) - Generic Desktop
  09 02	// Usage(2) -(Mouse)
  A1 01	// Collection(1) top Usage(10000)
    85 01	// Report ID(1)
    09 01	// Usage(1) -(?)
    A1 00	// Collection(0)
    05 09	// Usage Page(9) - Button
    19 01	// Usage Minimum(1) -  (BUTTON 1)
    29 03	// Usage Maximum(3) -  (BUTTON 3)
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    95 03	// Report Count(3)
    75 01	// Report Size(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 05	// Report Count(5)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    09 38	// Usage(38) -(Wheel)
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 03	// Report Count(3)
    81 06	// Input(6)	// (Data, Variable, Relative)
    C0	// End Collection
  C0	// End Collection
  05 0D	// Usage Page(d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(d0000)
    85 02	// Report ID(2)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 03	// Report ID(3)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 C0	// Report ID(c0)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 02	// Report ID(2)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 03	// Report ID(3)
    09 00	// Usage(0) -
    95 09	// Report Count(9)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 05	// Report ID(5)
    09 00	// Usage(0) -
    95 08	// Report Count(8)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 07	// Report ID(7)
    09 00	// Usage(0) -
    95 0F	// Report Count(f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 08	// Report ID(8)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0A	// Report ID(a)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0B	// Report ID(b)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 20	// Report ID(20)
    09 00	// Usage(0) -
    95 08	// Report Count(8)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 04	// Report ID(4)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0D	// Report ID(d)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 CC	// Report ID(cc)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 30	// Report ID(30)
    09 00	// Usage(0) -
    95 1F	// Report Count(1f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 31	// Report ID(31)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 15	// Report ID(15)
    09 00	// Usage(0) -
    95 0A	// Report Count(a)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 14	// Report ID(14)
    09 00	// Usage(0) -
    95 0F	// Report Count(f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 40	// Report ID(40)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 DD	// Report ID(dd)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
0	d0000	0	2	8	1	0	255	2
1	d0000	0	3	8	9	0	255	2
2	d0000	0	5	8	8	0	255	2
3	d0000	0	7	8	15	0	255	2
4	d0000	0	8	8	4	0	255	2
5	d0000	0	10	8	2	0	255	2
6	d0000	0	11	8	1	0	255	2
7	d0000	0	32	8	8	0	255	2
8	d0000	0	4	8	1	0	255	2
9	d0000	0	13	8	1	0	255	2
10	d0000	0	204	8	2	0	255	2
11	d0000	0	48	8	31	0	255	2
12	d0000	0	49	8	4	0	255	2
13	d0000	0	21	8	10	0	255	2
14	d0000	0	20	8	15	0	255	2
15	d0000	0	64	8	2	0	255	2
16	d0000	0	221	8	1	0	255	2
*** End Report ***

*********************************************

Parsing Report descriptor (0x20004210) size: 243
  05 01	// Usage Page(1) - Generic Desktop
  09 02	// Usage(2) -(Mouse)
  A1 01	// Collection(1) top Usage(10000)
    85 01	// Report ID(1)
    09 01	// Usage(1) -(?)
    A1 00	// Collection(0)
    05 09	// Usage Page(9) - Button
    19 01	// Usage Minimum(1) -  (BUTTON 1)
    29 03	// Usage Maximum(3) -  (BUTTON 3)
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    95 03	// Report Count(3)
    75 01	// Report Size(1)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    95 05	// Report Count(5)
    81 03	// Input(3)	// (Constant, Variable, Absolute)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    09 38	// Usage(38) -(Wheel)
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 03	// Report Count(3)
    81 06	// Input(6)	// (Data, Variable, Relative)
    C0	// End Collection
  C0	// End Collection
  05 0D	// Usage Page(d) - Digitizer
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(d0000)
    85 02	// Report ID(2)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 03	// Report ID(3)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 C0	// Report ID(c0)
    09 00	// Usage(0) -
    75 08	// Report Size(8)
    96 09 00	// Report Count(9)
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    85 02	// Report ID(2)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 03	// Report ID(3)
    09 00	// Usage(0) -
    95 09	// Report Count(9)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 05	// Report ID(5)
    09 00	// Usage(0) -
    95 08	// Report Count(8)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 07	// Report ID(7)
    09 00	// Usage(0) -
    95 0F	// Report Count(f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 08	// Report ID(8)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0A	// Report ID(a)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0B	// Report ID(b)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 20	// Report ID(20)
    09 00	// Usage(0) -
    95 08	// Report Count(8)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 04	// Report ID(4)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 0D	// Report ID(d)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 CC	// Report ID(cc)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 30	// Report ID(30)
    09 00	// Usage(0) -
    95 1F	// Report Count(1f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 31	// Report ID(31)
    09 00	// Usage(0) -
    95 04	// Report Count(4)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 15	// Report ID(15)
    09 00	// Usage(0) -
    95 0A	// Report Count(a)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 14	// Report ID(14)
    09 00	// Usage(0) -
    95 0F	// Report Count(f)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 40	// Report ID(40)
    09 00	// Usage(0) -
    95 02	// Report Count(2)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    85 DD	// Report ID(dd)
    09 00	// Usage(0) -
    95 01	// Report Count(1)
    B1 02	// Feature(2)	// (Data, Variable, Absolute)
    C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
0	d0000	0	2	8	1	0	255	2
1	d0000	0	3	8	9	0	255	2
2	d0000	0	5	8	8	0	255	2
3	d0000	0	7	8	15	0	255	2
4	d0000	0	8	8	4	0	255	2
5	d0000	0	10	8	2	0	255	2
6	d0000	0	11	8	1	0	255	2
7	d0000	0	32	8	8	0	255	2
8	d0000	0	4	8	1	0	255	2
9	d0000	0	13	8	1	0	255	2
10	d0000	0	204	8	2	0	255	2
11	d0000	0	48	8	31	0	255	2
12	d0000	0	49	8	4	0	255	2
13	d0000	0	21	8	10	0	255	2
14	d0000	0	20	8	15	0	255	2
15	d0000	0	64	8	2	0	255	2
16	d0000	0	221	8	1	0	255	2
*** End Report ***

*********************************************

Parsing Report descriptor (0x200048d0) size: 23
  06 00 FF	// Usage Page(ff00) - Vendor Defined
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff000000)
    85 02	// Report ID(2)
    09 01	// Usage(1) -
    15 00	// Logical Minimum(0)
    26 FF 00	// Logical maximum(ff)
    75 08	// Report Size(8)
    95 3F	// Report Count(3f)
    81 02	// Input(2)	// (Data, Variable, Absolute)
    C0	// End Collection

	TOP	Usage	ID	Size	Count	Min	Max	Type
*** End Report ***
 
Sorry, been busy with a related diversion here.

I am curious on how Ubuntu and soon windows startup code on if or how they used the feature reports in their startup code.

So I decided to use my Saleae Logic Analyzer to capture it, plus my modified version of the LS/FS USB capture Low Level Analyzer, that
was modified to output the newer report2 outputs like Serial, and I2C and SPI do.

And then updated my High-Level Analyzer that uses it to capture the data I am interested in. I decided to enhance it, to show more information about the SETUP packets
Which for me is now a whole lot easier to read. I have it output data both in the Tables output or Terminal output.

example capture from my Intuos S on Ubuntu as it is first connected:
Screenshot.jpg

And the Report information, which is setup to be able to cut and paste into excel:
Code:
23.91371954 , SETUP , 0x0 , 0x0 , <GET_DESCRIPTOR - DEVICE #:0 I:0x0 L:0x40> ,  0x80 0x6 0x0 0x1 0x0 0x0 0x40 0x0
23.91378884 , IN , 0x0 , 0x0 ,  ,  0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0x6a 0x5 0x74 0x3 0x11 0x1 0x1 0x2 0x3 0x1
23.99383474 , SETUP , 0x0 , 0x0 , <SET_ADDRESS I:0x0 L:0x0> ,  0x0 0x5 0xb 0x0 0x0 0x0 0x0 0x0
24.01368234 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - DEVICE #:0 I:0x0 L:0x12> ,  0x80 0x6 0x0 0x1 0x0 0x0 0x12 0x0
24.01375654 , IN , 0x0 , 0xb ,  ,  0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0x6a 0x5 0x74 0x3 0x11 0x1 0x1 0x2 0x3 0x1
24.01389326 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - DEVICE_QUALIFIER #:0 I:0x0 L:0xa> ,  0x80 0x6 0x0 0x6 0x0 0x0 0xa 0x0
24.01420976 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - DEVICE_QUALIFIER #:0 I:0x0 L:0xa> ,  0x80 0x6 0x0 0x6 0x0 0x0 0xa 0x0
24.01448886 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - DEVICE_QUALIFIER #:0 I:0x0 L:0xa> ,  0x80 0x6 0x0 0x6 0x0 0x0 0xa 0x0
24.01478456 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - CONFIG #:0 I:0x0 L:0x9> ,  0x80 0x6 0x0 0x2 0x0 0x0 0x9 0x0
24.01485754 , IN , 0x0 , 0xb ,  ,  0x9 0x2 0x22 0x0 0x1 0x1 0x0 0x80 0xfa
24.0150589 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - CONFIG #:0 I:0x0 L:0x22> ,  0x80 0x6 0x0 0x2 0x0 0x0 0x22 0x0
24.01513256 , IN , 0x0 , 0xb ,  ,  0x9 0x2 0x22 0x0 0x1 0x1 0x0 0x80 0xfa 0x9 0x4 0x0 0x0 0x1 0x3 0x0 0x0 0x0 0x9 0x21 0x10 0x1 0x0 0x1 0x22 0xf7 0x2 0x7 0x5 0x81 0x3 0x40 0x0 0x1
24.0153685 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:0 I:0x0 L:0xff> ,  0x80 0x6 0x0 0x3 0x0 0x0 0xff 0x0
24.0154375 , IN , 0x0 , 0xb ,  ,  0x4 0x3 0x9 0x4
24.01551848 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:2 I:0x409 L:0xff> ,  0x80 0x6 0x2 0x3 0x9 0x4 0xff 0x0
24.01558854 , IN , 0x0 , 0xb ,  ,  0x12 0x3 0x49 0x0 0x6e 0x0 0x74 0x0 0x75 0x0 0x6f 0x0 0x73 0x0 0x20 0x0 0x53 0x0
24.01577458 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:1 I:0x409 L:0xff> ,  0x80 0x6 0x1 0x3 0x9 0x4 0xff 0x0
24.01584456 , IN , 0x0 , 0xb ,  ,  0x1e 0x3 0x57 0x0 0x61 0x0 0x63 0x0 0x6f 0x0 0x6d 0x0 0x20 0x0 0x43 0x0 0x6f 0x0 0x2e 0x0 0x2c 0x0 0x4c 0x0 0x74 0x0 0x64 0x0 0x2e 0x0
24.01604396 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:3 I:0x409 L:0xff> ,  0x80 0x6 0x3 0x3 0x9 0x4 0xff 0x0
24.01611358 , IN , 0x0 , 0xb ,  ,  0x1c 0x3 0x31 0x0 0x47 0x0 0x45 0x0 0x30 0x0 0x30 0x0 0x52 0x0 0x32 0x0 0x30 0x0 0x31 0x0 0x30 0x0 0x30 0x0 0x31 0x0 0x33 0x0
24.02185008 , SETUP , 0x0 , 0xb , <SET_CONFIGURATION I:0x0 L:0x0> ,  0x0 0x9 0x1 0x0 0x0 0x0 0x0 0x0
24.02231764 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:3 I:0x409 L:0xff> ,  0x80 0x6 0x3 0x3 0x9 0x4 0xff 0x0
24.02238652 , IN , 0x0 , 0xb ,  ,  0x1c 0x3 0x31 0x0 0x47 0x0 0x45 0x0 0x30 0x0 0x30 0x0 0x52 0x0 0x32 0x0 0x30 0x0 0x31 0x0 0x30 0x0 0x30 0x0 0x31 0x0 0x33 0x0
24.02253482 , SETUP , 0x0 , 0xb , <HID SET_IDLE I:0x0 L:0x0> ,  0x21 0xa 0x0 0x0 0x0 0x0 0x0 0x0
24.02285118 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - HID REPORT I:0x0 L:0x2f7> ,  0x81 0x6 0x0 0x22 0x0 0x0 0xf7 0x2
24.0229613 , IN , 0x0 , 0xb ,  ,  0x6 0xd 0xff 0x9 0x1 0xa1 0x1 0x85 0x10 0x9 0x20 0x35 0x0 0x45 0x0 0x15 0x0 0x25 0x1 0xa1 0x0 0x9 0x42 0x9 0x44 0x9 0x5a 0x25 0x1 0x75 0x1 0x95 0x3 0x81 0x2 0x95 0x2 0x81 0x3 0x9 0x32 0x9 0x36 0x95 0x2 0x81 0x2 0x95 0x1 0x81 0x3 0xa 0x30 0x1 0x65 0x11 0x55 0xd 0x47 0x60 0x3b 0x0 0x0 0x27
24.02303338 , IN , 0x0 , 0xb ,  ,  0x60 0x3b 0x0 0x0 0x75 0x18 0x95 0x1 0x81 0x2 0xa 0x31 0x1 0x47 0x1c 0x25 0x0 0x0 0x27 0x1c 0x25 0x0 0x0 0x81 0x2 0x9 0x30 0x55 0x0 0x65 0x0 0x26 0xff 0xf 0x75 0x10 0x81 0x2 0x75 0x8 0x95 0x6 0x81 0x3 0xa 0x32 0x1 0x25 0x3f 0x75 0x8 0x95 0x1 0x81 0x2 0x9 0x5b 0x9 0x5c 0x17 0x0 0x0 0x0 0x80
24.02310988 , IN , 0x0 , 0xb ,  ,  0x27 0xff 0xff 0xff 0x7f 0x75 0x20 0x95 0x2 0x81 0x2 0x9 0x77 0x15 0x0 0x26 0xff 0xf 0x75 0x10 0x95 0x1 0x81 0x2 0xc0 0x85 0x11 0x65 0x0 0x55 0x0 0x35 0x0 0x45 0x0 0x9 0x39 0xa1 0x0 0xa 0x10 0x9 0xa 0x11 0x9 0xa 0x12 0x9 0xa 0x13 0x9 0x15 0x0 0x25 0x1 0x75 0x1 0x95 0x4 0x81 0x2 0x95 0x4 0x81
24.02317888 , IN , 0x0 , 0xb ,  ,  0x3 0x75 0x8 0x95 0x7 0x81 0x3 0xc0 0x85 0x13 0x65 0x0 0x55 0x0 0x35 0x0 0x45 0x0 0xa 0x13 0x10 0xa1 0x0 0xa 0x3b 0x4 0x15 0x0 0x25 0x64 0x75 0x7 0x95 0x1 0x81 0x2 0xa 0x4 0x4 0x25 0x1 0x75 0x1 0x81 0x2 0x9 0x0 0x26 0xff 0x0 0x75 0x8 0x81 0x2 0x75 0x8 0x95 0x6 0x81 0x3 0xc0 0x9 0xe 0xa1
24.02324802 , IN , 0x0 , 0xb ,  ,  0x2 0x85 0x2 0xa 0x2 0x10 0x15 0x1 0x25 0x2 0x75 0x8 0x95 0x1 0xb1 0x2 0x85 0x3 0xa 0x3 0x10 0x15 0x0 0x26 0xff 0x0 0x95 0x1 0xb1 0x2 0x85 0x4 0xa 0x4 0x10 0x15 0x1 0x25 0x1 0x95 0x1 0xb1 0x2 0x85 0x7 0xa 0x9 0x10 0x15 0x0 0x26 0xff 0x0 0x95 0x1 0xb1 0x2 0xb1 0x3 0xa 0x7 0x10 0x9 0x0
24.02336154 , IN , 0x0 , 0xb ,  ,  0x27 0xff 0xff 0x0 0x0 0x75 0x10 0x95 0x2 0xb1 0x2 0x75 0x8 0x95 0x9 0xb1 0x3 0x85 0xc 0xa 0x30 0xd 0xa 0x31 0xd 0xa 0x32 0xd 0xa 0x33 0xd 0x65 0x11 0x55 0xd 0x35 0x0 0x46 0xc8 0x0 0x15 0x0 0x26 0x90 0x1 0x75 0x10 0x95 0x4 0xb1 0x2 0x85 0xd 0xa 0xd 0x10 0x65 0x0 0x55 0x0 0x45 0x0 0x25 0x1
24.02343068 , IN , 0x0 , 0xb ,  ,  0x75 0x8 0x95 0x1 0xb1 0x2 0x85 0x14 0xa 0x14 0x10 0x26 0xff 0x0 0x95 0xd 0xb1 0x2 0x85 0xcc 0xa 0xcc 0x10 0x95 0x2 0xb1 0x2 0x85 0x31 0xa 0x31 0x10 0x25 0x64 0x95 0x3 0xb1 0x2 0x95 0x2 0xb1 0x3 0xc0 0xa 0xac 0x10 0xa1 0x2 0x15 0x0 0x26 0xff 0x0 0x75 0x8 0x85 0xac 0x9 0x0 0x96 0xbf 0x0 0x81 0x2
24.0235067 , IN , 0x0 , 0xb ,  ,  0x85 0x15 0x9 0x0 0x95 0xe 0xb1 0x2 0x85 0x33 0x9 0x0 0x95 0x12 0xb1 0x2 0x85 0x44 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x45 0x9 0x0 0x95 0x20 0xb1 0x2 0x85 0x60 0x9 0x0 0x95 0x3f 0xb1 0x2 0x85 0x61 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0x62 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0x65 0x9 0x0 0x95 0x4 0xb1 0x2
24.0236195 , IN , 0x0 , 0xb ,  ,  0x85 0x66 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x67 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x68 0x9 0x0 0x95 0x11 0xb1 0x2 0x85 0x6f 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0xcd 0x9 0x0 0x95 0x2 0xb1 0x2 0x85 0x16 0x9 0x0 0x95 0xe 0xb1 0x2 0x85 0x35 0x9 0x0 0x95 0xa 0xb1 0x2 0xc0 0x85 0xd0 0x9 0x1 0x96 0x8 0x0
24.0236887 , IN , 0x0 , 0xb ,  ,  0xb1 0x2 0x85 0xd1 0x9 0x1 0x96 0x4 0x1 0xb1 0x2 0x85 0xd2 0x9 0x1 0x96 0x4 0x1 0xb1 0x2 0x85 0xd3 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd4 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd5 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd6 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd7 0x9 0x1 0x96 0x8 0x0 0xb1
24.02375786 , IN , 0x0 , 0xb ,  ,  0x2 0x85 0xd8 0x9 0x1 0x96 0xc 0x0 0xb1 0x2 0x85 0xd9 0x9 0x1 0x96 0x0 0x5 0xb1 0x2 0x85 0xda 0x9 0x1 0x96 0x4 0x2 0xb1 0x2 0x85 0xdb 0x9 0x1 0x96 0x6 0x0 0xb1 0x2 0x85 0xdc 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xdd 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xde 0x9 0x1 0x96 0x4 0x0 0xb1 0x2
24.02383436 , IN , 0x0 , 0xb ,  ,  0x85 0xdf 0x9 0x1 0x96 0x22 0x0 0xb1 0x2 0x85 0xe0 0x9 0x1 0x96 0x1 0x0 0xb1 0x2 0x85 0xe1 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe2 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe3 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe4 0x9 0x1 0x96 0xff 0x1 0xb1 0x2 0xc0
24.06361148 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:0 I:0x0 L:0x4> ,  0x80 0x6 0x0 0x3 0x0 0x0 0x4 0x0
24.06368044 , IN , 0x0 , 0xb ,  ,  0x4 0x3 0x9 0x4
24.06396122 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:1 I:0x409 L:0xff> ,  0x80 0x6 0x1 0x3 0x9 0x4 0xff 0x0
24.06404236 , IN , 0x0 , 0xb ,  ,  0x1e 0x3 0x57 0x0 0x61 0x0 0x63 0x0 0x6f 0x0 0x6d 0x0 0x20 0x0 0x43 0x0 0x6f 0x0 0x2e 0x0 0x2c 0x0 0x4c 0x0 0x74 0x0 0x64 0x0 0x2e 0x0
24.06422598 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:0 I:0x0 L:0x4> ,  0x80 0x6 0x0 0x3 0x0 0x0 0x4 0x0
24.06429538 , IN , 0x0 , 0xb ,  ,  0x4 0x3 0x9 0x4
24.06442294 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:2 I:0x409 L:0xff> ,  0x80 0x6 0x2 0x3 0x9 0x4 0xff 0x0
24.06449242 , IN , 0x0 , 0xb ,  ,  0x12 0x3 0x49 0x0 0x6e 0x0 0x74 0x0 0x75 0x0 0x6f 0x0 0x73 0x0 0x20 0x0 0x53 0x0
24.0646503 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 213 I:0x0 L:0x5> ,  0xa1 0x1 0xd5 0x3 0x0 0x0 0x5 0x0
24.06471946 , IN , 0x0 , 0xb ,  ,  0xd5 0x20 0x0 0x0 0x0
24.06496114 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> ,  0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
24.06503946 , IN , 0x0 , 0xb ,  ,  0x16 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
25.06551286 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> ,  0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
25.06558252 , IN , 0x0 , 0xb ,  ,  0x16 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
26.0696438 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> ,  0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
26.06971302 , IN , 0x0 , 0xb ,  ,  0x16 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
27.07030488 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> ,  0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
27.0703747 , IN , 0x0 , 0xb ,  ,  0x16 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
28.07103064 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> ,  0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
28.07109946 , IN , 0x0 , 0xb ,  ,  0x16 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.11028648 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - STRING #:3 I:0x409 L:0xff> ,  0x80 0x6 0x3 0x3 0x9 0x4 0xff 0x0
29.11035524 , IN , 0x0 , 0xb ,  ,  0x1c 0x3 0x31 0x0 0x47 0x0 0x45 0x0 0x30 0x0 0x30 0x0 0x52 0x0 0x32 0x0 0x30 0x0 0x31 0x0 0x30 0x0 0x30 0x0 0x31 0x0 0x33 0x0
29.11051096 , SETUP , 0x0 , 0xb , <HID SET_IDLE I:0x0 L:0x0> ,  0x21 0xa 0x0 0x0 0x0 0x0 0x0 0x0
29.11071652 , SETUP , 0x0 , 0xb , <GET_DESCRIPTOR - HID REPORT I:0x0 L:0x2f7> ,  0x81 0x6 0x0 0x22 0x0 0x0 0xf7 0x2
29.110786139999995 , IN , 0x0 , 0xb ,  ,  0x6 0xd 0xff 0x9 0x1 0xa1 0x1 0x85 0x10 0x9 0x20 0x35 0x0 0x45 0x0 0x15 0x0 0x25 0x1 0xa1 0x0 0x9 0x42 0x9 0x44 0x9 0x5a 0x25 0x1 0x75 0x1 0x95 0x3 0x81 0x2 0x95 0x2 0x81 0x3 0x9 0x32 0x9 0x36 0x95 0x2 0x81 0x2 0x95 0x1 0x81 0x3 0xa 0x30 0x1 0x65 0x11 0x55 0xd 0x47 0x60 0x3b 0x0 0x0 0x27
29.1108553 , IN , 0x0 , 0xb ,  ,  0x60 0x3b 0x0 0x0 0x75 0x18 0x95 0x1 0x81 0x2 0xa 0x31 0x1 0x47 0x1c 0x25 0x0 0x0 0x27 0x1c 0x25 0x0 0x0 0x81 0x2 0x9 0x30 0x55 0x0 0x65 0x0 0x26 0xff 0xf 0x75 0x10 0x81 0x2 0x75 0x8 0x95 0x6 0x81 0x3 0xa 0x32 0x1 0x25 0x3f 0x75 0x8 0x95 0x1 0x81 0x2 0x9 0x5b 0x9 0x5c 0x17 0x0 0x0 0x0 0x80
29.11094998 , IN , 0x0 , 0xb ,  ,  0x27 0xff 0xff 0xff 0x7f 0x75 0x20 0x95 0x2 0x81 0x2 0x9 0x77 0x15 0x0 0x26 0xff 0xf 0x75 0x10 0x95 0x1 0x81 0x2 0xc0 0x85 0x11 0x65 0x0 0x55 0x0 0x35 0x0 0x45 0x0 0x9 0x39 0xa1 0x0 0xa 0x10 0x9 0xa 0x11 0x9 0xa 0x12 0x9 0xa 0x13 0x9 0x15 0x0 0x25 0x1 0x75 0x1 0x95 0x4 0x81 0x2 0x95 0x4 0x81
29.11101704 , IN , 0x0 , 0xb ,  ,  0x3 0x75 0x8 0x95 0x7 0x81 0x3 0xc0 0x85 0x13 0x65 0x0 0x55 0x0 0x35 0x0 0x45 0x0 0xa 0x13 0x10 0xa1 0x0 0xa 0x3b 0x4 0x15 0x0 0x25 0x64 0x75 0x7 0x95 0x1 0x81 0x2 0xa 0x4 0x4 0x25 0x1 0x75 0x1 0x81 0x2 0x9 0x0 0x26 0xff 0x0 0x75 0x8 0x81 0x2 0x75 0x8 0x95 0x6 0x81 0x3 0xc0 0x9 0xe 0xa1
29.1110862 , IN , 0x0 , 0xb ,  ,  0x2 0x85 0x2 0xa 0x2 0x10 0x15 0x1 0x25 0x2 0x75 0x8 0x95 0x1 0xb1 0x2 0x85 0x3 0xa 0x3 0x10 0x15 0x0 0x26 0xff 0x0 0x95 0x1 0xb1 0x2 0x85 0x4 0xa 0x4 0x10 0x15 0x1 0x25 0x1 0x95 0x1 0xb1 0x2 0x85 0x7 0xa 0x9 0x10 0x15 0x0 0x26 0xff 0x0 0x95 0x1 0xb1 0x2 0xb1 0x3 0xa 0x7 0x10 0x9 0x0
29.11115538 , IN , 0x0 , 0xb ,  ,  0x27 0xff 0xff 0x0 0x0 0x75 0x10 0x95 0x2 0xb1 0x2 0x75 0x8 0x95 0x9 0xb1 0x3 0x85 0xc 0xa 0x30 0xd 0xa 0x31 0xd 0xa 0x32 0xd 0xa 0x33 0xd 0x65 0x11 0x55 0xd 0x35 0x0 0x46 0xc8 0x0 0x15 0x0 0x26 0x90 0x1 0x75 0x10 0x95 0x4 0xb1 0x2 0x85 0xd 0xa 0xd 0x10 0x65 0x0 0x55 0x0 0x45 0x0 0x25 0x1
29.11126828 , IN , 0x0 , 0xb ,  ,  0x75 0x8 0x95 0x1 0xb1 0x2 0x85 0x14 0xa 0x14 0x10 0x26 0xff 0x0 0x95 0xd 0xb1 0x2 0x85 0xcc 0xa 0xcc 0x10 0x95 0x2 0xb1 0x2 0x85 0x31 0xa 0x31 0x10 0x25 0x64 0x95 0x3 0xb1 0x2 0x95 0x2 0xb1 0x3 0xc0 0xa 0xac 0x10 0xa1 0x2 0x15 0x0 0x26 0xff 0x0 0x75 0x8 0x85 0xac 0x9 0x0 0x96 0xbf 0x0 0x81 0x2
29.1113373 , IN , 0x0 , 0xb ,  ,  0x85 0x15 0x9 0x0 0x95 0xe 0xb1 0x2 0x85 0x33 0x9 0x0 0x95 0x12 0xb1 0x2 0x85 0x44 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x45 0x9 0x0 0x95 0x20 0xb1 0x2 0x85 0x60 0x9 0x0 0x95 0x3f 0xb1 0x2 0x85 0x61 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0x62 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0x65 0x9 0x0 0x95 0x4 0xb1 0x2
29.11140638 , IN , 0x0 , 0xb ,  ,  0x85 0x66 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x67 0x9 0x0 0x95 0x4 0xb1 0x2 0x85 0x68 0x9 0x0 0x95 0x11 0xb1 0x2 0x85 0x6f 0x9 0x0 0x95 0x3e 0xb1 0x2 0x85 0xcd 0x9 0x0 0x95 0x2 0xb1 0x2 0x85 0x16 0x9 0x0 0x95 0xe 0xb1 0x2 0x85 0x35 0x9 0x0 0x95 0xa 0xb1 0x2 0xc0 0x85 0xd0 0x9 0x1 0x96 0x8 0x0
29.11147554 , IN , 0x0 , 0xb ,  ,  0xb1 0x2 0x85 0xd1 0x9 0x1 0x96 0x4 0x1 0xb1 0x2 0x85 0xd2 0x9 0x1 0x96 0x4 0x1 0xb1 0x2 0x85 0xd3 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd4 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd5 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd6 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xd7 0x9 0x1 0x96 0x8 0x0 0xb1
29.11159522 , IN , 0x0 , 0xb ,  ,  0x2 0x85 0xd8 0x9 0x1 0x96 0xc 0x0 0xb1 0x2 0x85 0xd9 0x9 0x1 0x96 0x0 0x5 0xb1 0x2 0x85 0xda 0x9 0x1 0x96 0x4 0x2 0xb1 0x2 0x85 0xdb 0x9 0x1 0x96 0x6 0x0 0xb1 0x2 0x85 0xdc 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xdd 0x9 0x1 0x96 0x4 0x0 0xb1 0x2 0x85 0xde 0x9 0x1 0x96 0x4 0x0 0xb1 0x2
29.11170818 , IN , 0x0 , 0xb ,  ,  0x85 0xdf 0x9 0x1 0x96 0x22 0x0 0xb1 0x2 0x85 0xe0 0x9 0x1 0x96 0x1 0x0 0xb1 0x2 0x85 0xe1 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe2 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe3 0x9 0x1 0x96 0x2 0x0 0xb1 0x2 0x85 0xe4 0x9 0x1 0x96 0xff 0x1 0xb1 0x2 0xc0
29.11294998 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 12 I:0x0 L:0x9> ,  0xa1 0x1 0xc 0x3 0x0 0x0 0x9 0x0
29.113017219999996 , IN , 0x0 , 0xb ,  ,  0xc 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.11311778 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 12 I:0x0 L:0x9> ,  0xa1 0x1 0xc 0x3 0x0 0x0 0x9 0x0
29.11318718 , IN , 0x0 , 0xb ,  ,  0xc 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.11328266 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 12 I:0x0 L:0x9> ,  0xa1 0x1 0xc 0x3 0x0 0x0 0x9 0x0
29.11335224 , IN , 0x0 , 0xb ,  ,  0xc 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.11344972 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 12 I:0x0 L:0x9> ,  0xa1 0x1 0xc 0x3 0x0 0x0 0x9 0x0
29.11356326 , IN , 0x0 , 0xb ,  ,  0xc 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.22294964 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x54 0x2 0x0 0x26 0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3e 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.22394974 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x59 0x2 0x0 0x8 0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x37 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.22494962 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x59 0x2 0x0 0xfc 0x10 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x32 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.22594966 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x8a 0x2 0x0 0xeb 0x10 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x29 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.22694972 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0xa2 0x2 0x0 0xe7 0x10 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1f 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.22794962 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0xc5 0x2 0x0 0xda 0x10 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1a 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.22894964 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc4 0x2 0x0 0xd8 0x10 0x0 0xe0 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x16 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.22994972 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc7 0x2 0x0 0xd6 0x10 0x0 0xf7 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x14 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.23094972 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc7 0x2 0x0 0xd4 0x10 0x0 0x0 0x7 0x0 0x0 0x0 0x0 0x0 0x0 0x13 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.2319497 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc8 0x2 0x0 0xd1 0x10 0x0 0xf7 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x10 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.23294972 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xcc 0x2 0x0 0xcf 0x10 0x0 0xec 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0xe 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.23394972 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x64 0xb 0x0 0xfc 0xa 0x0 0x3c 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0x7 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.234949679999996 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x9b 0xb 0x0 0x7c 0xa 0x0 0x9b 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0xa 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.24094962 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xee 0xb 0x0 0xf7 0x9 0x0 0xde 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0x6 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.24894956 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x6d 0xc 0x0 0x66 0x9 0x0 0x5 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.25694966 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x17 0xd 0x0 0xcd 0x8 0x0 0x37 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x4 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.26494956 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xe2 0xd 0x0 0x3b 0x8 0x0 0x4d 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30294948 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xd0 0xe 0x0 0xaa 0x7 0x0 0x5f 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0xd 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30394964 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xcc 0xf 0x0 0x2e 0x7 0x0 0x76 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30494944 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xde 0x10 0x0 0xc8 0x6 0x0 0x76 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x5 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30594952 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xd 0x12 0x0 0x66 0x6 0x0 0x6b 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x12 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30694954 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x45 0x13 0x0 0x2 0x6 0x0 0x68 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x5 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.30894946 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x91 0x14 0x0 0x9d 0x5 0x0 0x62 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x7 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.31694944 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xdf 0x15 0x0 0x45 0x5 0x0 0x5e 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x4 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.3249494 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x33 0x17 0x0 0xf1 0x4 0x0 0x4a 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.33094938 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x84 0x18 0x0 0xaf 0x4 0x0 0x3a 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.33894948 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xd9 0x19 0x0 0x7a 0x4 0x0 0x3a 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.34694938 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x35 0x1b 0x0 0x44 0x4 0x0 0x46 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0xc 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.354949339999997 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x8b 0x1c 0x0 0x28 0x4 0x0 0x46 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.36094932 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xef 0x1d 0x0 0x11 0x4 0x0 0x3d 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x7 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.36894942 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x59 0x1f 0x0 0xd 0x4 0x0 0x2f 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.37694938 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xd7 0x20 0x0 0xe 0x4 0x0 0x2e 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x6 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.3849493 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x48 0x22 0x0 0x20 0x4 0x0 0x1e 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.39094934 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xcd 0x23 0x0 0x3c 0x4 0x0 0x4 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x4 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.39894934 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x44 0x25 0x0 0x66 0x4 0x0 0xdf 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0x2 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4069493 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc0 0x26 0x0 0x96 0x4 0x0 0x6e 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0x4 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.414949220000004 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x20 0x28 0x0 0xc9 0x4 0x0 0xfc 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x6 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.42094926 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x7f 0x29 0x0 0xf6 0x4 0x0 0x57 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x6 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4289492 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xc4 0x2a 0x0 0x23 0x5 0x0 0x79 0x7 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.43694916 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0xf0 0x2b 0x0 0x33 0x5 0x0 0x65 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.44494922 , IN , 0x1 , 0xb ,  ,  0x10 0x61 0x0 0x2d 0x0 0x28 0x5 0x0 0xec 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0xb 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.45294914 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x0 0x2d 0x0 0x28 0x5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xb 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4539492 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x65 0x2d 0x0 0xd 0x5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xd 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4589492 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x4a 0x2e 0x0 0x98 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x12 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4669491 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x7c 0x2e 0x0 0xc 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1a 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.47494906 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x62 0x2e 0x0 0x87 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x25 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.48294916 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0xff 0x2d 0x0 0x34 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x2e 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.4889491 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x4b 0x2d 0x0 0x1f 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x35 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.49694904 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x53 0x2c 0x0 0x17 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3a 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.5049491 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x13 0x2b 0x0 0x3b 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3d 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.51294906 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x68 0x2a 0x0 0x85 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.51894908 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x68 0x2a 0x0 0x85 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.51994898 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x68 0x2a 0x0 0x85 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.52694904 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x68 0x2a 0x0 0x85 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.53494896 , IN , 0x1 , 0xb ,  ,  0x10 0x60 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x11 0x3d 0x80 0x15 0x62 0x8 0x10 0x0 0x62 0x8
29.542949020000002 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.54394892 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.548949 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.556948960000003 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.5649489 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.57294886 , IN , 0x1 , 0xb ,  ,  0x10 0x40 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
29.64694872 , IN , 0x1 , 0xb ,  ,  0x10 0x0 0x6e 0x26 0x0 0x51 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
30.09894786 , IN , 0x1 , 0xb ,  ,  0x11 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0
30.1782191 , SETUP , 0x0 , 0xb , <HID SET_REPORT I:0x0 L:0x2> ,  0x21 0x9 0x2 0x3 0x0 0x0 0x2 0x0
30.17824402 , OUT , 0x0 , 0xb ,  ,  0x2 0x2
30.17828818 , OUT , 0x0 , 0xb ,  ,  0x2 0x2
30.17853698 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 2 I:0x0 L:0x2> ,  0xa1 0x1 0x2 0x3 0x0 0x0 0x2 0x0
30.17874082 , IN , 0x0 , 0xb ,  ,  0x2 0x2
30.2689474 , IN , 0x1 , 0xb ,  ,  0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
30.56894672 , IN , 0x1 , 0xb ,  ,  0x11 0x2 0x0 0x0 0x0 0x0 0x0 0x0 0x0
30.7529462 , IN , 0x1 , 0xb ,  ,  0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
31.29294508 , IN , 0x1 , 0xb ,  ,  0x11 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x0
31.43894472 , IN , 0x1 , 0xb ,  ,  0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
31.84894382 , IN , 0x1 , 0xb ,  ,  0x11 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0
32.04294338 , IN , 0x1 , 0xb ,  ,  0x11 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
I now can easily look for lines like: 24.06496114 , SETUP , 0x0 , 0xb , <GET_REPORT - FEATURE # 22 I:0x0 L:0xf> , 0xa1 0x1 0x16 0x3 0x0 0x0 0xf 0x0
And know that they are trying to read #22

Now back to the scheduled diversion.
 
@KurtE and others

As you know I have been trying to adapt the Wacom lib to so we can expand it to other tablets. The one I am working with is the Huion H640P which doesn't include touch but getting some strangeness going on.

1. Teensy 4.1 doesn't recognize the tablet but the Teensy 3.6 does, see https://forum.pjrc.com/threads/70855-USBHost-not-identify-Device-PID-VID-but-Rather-a-USB-VID-PID

2. The tablet seems to be sending both pen and frame button info using report 8 which is identifed as Vendor Specified but I can not seem to get access to that report even though its claimed by USBHost:
Code:
HIDDumpController Claim: 256c:6d usage: ff000001 - Yes

HID Report Descriptor (0x1fff4890) size: 18
  06 00 FF	// Usage Page(ff00) - Vendor Defined
  09 01	// Usage(1) -
  A1 01	// Collection(1) top Usage(ff000000)
    85 08	// Report ID(8)
    75 58	// Report Size(58)
    95 01	// Report Count(1)
    09 01	// Usage(1) -
    81 02	// Input(2)
    C0	// End Collection
rather I am only getting pen data (partially correct) from:
Code:
*** HID Device hdc1 256c: 6d - connected ***
  manufacturer: 	
  product: 	
HIDDumpController Claim: 256c:6d usage: d0002 - NO (Usage: 1fffad28)
HIDDumpController Claim: 256c:6d usage: d0002 - Yes

HID Report Descriptor (0x1fff4f50) size: 93
  05 0D	// Usage Page(d) - Digitizer
  09 02	// Usage(2) -
  A1 01	// Collection(1) top Usage(d0000)
    85 0A	// Report ID(a)
    09 20	// Usage(20) -
    A1 00	// Collection(0)
    09 42	// Usage(42) -
    09 44	// Usage(44) -
    09 45	// Usage(45) -
    09 3C	// Usage(3c) -
    15 00	// Logical Minimum(0)
    25 01	// Logical maximum(1)
    75 01	// Report Size(1)
    95 06	// Report Count(6)
    81 02	// Input(2)
    09 32	// Usage(32) -
    75 01	// Report Size(1)
    95 01	// Report Count(1)
    81 02	// Input(2)
    81 03	// Input(3)
    05 01	// Usage Page(1) - Generic Desktop
    09 30	// Usage(30) -(X)
    09 31	// Usage(31) -(Y)
    55 0D	// Unit Exponent(d)
    65 33	// Unit(33)
    26 FF 7F	// Logical maximum(7fff)
    35 00	// Physical Minimum(0)
    46 00 08	// Physical Maximum(800)
    75 10	// Report Size(10)
    95 02	// Report Count(2)
    81 02	// Input(2)
    05 0D	// Usage Page(d) - Digitizer
    09 30	// Usage(30) -
    26 FF 1F	// Logical maximum(1fff)
    75 10	// Report Size(10)
    95 01	// Report Count(1)
    81 02	// Input(2)
    09 3D	// Usage(3d) -
    09 3E	// Usage(3e) -
    15 81	// Logical Minimum(81)
    25 7F	// Logical maximum(7f)
    75 08	// Report Size(8)
    95 02	// Report Count(2)
    81 02	// Input(2)
    C0	// End Collection
  C0	// End Collection
*** HID Device hdc2 256c: 6d - connected ***
  manufacturer: 	
  product:
with data coming through as:
Code:
HID(d0002): 0A C0 CD 15 F1 5F 00 00 00 00 00 00 00 00 00 00 
Begin topusage:d0000 type:2 min:0 max:1
  usage=D0042, value=0
  usage=D0044, value=0
  usage=D0045, value=0
  usage=D003C, value=0
  usage=D0000, value=0
  usage=D0000, value=0
  Begin topusage:d0000 type:2 min:0 max:1
    usage=D0032, value=1
    Begin topusage:d0000 type:2 min:0 max:32767
    usage=10030, value=5581(X)
    usage=10031, value=24561(Y)
    Begin topusage:d0000 type:2 min:0 max:8191
    usage=D0030, value=0
    Begin topusage:d0000 type:2 min:-127 max:127
    usage=D003D, value=0
    usage=D003E, value=0
  END:
Not x values are incorrect and frame buttons are not supported in this report.

See next post for how windows and linux behaves
 
Using a app that has a 14 day trial for windows what I am seeing is that its collecting data from report 8 and not report 10:
Code:
This device is part of a composite device.

HID Descriptor
Usage Page: 65280 (Vendor Specific)
Usage: 1 (Unknown)
Collection 
Report ID: 8
Report Size: 88
Report Count: 1
Usage: 1 (Unknown)
Input: 2 (Data,Variable,Absolute,No Wrap,Linear,Preferred State,No Null Position)

End Collection 
==================================================================================

report 8 packet view for button press:
08 e0 01 01 00 00 00 00 00 00 00 00

report 8 packet view for pen:
08 80 09 05 0c 20 00 00 00 00 00 00

000747: Report Arrived (UP), 2022-08-15 11:34:13.6634102 +0.0040462
Report Name:Unknown
Report ID:8
Unknown[0xffffffff..0xffffffff]: 0xc050900

In linux I am seeing the same thing where it is using report 8 and not report 10:
Code:
08 E0 01 01 01 00 00 00 00 00 00 0008 E0 01 01 01 00 00 00 00 00 00 00
 
Sorry sort of sidetracked with keyboard/mouse USB Hub issue.

@mjs513 - Wonder if Linux is sending out a request for the different report ID?


@All - Also, Github is fun ;) :D


Note with Github and working on projects where multiple people are playing on it, what I typically do when I am ready to make changes to the code, I usually Try to use the method of:

Sync up the main/master branch
Create a new branch off of this
Do all of my changes and commits in the new branch.
Do PR back to main branch, which then should show if any of my changes are in conflict with the main, and resolve...
Then resync up the main/master branch.

Sometimes I cheat and do directly in main bracnh, especially if it is my library and small changes.

Sometimes when I make lots of commits, I go more complex procedure to make it easier to merge in that I will combine all of my commits into a fewer number using the:
git rebase -i HEAD~5
Where 5 was the number of commits I wish to deal with (sometimes 2 or 8 or ...). I then squash most of them which merges them together where I can then edit the commit comments.
...
But that is a different story.
 
yes, noted! i usually make sure my fork is synced before i do any changes, but sleepless nights and kids don't help... and i was excited to have the intuos4 working :)
 
@KurtE

I couldn't tell from Linux if a command was set to change the report - I was looking for that in input-wacom and Wireshark but didn't see anything specific. This is the closest thing that I could see:
Capture.PNG

I have tried changing reports but....
 
@KurtE
Just as a followup here is a Wireshark dump from RPI4. Pretty much does the same thing as windows. Maybe you can make heads or tails of whats its doing.
 

Attachments

  • aaa.zip
    45.9 KB · Views: 15
Not sure, wonder what driver are you using?

Saw this page: https://support.huion.com/en/support/discussions/topics/44001010998

Which shows you can use the digimend driver...

Or you can use theirs which is python: https://github.com/joseluis/huion-linux-drivers/blob/master/huion-tablet-driver.py

Gave the driver a try and works as expected since it worked before to get report 8 data - but I can;t find anywhere it sends a request for that particular report? This is a sample output from the driver


Code:
merlin@merlin-desktop:~/Documents$ sudo python3 h640p.py
Finding USB device. . . Done!
Reading configuration. . . Done!
Preparing driver. . . Done!
--------------------------------------------------------------------------------
 c8 |        Params block #2: ??N?????
    |                          Max X: 32000
    |                          Max Y: 20000
    |                   Max pressure: 8191
    |                     Resolution: 5080
    |
 c9 |       Firmware version: HUION_T173_190326
 ca |  Internal manufacturer: HUION Animation Technology Co.,ltd
--------------------------------------------------------------------------------
Setting up driver. . . Done!
	Tablet model name         GT-221 PRO
	Buttons                   ENABLED (10)
	Scrollbar                 ENABLED (1)
	Notifications:            ENABLED
		for buttons       ENABLED
		for scrollbar     disabled
	Screen                    Enabled (1920x1080)
	Current Monitor Setup     [monitor_2]
	Multi Monitor Setup       disabled
	Calling xrandr            disabled

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			< DEBUG MODE ENABLED >
Enabled by default. You can disable it by setting debug_mode = false
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SYSTEM: Linux 5.4.0-1068-raspi (aarch64 aarch64)
#78-Ubuntu SMP PREEMPT Mon Aug 8 05:29:27 UTC 2022

DEVICE: /dev/input/event5 (py-evdev-uinput)
bus: 0003, vendor 0001, product 0001, version 0003

      ENDPOINT 0x81: Interrupt IN ==========================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x81 IN
       bmAttributes     :    0x3 Interrupt
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x2

TABLET CAPABILITIES:
[('SYN_REPORT', 0), ('SYN_CONFIG', 1), ('SYN_DROPPED', 3), ('?', 21)]
[(['BTN_DIGI', 'BTN_TOOL_PEN'], 320), ('BTN_TOUCH', 330), ('BTN_STYLUS', 331), ('BTN_STYLUS2', 332)]
[(('ABS_X', 0), AbsInfo(value=0, min=0, max=95352, fuzz=0, flat=0, resolution=5080)), (('ABS_Y', 1), AbsInfo(value=0, min=0, max=53645, fuzz=0, flat=0, resolution=5080)), (('ABS_PRESSURE', 24), AbsInfo(value=0, min=0, max=8191, fuzz=0, flat=0, resolution=0)), (('ABS_TILT_X', 26), AbsInfo(value=0, min=0, max=0, fuzz=0, flat=0, resolution=0)), (('ABS_TILT_Y', 27), AbsInfo(value=0, min=0, max=0, fuzz=0, flat=0, resolution=0))]

VPEN:
name "Tablet Monitor Pen 223006", bus "BUS_USB", vendor "0001", product "0001", version "0003", phys "py-evdev-uinput"
event types: EV_SYN EV_KEY EV_ABS

XINPUT:
ERROR running the following comand:
	xinput list --short | grep "Tablet Monitor Pen"
RETURN CODE: 1

Huion Kamvas driver should now be running. . .

(Input from the tablet will be printed out)

08 e0 01 01 01 00 00 00 00 00 00 00 | X:00257 Y:00001 PRES:0000 TILT_X:000 TILT_Y:000
08 e0 01 01 01 00 00 00 00 00 00 00 | X:00257 Y:00001 PRES:0000 TILT_X:000 TILT_Y:000
08 e0 01 01 00 00 00 00 00 00 00 00 | X:00257 Y:00000 PRES:0000 TILT_X:000 TILT_Y:000
 
Quick update note:

I was experimenting with when we can send the control packet to switch to a specific report.

Before it was done when we receive first packet.

So, with Bamboo tablet I had to touch it first before the pen would work.

Now done at the end of claim_report, which appears to be working well, and I can now use pen right away.
 
@lokki and others Thought I would mention, that @mjs513 and me updated the library some as I mentioned earlier.

More of the details are up at: https://forum.pjrc.com/threads/7092...com-Huion-etc)?p=311771&viewfull=1#post311771

Playing with a quick and dirty graphics example showed for example that we sort of needed some additional information in the Tablet data,

For example, at least with the tablet that I have that supports touch, the touch has a different X, Y range than the PEN does, so added the Touch bounds to the table.

Added query functions to get data from this table, which we used in example sketch that shows you moving the pen and one or more fingers
on the tablet, with an approximate logical location of where the event happened on the tablet.

Did not test with the Intous5 or 4 as don't have one.

Kurt
 
hi @KurtE

long time no writing...sorry. i was (and still am) busy with a project for a museum, fortunately it also involves a couple of teensies :)

i just downloaded the newest code from your GitHub, works like a charm with the intuos4, will check the intuos5 later.

my next move if i can get some free time is to try to get the OLEDs working on the intuos4. there are a couple of linux projects that can display images and text on these so it should definitely be possible.
 
Back
Top