USBHost Stops after Identifying USB device PID/VID before Finding Tablet PID/VID

mjs513

Senior Member+
While playing with the new WACOM Library (https://forum.pjrc.com/threads/70824-USB-host-Teensy-4-1-with-Wacom-Intuos5/page2) I plugged in a HUION Inspiroy H640P Graphics Drawing Tablet and ran @KurtE's new HIDDeviceInfo sketch. However, I was expecting to see the PID/VID for the tablet:
Code:
endor  ID:        256C
Product ID:        006D

but instead received a PID/VID for a USB device:
Code:
Device Descriptor:
  12 01 10 01 00 00 00 40 16 04 00 3F 00 00 01 02 00 01 
    VendorID = 0416, ProductID = 3F00, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Nuvoton
enumeration:
Product: WPM USB

If I run USBHost Shield 2.0 HIDDesc, USB_desc with the following config (some of the time = on first upload of sketch):
Code:
USB     Usb;
USBHub  Hub1(&Usb);
it does enumerate correctly:
Code:
Device descriptor: 
Descriptor Length:	12
Descriptor type:	01
USB version:		0110
Device class:		00
Device Subclass:	00
Device Protocol:	00
Max.packet size:	08
[COLOR="#FF0000"]Vendor  ID:		256C
Product ID:		006D[/COLOR]
Revision ID:		0000
Mfg.string index:	05
Prod.string index:	06
Serial number index:	00
Number of conf.:	01

Configuration descriptor:
Total length:		003B
Num.intf:		02
Conf.value:		01
Conf.string:		00
Attr.:			A0
Max.pwr:		32

Interface descriptor:
Intf.number:		00
Alt.:			00
Endpoints:		01
Intf. Class:		03
Intf. Subclass:		01
Intf. Protocol:		02
Intf.string:		00
Unknown descriptor:
Length:		09
Type:		21
Contents:	110100012212000705

Endpoint descriptor:
Endpoint address:	81
Attr.:			03
Max.pkt size:		0040
Polling interval:	02

Interface descriptor:
Intf.number:		01
Alt.:			00
Endpoints:		01
Intf. Class:		03
Intf. Subclass:		01
Intf. Protocol:		02
Intf.string:		00
Unknown descriptor:
Length:		09
Type:		21
Contents:	11010001225D000705

Endpoint descriptor:
Endpoint address:	82
Attr.:			03
Max.pkt size:		0010
Polling interval:	02


Addr:1(0.0.1)
otherwise it does the same thing as USBHost_t36:
Code:
Device descriptor: 
Descriptor Length:	12
Descriptor type:	01
USB version:		0110
Device class:		00
Device Subclass:	00
Device Protocol:	00
Max.packet size:	40
[COLOR="#FF0000"]Vendor  ID:		0416
Product ID:		3F00[/COLOR]
Revision ID:		0000
Mfg.string index:	01
Prod.string index:	02
Serial number index:	00
Number of conf.:	01

Configuration descriptor:
Total length:		0029
Num.intf:		01
Conf.value:		01
Conf.string:		00
Attr.:			80
Max.pwr:		32

Interface descriptor:
Intf.number:		00
Alt.:			00
Endpoints:		02
Intf. Class:		03
Intf. Subclass:		00
Intf. Protocol:		00
Intf.string:		00
Unknown descriptor:
Length:		09
Type:		21
Contents:	10010001221B000705

Endpoint descriptor:
Endpoint address:	81
Attr.:			03
Max.pkt size:		0040
Polling interval:	01

Endpoint descriptor:
Endpoint address:	02
Attr.:			03
Max.pkt size:		0040
Polling interval:	01


Addr:1(0.0.1)
Start

CONTINUED NEXT POST

EDIT: Changed title of thread
 
Last edited:
If I attach the tablet to a RPI4 and run LSUSB -V it does pick it up.

Code:
Bus 001 Device 004:[COLOR="#FF0000"] ID 256c:006d  [/COLOR]
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x256c 
  idProduct          0x006d 
  bcdDevice            0.00
  iManufacturer           5 (error)
  iProduct                6 (error)
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003b
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      18
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      93
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               2
 
I decided to attach a Teensy 3.6 and rerun the DeviceInfo sketch. This time it looks like it picked up both devices but with errors on the tablet:
Code:
USB HID Device Info Program

This Sketch shows information about plugged in HID devices

*** You can control the output by simple character input to Serial ***
R - Turns on or off showing the raw data
C - Toggles showing changed data only on or off
<anything else> - toggles showing the Hid formatted breakdown of the data

sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFFA000
periodictable = 1FFFA000
port change: 10001803
    connect
  begin reset
port change: 10001005
  port enabled
  end recovery
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 10 01 00 00 00 40 16 04 00 3F 00 00 01 02 00 01 
    VendorID = 0416, ProductID = 3F00, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Nuvoton
enumeration:
Product: WPM USB
enumeration:
Config data length = 41
enumeration:
Configuration Descriptor:
  09 02 29 00 01 01 00 80 32 
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 02 03 00 00 00 
    Interface = 0
    Number of endpoints = 2
    Class/Subclass/Protocol = 3(HID) / 0 / 0
  09 21 10 01 00 01 22 1B 00 
    HID, 1 report descriptor
  07 05 81 03 40 00 01 
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
  07 05 02 03 40 00 01 
    Endpoint = 2 OUT
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
enumeration:
USBHub memory usage = 960
USBHub claim_device this=1FFF5CC0
USBHub memory usage = 960
USBHub claim_device this=1FFF6080

USBDeviceInfo claim this=1FFF55E8

****************************************
** Device Level **
  vid=416
  pid=3F00
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
HIDParser claim this=1FFF4860
HIDParser claim this=1FFF4F20
HIDParser claim this=1FFF96A0
HIDParser claim this=1FFF30E0
HIDParser claim this=1FFF5600
Descriptor 4 = INTERFACE

USBDeviceInfo claim this=1FFF55E8

****************************************
** Interface Level **
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
 bInterfaceNumber = 0
 number end points = 2
 bInterfaceClass =    3
 bInterfaceSubClass = 0
    HID
 bInterfaceProtocol = 0
report descriptor size = 27
  endpoint = 81
    attributes = 3 Interrupt
    size = 64
    interval = 1
  endpoint = 2
    attributes = 3 Interrupt
    size = 64
    interval = 1
HIDParser claim this=1FFF4860
 bInterfaceNumber =   0
 bInterfaceClass =    3
 bInterfaceSubClass = 0
 bInterfaceProtocol = 0
HID Parser Claim: 09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
report descriptor size = 27
Two endpoint HID:
  endpoint = 81
   size = 64
   interval = 1
  endpoint = 2
   size = 64
   interval = 1
new_Pipe
allocate_interrupt_pipe_bandwidth
 best_bandwidth = 5, at offset = 0, shift= 0
new_Pipe
allocate_interrupt_pipe_bandwidth
 best_bandwidth = 7, at offset = 0, shift= 1
Descriptor 33 = HID
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
*** Device HID1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
control callback (hid)
05 01 09 00 A1 01 15 00 25 FF 19 00 29 FF 95 40 75 08 81 02 19 00 29 FF 91 02 C0 
  mesg = 22000681
  got report descriptor
Found top level collection 10000
find_driver
  driver 1FFF7520
HIDDumpController Claim: 416:3f00 usage: 10000 - Yes

HID Report Descriptor (0x1fff4890) size: 27
  05 01	// Usage Page(1) - Generic Desktop
  09 00	// Usage(0) -(?)
  A1 01	// Collection(1) top Usage(10000)
    15 00	// Logical Minimum(0)
    25 FF	// Logical maximum(ff)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    95 40	// Report Count(40)
    75 08	// Report Size(8)
    81 02	// Input(2)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    91 02	// Output(2)
    C0	// End Collection
[COLOR="#FF0000"]*** HID Device hdc1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB[/COLOR]
port change: 1C00100A
    disconnect
disconnect_Device:
USBDriver (available_drivers) list: 1FFF5CC0 -> 1FFF6080 -> 1FFF55E8 -> 1FFF4F20 -> 1FFF96A0 -> 1FFF30E0 -> 1FFF5600
USBDriver (dev->drivers) list: 1FFF4860
disconnect driver 1FFF4860
USBDriver (available_drivers) list: 1FFF4860 -> 1FFF5CC0 -> 1FFF6080 -> 1FFF55E8 -> 1FFF4F20 -> 1FFF96A0 -> 1FFF30E0 -> 1FFF5600
delete_Pipe 1FFF5AA0
  Free transfers
    * 536849152 * remove * free
    * 536817824 * remove * defer free until QH
  Free transfers attached to QH
    * 536817824
    * 536835296
* Delete Pipe completed
delete_Pipe 1FFF5A40
  Free transfers
  Free transfers attached to QH
    * 536849088
* Delete Pipe completed
delete_Pipe 1FFFAA00
  shut down async schedule
  Free transfers
  Free transfers attached to QH
    * 536849216
* Delete Pipe completed
removed Device_t from devlist
  disable
*** HID Device hdc1 - disconnected ***
*** Device HID1 - disconnected ***
port change: 10001803
    connect
  begin reset
port change: 10001005
  port enabled
  end recovery
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
[COLOR="#FF0000"]Device Descriptor:
  12 01 10 01 00 00 00 08 6C 25 6D 00 00 00 05 06 00 01 
    VendorID = 256C, ProductID = 006D, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:[/COLOR]
ERROR Followup
    remove from followup list
    remove from followup list
    stray halted 1FFFAAC0
  qtd: 1FFFAAC0, token=80008080, next=1FFFAB40
  dummy halt: 1FFFAB40
enumeration:
Manufacturer: Љ
ERROR Followup
    remove from followup list
    remove from followup list
    stray halted 1FFFAB00
  qtd: 1FFFAB00, token=80008080, next=1FFF74E0
  dummy halt: 1FFF74E0
enumeration:
Product: Љ
enumeration:
Config data length = 59
enumeration:
Configuration Descriptor:
  09 02 3B 00 02 01 00 A0 32 
    NumInterfaces = 2
    ConfigurationValue = 1
  09 04 00 00 01 03 01 02 00 
    Interface = 0
    Number of endpoints = 1
    Class/Subclass/Protocol = 3(HID) / 1(Boot) / 2(Mouse)
  09 21 11 01 00 01 22 12 00 
    HID, 1 report descriptor
  07 05 81 03 40 00 02 
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 64
    Polling Interval = 2
  09 04 01 00 01 03 01 02 00 
    Interface = 1
    Number of endpoints = 1
    Class/Subclass/Protocol = 3(HID) / 1(Boot) / 2(Mouse)
  09 21 11 01 00 01 22 5D 00 
    HID, 1 report descriptor
  07 05 82 03 10 00 02 
    Endpoint = 2 IN
    Type = Interrupt
    Max Size = 16
    Polling Interval = 2
enumeration:
HIDParser claim this=1FFF4860
USBHub memory usage = 960
USBHub claim_device this=1FFF5CC0
USBHub memory usage = 960
USBHub claim_device this=1FFF6080

USBDeviceInfo claim this=1FFF55E8

****************************************
** Device Level **
  vid=256C
  pid=6D
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 01 03 01 02 00 09 21 11 01 00 01 22 12 00 07 05 81 03 40 00 02 09 04 01 00 01 03 01
02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
HIDParser claim this=1FFF4F20
HIDParser claim this=1FFF96A0
HIDParser claim this=1FFF30E0
HIDParser claim this=1FFF5600
Descriptor 4 = INTERFACE
HIDParser claim this=1FFF4860
 bInterfaceNumber =   0
 bInterfaceClass =    3
 bInterfaceSubClass = 1
 bInterfaceProtocol = 2
HID Parser Claim: 09 04 00 00 01 03 01 02 00 09 21 11 01 00 01 22 12 00 07 05 81 03 40 00 02 09 04 01 00 01 03 01 02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
report descriptor size = 18
Single endpoint HID:
  endpoint = 81
   size = 64
   interval = 2
new_Pipe
allocate_interrupt_pipe_bandwidth
 best_bandwidth = 5, at offset = 0, shift= 0
Descriptor 33 = HID
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE

USBDeviceInfo claim this=1FFF55E8

****************************************
** Interface Level **
09 04 01 00 01 03 01 02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
 bInterfaceNumber = 1
 number end points = 1
 bInterfaceClass =    3
 bInterfaceSubClass = 1
    HID (BOOT)
 bInterfaceProtocol = 2
report descriptor size = 93
  endpoint = 82
    attributes = 3 Interrupt
    size = 16
    interval = 2
HIDParser claim this=1FFF4F20
 bInterfaceNumber =   1
 bInterfaceClass =    3
 bInterfaceSubClass = 1
 bInterfaceProtocol = 2
HID Parser Claim: 09 04 01 00 01 03 01 02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
report descriptor size = 93
Single endpoint HID:
  endpoint = 82
   size = 16
   interval = 2
new_Pipe
allocate_interrupt_pipe_bandwidth
 best_bandwidth = 3, at offset = 1, shift= 0
Descriptor 33 = HID
Descriptor 5 = ENDPOINT
*** Device HID1 256c: 6d - connected ***
  manufacturer: 	
  product: 	
*** Device HID2 256c: 6d - connected ***
  manufacturer: 	
  product: 	
control callback (hid)
06 00 FF 09 01 A1 01 85 08 75 58 95 01 09 01 81 02 C0 
  mesg = 22000681
  got report descriptor
Found top level collection FF000001
find_driver
  driver 1FFF7520
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
*** HID Device hdc1 256c: 6d - connected ***
  manufacturer: 	
  product: 	
control callback (hid)
05 0D 09 02 A1 01 85 0A 09 20 A1 00 09 42 09 44 09 45 09 3C 15 00 25 01 75 01 95 06 81 02 09 32 75 01 95 01 81 02 81 03 05 01 09 30 09 31 55 0D 65 33 26 FF 7F 35 00 46 00 08 75 10 95 02 81 02 05 0D 09 30 26 FF 1F 75 10 95 01 81 02 09 3D 09 3E 15 81 25 7F 75 08 95 02 81 02 C0 C0 
  mesg = 22000681
  got report descriptor
Found top level collection D0002
find_driver
  driver 1FFF7520
HIDDumpController Claim: 256c:6d usage: d0002 - NO (Usage: 1fffad28)
  driver 1FFF85E0
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:
 
That is a strange one!

Yep. Hacked up the wacom lib a bit and did manage to get one packet before it stop:
Code:
HPID(16): 0A C0 FF 7F 99 49 00 00 00 00 00 00 00 00 00 00
begin, usage=D0000
       type= 2
       min=  0
       max=  1
       reportcount=6
       usage count=4
$HIB:d0000 type:2 min:0 max:1
Setup to send different report
>>> SendControlPacket: 21 9 302 0 2 return: 1
Input, total bits=6
  usage = D0042  data = 0
Digitizer: &usage=42(in:D0042), usage_page=d, value=0(0)
  usage = D0044  data = 0
Digitizer: &usage=44(in:D0044), usage_page=d, value=0(0)
  usage = D0045  data = 0
Digitizer: &usage=45(in:D0045), usage_page=d, value=0(0)
>>Not Processed usage:45 page:d value:0
  usage = D003C  data = 0
Digitizer: &usage=3C(in:D003C), usage_page=d, value=0(0)
>>Not Processed usage:3C page:d value:0
  usage = D0000  data = 0
Digitizer: &usage=0(in:D0000), usage_page=d, value=0(0)
>>Not Processed usage:0 page:d value:0
  usage = D0000  data = 0
Digitizer: &usage=0(in:D0000), usage_page=d, value=0(0)
>>Not Processed usage:0 page:d value:0
begin, usage=D0000
       type= 2
       min=  0
       max=  1
       reportcount=1
       usage count=1
$HIB:d0000 type:2 min:0 max:1
Input, total bits=1
  usage = D0032  data = 1
Digitizer: &usage=32(in:D0032), usage_page=d, value=1(1)
begin, usage=D0000
       type= 2
       min=  0
       max=  32767
       reportcount=2
       usage count=2
$HIB:d0000 type:2 min:0 max:32767
Input, total bits=32
  usage = 10030  data = 32767
Digitizer: &usage=30(in:10030), usage_page=1, value=32767(7fff)
  usage = 10031  data = 18841
Digitizer: &usage=31(in:10031), usage_page=1, value=18841(4999)
begin, usage=D0000
       type= 2
       min=  0
       max=  8191
       reportcount=1
       usage count=1
$HIB:d0000 type:2 min:0 max:8191
Input, total bits=16
  usage = D0030  data = 0
Digitizer: &usage=30(in:D0030), usage_page=d, value=0(0)
begin, usage=D0000
       type= 2
       min=  -127
       max=  127
       reportcount=2
       usage count=2
$HIB:d0000 type:2 min:-127 max:127
Input, total bits=16
  usage = D003D  sdata = 0
Digitizer: &usage=3D(in:D003D), usage_page=d, value=0(0)
>>Not Processed usage:3D page:d value:0
  usage = D003E  sdata = 0
Digitizer: &usage=3E(in:D003E), usage_page=d, value=0(0)
>>Not Processed usage:3E page:d value:0
$HIE
Digitizer: buttons = 0,  X = 32767, Y = 18841,  Pressure: = ,  wheel = 0,  wheelH = 0
 0#0(0) 1#1(1) 2#0(0) 3#0(0) 4#0(0) 5#0(0) 6#0(0) 7#0(0) 8#0(0) 9#0(0) 10#0(0) 11#0(0) 12#0(0) 13#0(0) 14#0(0) 15#0(0)
 
and after hacking the digitizer sketch
Code:
begin, usage=D0000
       type= 2
       min=  0
       max=  1
       reportcount=6
       usage count=4
Input, total bits=6
  usage = D0042  data = 0
Digitizer: usage=D0042, value=0
Digitizer: &usage=42, usage_page=d
  usage = D0044  data = 0
Digitizer: usage=D0044, value=0
Digitizer: &usage=44, usage_page=d
  usage = D0045  data = 0
Digitizer: usage=D0045, value=0
Digitizer: &usage=45, usage_page=d
  usage = D003C  data = 0
Digitizer: usage=D003C, value=0
Digitizer: &usage=3C, usage_page=d
  usage = D0000  data = 0
Digitizer: usage=D0000, value=0
Digitizer: &usage=0, usage_page=d
  usage = D0000  data = 0
Digitizer: usage=D0000, value=0
Digitizer: &usage=0, usage_page=d
begin, usage=D0000
       type= 2
       min=  0
       max=  1
       reportcount=1
       usage count=1
Input, total bits=1
  usage = D0032  data = 0
Digitizer: usage=D0032, value=0
Digitizer: &usage=32, usage_page=d
begin, usage=D0000
       type= 2
       min=  0
       max=  32767
       reportcount=2
       usage count=2
Input, total bits=32
  usage = 10030  data = 32767
Digitizer: usage=10030, value=32767
Digitizer: &usage=30, usage_page=1
  usage = 10031  data = 11612
Digitizer: usage=10031, value=11612
Digitizer: &usage=31, usage_page=1
begin, usage=D0000
       type= 2
       min=  0
       max=  8191
       reportcount=1
       usage count=1
Input, total bits=16
  usage = D0030  data = 0
Digitizer: usage=D0030, value=0
Digitizer: &usage=30, usage_page=d
begin, usage=D0000
       type= 2
       min=  -127
       max=  127
       reportcount=2
       usage count=2
Input, total bits=16
  usage = D003D  sdata = 0
Digitizer: usage=D003D, value=0
Digitizer: &usage=3D, usage_page=d
  usage = D003E  sdata = 0
Digitizer: usage=D003E, value=0
Digitizer: &usage=3E, usage_page=d
Mouse: buttons = 0,  mouseX = 0,  mouseY = 0,  wheel = 0,  wheelH = 0
 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0
 
@mjs513 - Did you ever get any clues on why the USB Descriptor including PID/VID is different on the T4.x boards
versus T3.6 as well as Windows, Ubuntu including RPI?

As far as I know we are just reporting what the Device descriptor is saying:
Code:
Device Descriptor:
  12 01 10 01 00 00 00 40 16 04 00 3F 00 00 01 02 00 01 
    VendorID = 0416, ProductID = 3F00, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:

With the T3.6 dump did it actually report as two different devices?
Code:
Device Descriptor:
  12 01 10 01 00 00 00 40 16 04 00 3F 00 00 01 02 00 01 
    VendorID = 0416, ProductID = 3F00, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:

and:
Code:
enumeration:
Device Descriptor:
  12 01 10 01 00 00 00 08 6C 25 6D 00 00 00 05 06 00 01 
    VendorID = 256C, ProductID = 006D, Version = 0000
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
ERROR Followup
    remove from followup list
    remove from followup list
    stray halted 1FFFAAC0
  qtd: 1FFFAAC0, token=80008080, next=1FFFAB40

Maybe something we are not handling? Like Composit Device?

I think that is beyond my pay grade...

Paul?
 
@KurtE

For the heck of it I just ran your updated HIDDeviceInfo on a T4.1 just in case:
Code:
****************************************
** Device Level **
  vid=416
  pid=3F00
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 

USBDeviceInfo claim this=2000CAD4

****************************************
** Device Level **
  vid=416
  pid=3F00
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 

USBDeviceInfo claim this=2000CAC8

****************************************
** Interface Level **
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
 bInterfaceNumber = 0
 number end points = 2
 bInterfaceClass =    3
 bInterfaceSubClass = 0
    HID
 bInterfaceProtocol = 0
report descriptor size = 27
  endpoint = 81
    attributes = 3 Interrupt
    size = 64
    interval = 1
  endpoint = 2
    attributes = 3 Interrupt
    size = 64
    interval = 1

USBDeviceInfo claim this=2000CAD4

****************************************
** Interface Level **
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
 bInterfaceNumber = 0
 number end points = 2
 bInterfaceClass =    3
 bInterfaceSubClass = 0
    HID
 bInterfaceProtocol = 0
report descriptor size = 27
  endpoint = 81
    attributes = 3 Interrupt
    size = 64
    interval = 1
  endpoint = 2
    attributes = 3 Interrupt
    size = 64
    interval = 1
*** Device HID1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
HIDDumpController Claim: 416:3f00 usage: 10000 - Yes

HID Report Descriptor (0x200095d0) size: 27
  05 01	// Usage Page(1) - Generic Desktop
  09 00	// Usage(0) -(?)
  A1 01	// Collection(1) top Usage(10000)
    15 00	// Logical Minimum(0)
    25 FF	// Logical maximum(ff)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    95 40	// Report Count(40)
    75 08	// Report Size(8)
    81 02	// Input(2)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    91 02	// Output(2)
    C0	// End Collection
*** HID Device hdc1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
*** Device HID1 - disconnected ***
*** HID Device hdc1 - disconnected ***
and it shows that it picks up the WPM USB device and does finish setting up the Device itself.

On the T3.6 and in Windows and Linux it first picks up the WPM USB and then disconnects it but then continues to pick up the Device itself:
Code:
****************************************
** Device Level **
  vid=416
  pid=3F00
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 

USBDeviceInfo claim this=1FFF6448

****************************************
** Device Level **
  vid=416
  pid=3F00
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 

USBDeviceInfo claim this=1FFF55E8

****************************************
** Interface Level **
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
 bInterfaceNumber = 0
 number end points = 2
 bInterfaceClass =    3
 bInterfaceSubClass = 0
    HID
 bInterfaceProtocol = 0
report descriptor size = 27
  endpoint = 81
    attributes = 3 Interrupt
    size = 64
    interval = 1
  endpoint = 2
    attributes = 3 Interrupt
    size = 64
    interval = 1

USBDeviceInfo claim this=1FFF6448

****************************************
** Interface Level **
09 04 00 00 02 03 00 00 00 09 21 10 01 00 01 22 1B 00 07 05 81 03 40 00 01 07 05 02 03 40 00 01 
 bInterfaceNumber = 0
 number end points = 2
 bInterfaceClass =    3
 bInterfaceSubClass = 0
    HID
 bInterfaceProtocol = 0
report descriptor size = 27
  endpoint = 81
    attributes = 3 Interrupt
    size = 64
    interval = 1
  endpoint = 2
    attributes = 3 Interrupt
    size = 64
    interval = 1
*** Device HID1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
HIDDumpController Claim: 416:3f00 usage: 10000 - Yes

HID Report Descriptor (0x1fff4890) size: 27
  05 01	// Usage Page(1) - Generic Desktop
  09 00	// Usage(0) -(?)
  A1 01	// Collection(1) top Usage(10000)
    15 00	// Logical Minimum(0)
    25 FF	// Logical maximum(ff)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    95 40	// Report Count(40)
    75 08	// Report Size(8)
    81 02	// Input(2)
    19 00	// Usage Minimum(0) - (?)
    29 FF	// Usage Maximum(ff) - (?)
    91 02	// Output(2)
    C0	// End Collection
*** HID Device hdc1 416: 3f00 - connected ***
  manufacturer: Nuvoton
  product: WPM USB
*** Device HID1 - disconnected ***
*** HID Device hdc1 - disconnected ***

USBDeviceInfo claim this=1FFF55E8

****************************************
** Device Level **
  vid=256C
  pid=6D
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 01 03 01 02 00 09 21 11 01 00 01 22 12 00 07 05 81 03 40 00 02 09 04 01 00 01 03 01
02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 

USBDeviceInfo claim this=1FFF6448

****************************************
** Device Level **
  vid=256C
  pid=6D
  bDeviceClass = 0
  bDeviceSubClass = 0
  bDeviceProtocol = 0
09 04 00 00 01 03 01 02 00 09 21 11 01 00 01 22 12 00 07 05 81 03 40 00 02 09 04 01 00 01 03 01
02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 

USBDeviceInfo claim this=1FFF55E8

****************************************
** Interface Level **
09 04 01 00 01 03 01 02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
 bInterfaceNumber = 1
 number end points = 1
 bInterfaceClass =    3
 bInterfaceSubClass = 1
    HID (BOOT)
 bInterfaceProtocol = 2
report descriptor size = 93
  endpoint = 82
    attributes = 3 Interrupt
    size = 16
    interval = 2

USBDeviceInfo claim this=1FFF6448

****************************************
** Interface Level **
09 04 01 00 01 03 01 02 00 09 21 11 01 00 01 22 5D 00 07 05 82 03 10 00 02 
 bInterfaceNumber = 1
 number end points = 1
 bInterfaceClass =    3
 bInterfaceSubClass = 1
    HID (BOOT)
 bInterfaceProtocol = 2
report descriptor size = 93
  endpoint = 82
    attributes = 3 Interrupt
    size = 16
    interval = 2
*** Device HID1 256c: 6d - connected ***
  manufacturer: 	
  product: 	
*** Device HID2 256c: 6d - connected ***
  manufacturer: 	
  product: 	
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
*** 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:
showing it claiming 2 devices. But that is leading to another issue that probably should post on the other thread :)
 
@mjs513 - Any luck yet on this one running on T4.x?

At this point not sure what else to try with this one. I did purchase the other version of their tablet and it is not showing the same issue.

One interesting thing is, that mine actually shows the same VID/PID on the Teensy as yours does on everything BUT the T4.x.

Would be interesting to see what the USB actually is doing with this device on the different platforms.
The best way would be to use something like the Beagle 480 (or 12 would work in this case), but I don't have one.

The WireShark info, might also work, I should probably spend some more time trying to understand their output.

I am too used to now using the Saleae Logic output (with my own edited analyzers). They aren't perfect but at least it is working pretty well to cut down
the 100s of thousands of lines of output (maybe more) down to a few hundred.
But the hard part is setting up a way to capture.

For PC to devices, I have a hacked-up hub that is easy to clip the clips to. Before this, I would use, a small USB extension cable, where I stripped off some of the wire insulation to the point, I could again use the clips
to the LA... Yes PIA!

But for now, maybe we should just leave this one, as another unexplained oddity.
 
@KurtE

No luck in getting the T4.x to recognize the tablet. Did try forcing 12Mbit/sec but still hung after finding the WPM USB device.... Again I did try using USBHost Shield 2 just to see if would recognize the tablet and it does but did have some problems but eventually did recognize it.

So far anything else I have hooked up the tablet to has worked.

So agreed - right now its just another issue with USBHost.
 
Back
Top