Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 10 of 10

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

  1. #1
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405

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

    While playing with the new WACOM Library (https://forum.pjrc.com/threads/70824...-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
    Vendor  ID:		256C
    Product ID:		006D
    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
    Vendor  ID:		0416
    Product ID:		3F00
    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 by mjs513; 08-31-2022 at 01:42 PM.

  2. #2
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    If I attach the tablet to a RPI4 and run LSUSB -V it does pick it up.

    Code:
    Bus 001 Device 004: ID 256c:006d  
    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

  3. #3
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    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
    *** HID Device hdc1 416: 3f00 - connected ***
      manufacturer: Nuvoton
      product: WPM USB
    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:
    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
      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:

  4. #4
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,949
    That is a strange one!

  5. #5
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    Quote Originally Posted by KurtE View Post
    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)

  6. #6
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    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

  7. #7
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,949
    @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?

  8. #8
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    @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

  9. #9
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,949
    @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.

  10. #10
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    8,405
    @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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •