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

Thread: Does Serial + Midi ≠ Class Compliant?

  1. #1

    Does Serial + Midi ≠ Class Compliant?

    I'm using Teensy 3.2 in a midi controller that also has an LCD screen for serial communication coming from Max for Live. When I program the board, I need to use "USB Type: Serial + Midi" (or one of the Serial + Midi options). I still see my midi controller in Ableton, etc, but it doesn't show up as a midi device when cooperating with iConnectivity PlayAudio12's unique input. The folks at iConnectivity say it's because it's not a class-compliant device but I'm not sure that's true.

    For what it's worth, I can program the same device without Serial functionality and it's recognized by the PlayAudio12.

    So, my question is, does programming with a Serial + Midi USB type affect class compliance? Is there an obvious explanation I'm missing? Thanks!

  2. #2
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,295
    https://forum.pjrc.com/threads/42546...-RawHID-Device

    Maybe the iConnect can't accept multiple protocol on the same device.

  3. #3
    Thanks for the link to that post. Perhaps you're right about those devices accepting multiple protocols.

  4. #4
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    55
    I'm using an iConnectivity MIO-10 and have run into the same issue with it's USB host not recognizing Teensy multi-cable USB Midi.

    The MIO-10 ordinarily recognizes multi-cable class compliant USB-Midi devices eg. it sees both Midi ports of an Arturia Beatstep Pro.
    The MIO-10 recognizes Teensy Midi but unfortunately not Teensy Midi x 4 or 16.

    The same issue is referred to here:-

    https://forum.pjrc.com/threads/53371...l=1#post184800

  5. #5
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    21,316
    I'm pretty sure Teensy's USB MIDI implementation is class compliant. I wrote the code using the USBIF's "USB Device Class Definition for MIDI Devices" document, version 1.0 from Nov 1, 1999, and also the Audio class spec, version 1.0. If you look at the descriptors in usb_desc.c, you'll see I put comments with the page numbers in that spec where each piece of the descriptor data is defined.

    My guess is these products have limited (or "lame") USB host implementations which only recognize a subset of what the MIDI & audio class allow. Those documents do have a pretty huge number of features, specially the MIDI "jacks" in the descriptors.

    If anyone has a multiple cable/port USB MIDI device which does work with those products, maybe we could capture its descriptors to see an example of what those hosts will recognize?

  6. #6
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    55
    If anyone has a multiple cable/port USB MIDI device which does work with those products, maybe we could capture its descriptors to see an example of what those hosts will recognize?
    Is there a way of doing that without a USB Protocol Analyser?

  7. #7
    Senior Member
    Join Date
    Oct 2012
    Location
    Portland OR
    Posts
    678
    The most convincing way to decide would be if there was an industry-accepted "class compliance test suite" that could test a device or host for every officially defined feature, and say yes or no. I recall that existed for some kinds of standards, but not sure about USB MIDI.

  8. #8
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Hi guys,
    any news on this issue? I just got the new iConnectivity MIO-XL and it has the same issue: the teensy is not recognized in MIDIx4 mode, only in MIDI mode (single port).
    My Yamaha ModX keyboard works fine (3 ports recognized). Is there any way I can help fix this? I know some C, but no USB protocol stuff, nor do I have an analyzer.
    Best, Boris
    Last edited by bolau; 01-27-2020 at 01:41 AM.

  9. #9
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    21,316
    First, Teensy's MIDIx4 definitely is class compliant. But 4 ports is pretty far from the most common case. Not all products that claim to support MIDI devices fully support the many ways things can be configured by the MIDI class spec. So it's a matter of guesswork what subset of the class spec your iConnectivity MIO-XL really supports (manufacturers almost never publish such tech details).

    Quote Originally Posted by bolau View Post
    Is there any way I can help fix this?
    Yes, or at least maybe.

    The first step is to capture the USB descriptors for your Yamaha ModX keyboard and post that info here. How exactly you do that depends on your OS. On Linux, the command is "lsusb -v" (lists all devices... trim away all the hubs and other stuff). Mac has a program called "USB Prober", which I believe is included with one of Apple's dev tools downloads. It used to be in X-Code. I don't use Windows much, but if that's your only system, hopefully someone familiar with Windows can chime in with advice about how to do this.

    Once we can see all of that keyboard's descriptor data, maybe something will be apparent about how it's different than the descriptors we currently use for Teensy's MIDIx4.

  10. #10
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Hi Paul,
    thanks for getting back so quickly. I think you're right, I believe that the company is referring to this on one of their support pages (https://iconnectivity.supportbee.io/...di-host-port):

    Note that the iConnectivity USB-MIDI Host port is designed so that it can operate as a MIDI interface even without having a computer connected. However that means it can only pass MIDI information - you cannot use it as a normal USB port, or pass audio data via it. It is purely a MIDI connection only.

    As a consequence of this some controller devices that have extra functionality which requires a direct connection to a computer may not work fully or work at all via our USB-MIDI Host Port. This particularly applies to "smart" hybrid controller+software devices such as those from Native Instruments.
    Is there a way to turn the Teensy 3.6 into a USB-MIDI-Only device and disable the "extra functionality" without bricking it? I'll get back to you with the USB log.

  11. #11
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    21,316
    Quote Originally Posted by bolau View Post
    Is there a way to turn the Teensy 3.6 into a USB-MIDI-Only device and disable the "extra functionality"
    Didn't you just say using Tools > USB Type set to MIDI (single port, without other stuff) works fine?

    But to answer your question, yes, there is a way. That way involves editing usb_desc.h. Read the comments in that file for some guidance. Generally it's easier to remove stuff, but there are many small details you have to get precisely correct, like if you delete an interface you must adjust the define for the number of interfaces.

    Mistakes won't brick your Teensy, but almost all mistake will break the automatic reboot. Arduino can't ask your Teensy to go into programming mode if its USB communication isn't working (or is working in a substantially different config than the software knows). So be mentally prepared to have to press the pushbutton on your Teensy to get a new program to upload. We put that button on every Teensy for exactly this reason, so you have a way to recover after uploading a program which doesn't do USB communication properly.

  12. #12
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Didn't you just say using Tools > USB Type set to MIDI (without other stuff) works fine?
    It does, but I need the multiport (MIDIx4) functionality for my project.

    Alright, I'll look into the file, thanks!

  13. #13
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Alright, here's the lsusb -v from the Yamaha MODX. It's substantially longer than the one of the Teensy USB-MIDIx4, probably because it also has USB-Audio capabilities besides the 3 USB-Midi Ports. Which is interesting, since this is an example of a device that's not MIDI-only and still works like a charm on the MIO-XL:

    Code:
    Bus 001 Device 006: ID 0499:172a Yamaha Corp. 
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 ?
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x0499 Yamaha Corp.
      idProduct          0x172a 
      bcdDevice            1.00
      iManufacturer           1 
      iProduct                2 
      iSerial                 0 
      bNumConfigurations      2
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          349
        bNumInterfaces          4
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower                2mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         4
          bFunctionClass          1 Audio
          bFunctionSubClass       0 
          bFunctionProtocol      32 
          iFunction               0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass         1 Audio
          bInterfaceSubClass      1 Control Device
          bInterfaceProtocol     32 
          iInterface              0 
          AudioControl Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdADC               2.00
            bCategory               8
            wTotalLength           75
            bmControl            0x00
          AudioControl Interface Descriptor:
            bLength                 8
            bDescriptorType        36
            bDescriptorSubtype     10 (CLOCK_SOURCE)
            bClockID                1
            bmAttributes         0x03 Internal programmable Clock 
            bmControls           0x03
              Clock Frequency Control (read/write)
            bAssocTerminal          0
            iClockSource            0 
          AudioControl Interface Descriptor:
            bLength                17
            bDescriptorType        36
            bDescriptorSubtype      2 (INPUT_TERMINAL)
            bTerminalID             2
            wTerminalType      0x0101 USB Streaming
            bAssocTerminal          0
            bCSourceID              1
            bNrChannels             4
            bmChannelConfig   0x00000000
            bmControls    0x0000
            iChannelNames          16 
            iTerminal               0 
          AudioControl Interface Descriptor:
            bLength                12
            bDescriptorType        36
            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
            bTerminalID             3
            wTerminalType      0x0603 Line Connector
            bAssocTerminal          0
            bSourceID               2
            bCSourceID              1
            bmControls         0x0000
            iTerminal               0 
          AudioControl Interface Descriptor:
            bLength                17
            bDescriptorType        36
            bDescriptorSubtype      2 (INPUT_TERMINAL)
            bTerminalID             4
            wTerminalType      0x0603 Line Connector
            bAssocTerminal          0
            bCSourceID              1
            bNrChannels            10
            bmChannelConfig   0x00000000
            bmControls    0x0000
            iChannelNames          48 
            iTerminal               0 
          AudioControl Interface Descriptor:
            bLength                12
            bDescriptorType        36
            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
            bTerminalID             5
            wTerminalType      0x0101 USB Streaming
            bAssocTerminal          0
            bSourceID               4
            bCSourceID              1
            bmControls         0x0000
            iTerminal               0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol     32 
          iInterface              0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol     32 
          iInterface              0 
          AudioStreaming Interface Descriptor:
            bLength                16
            bDescriptorType        36
            bDescriptorSubtype      1 (AS_GENERAL)
            bTerminalLink           2
            bmControls           0x00
            bFormatType             1
            bmFormats         0x00000001
              PCM
            bNrChannels             4
            bmChannelConfig   0x00000000
            iChannelNames          16 
          AudioStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (FORMAT_TYPE)
            bFormatType             1 (FORMAT_TYPE_I)
            bSubslotSize            3
            bBitResolution         24
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x07  EP 7 OUT
            bmAttributes            5
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Data
            wMaxPacketSize     0x004e  1x 78 bytes
            bInterval               1
            AudioControl Endpoint Descriptor:
              bLength                 8
              bDescriptorType        37
              bDescriptorSubtype      1 (EP_GENERAL)
              bmAttributes         0x00
              bmControls           0x00
              bLockDelayUnits         0 Undefined
              wLockDelay              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol     32 
          iInterface              0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol     32 
          iInterface              0 
          AudioStreaming Interface Descriptor:
            bLength                16
            bDescriptorType        36
            bDescriptorSubtype      1 (AS_GENERAL)
            bTerminalLink           5
            bmControls           0x00
            bFormatType             1
            bmFormats         0x00000001
              PCM
            bNrChannels            10
            bmChannelConfig   0x00000000
            iChannelNames          48 
          AudioStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (FORMAT_TYPE)
            bFormatType             1 (FORMAT_TYPE_I)
            bSubslotSize            3
            bBitResolution         24
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes           37
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Implicit feedback Data
            wMaxPacketSize     0x00c3  1x 195 bytes
            bInterval               1
            AudioControl Endpoint Descriptor:
              bLength                 8
              bDescriptorType        37
              bDescriptorSubtype      1 (EP_GENERAL)
              bmAttributes         0x00
              bmControls           0x00
              bLockDelayUnits         0 Undefined
              wLockDelay              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         1 Audio
          bInterfaceSubClass      3 MIDI Streaming
          bInterfaceProtocol      0 
          iInterface              0 
          MIDIStreaming Interface Descriptor:
            bLength                 7
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdADC               1.00
            wTotalLength          129
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                 1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                 2
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                 3
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                33
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                34
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                35
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                65
            bNrInputPins            1
            baSourceID( 0)         33
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                66
            bNrInputPins            1
            baSourceID( 0)         34
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                67
            bNrInputPins            1
            baSourceID( 0)         35
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                97
            bNrInputPins            1
            baSourceID( 0)          1
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                98
            bNrInputPins            1
            baSourceID( 0)          2
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                99
            bNrInputPins            1
            baSourceID( 0)          3
            BaSourcePin( 0)         1
            iJack                   0 
          Endpoint Descriptor:
            bLength                 9
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
            bRefresh                0
            bSynchAddress           0
            MIDIStreaming Endpoint Descriptor:
              bLength                 7
              bDescriptorType        37
              bDescriptorSubtype      1 (GENERAL)
              bNumEmbMIDIJack         3
              baAssocJackID( 0)      33
              baAssocJackID( 1)      34
              baAssocJackID( 2)      35
          Endpoint Descriptor:
            bLength                 9
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
            bRefresh                0
            bSynchAddress           0
            MIDIStreaming Endpoint Descriptor:
              bLength                 7
              bDescriptorType        37
              bDescriptorSubtype      1 (GENERAL)
              bNumEmbMIDIJack         3
              baAssocJackID( 0)      97
              baAssocJackID( 1)      98
              baAssocJackID( 2)      99
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          290
        bNumInterfaces          5
        bConfigurationValue     2
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower                2mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      1 
          bInterfaceProtocol      0 
          iInterface              0 
          ** UNRECOGNIZED:  0a 24 01 00 01 34 00 02 01 02
          ** UNRECOGNIZED:  0c 24 02 01 01 01 00 02 03 00 00 00
          ** UNRECOGNIZED:  09 24 03 02 01 03 00 01 00
          ** UNRECOGNIZED:  0c 24 02 03 03 06 00 02 03 00 00 00
          ** UNRECOGNIZED:  09 24 03 04 01 01 00 03 00
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      2 
          bInterfaceProtocol      0 
          iInterface              0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      2 
          bInterfaceProtocol      0 
          iInterface              0 
          ** UNRECOGNIZED:  07 24 01 01 01 01 00
          ** UNRECOGNIZED:  0b 24 02 01 04 03 18 01 44 ac 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x07  EP 7 OUT
            bmAttributes            5
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Data
            wMaxPacketSize     0x004e  1x 78 bytes
            bInterval               1
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      2 
          bInterfaceProtocol      0 
          iInterface              0 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      2 
          bInterfaceProtocol      0 
          iInterface              0 
          ** UNRECOGNIZED:  07 24 01 04 01 01 00
          ** UNRECOGNIZED:  0b 24 02 01 0a 03 18 01 44 ac 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            5
              Transfer Type            Isochronous
              Synch Type               Asynchronous
              Usage Type               Data
            wMaxPacketSize     0x00c3  1x 195 bytes
            bInterval               1
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      3 
          bInterfaceProtocol    255 
          iInterface              0 
          ** UNRECOGNIZED:  07 24 01 00 01 42 00
          ** UNRECOGNIZED:  06 24 02 02 01 00
          ** UNRECOGNIZED:  06 24 02 02 02 00
          ** UNRECOGNIZED:  06 24 02 02 03 00
          ** UNRECOGNIZED:  09 24 03 02 01 01 01 01 00
          ** UNRECOGNIZED:  09 24 03 02 02 01 01 01 00
          ** UNRECOGNIZED:  09 24 03 02 03 01 01 01 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol    255 Vendor Specific Protocol
          iInterface              0 
          ** UNRECOGNIZED:  07 24 01 00 01 24 00
          ** UNRECOGNIZED:  06 24 02 02 01 00
          ** UNRECOGNIZED:  09 24 03 02 01 01 01 01 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0

  14. #14
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Here are some new insights:

    I have edited usb_desc.h and commented out the line 382, which adds the SEREMU_INTERFACE to the USB_MIDI4 definition:

    Code:
    #elif defined(USB_MIDI4)
    ...
        #define NUM_INTERFACE		1  // <-- also tried the previous value 2 here
        //#define SEREMU_INTERFACE      1   // <-- this here
    For the code to compile, I also had to comment out line 41 in yield.cpp, maybe it needs an #ifdef?

    Code:
    void yield(void)
    {
        static uint8_t running=0;
    
        if (running) return; // TODO: does this need to be atomic?
        running = 1;
        //if (Serial.available()) serialEvent();  // <-- this here
        if (Serial1.available()) serialEvent1();
        if (Serial2.available()) serialEvent2();
        if (Serial3.available()) serialEvent3();
    ...
    I used `lsusb -v` to confirm that the related interface descriptor disappears. It does, and only the MIDI Streaming interface descriptor remains.
    However, the iConnectivity MIO-XL MIDI interface still does not recognize the teensy in MIDIx4 mode (my Mac is still happy with it)

    As a test, I also removed the SEREMU_INTERFACE from the single-port MIDI case just to make sure this doesn't break it. It doesn't, the MIO-XL still detects the "stripped" Teensy in single-port MIDI mode, but not in MIDIx4 mode.

    So unless my changes made the descriptor somehow invalid, I would assume that the "hybrid deviceness" of the Teensy is not the problem here!

    Do you have any alternative approaches I could take?
    Best, Boris

  15. #15
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    One step forward:

    While trying to bring the USB setup of the Teensy MIDIx4 closer to my Yamaha MODX, I switched MIDI_NUM_CABLES from 4 to 3 in line 390 of usb_desc.h. This helped, the MIO-XL detects the teensy and shows all three ports. Even with the other USB protocol used for programming the Teensy. In theory, the MIO-XL should be able to handle devices with 16 ports - at least the iConnectivity support send me a screenshot with one of their own devices plugged into the MIO-XL, and all 16 ports show up. I don't know why, but NUM_CABLES 4 or 16 doesn't work with the MIO-XL in MIDIx4 or MIDIx16 mode.

    Unfortunately, while the Teensy receives notes sent by the MIO-XL, it doesn't work the other around, i.e., the MIO-XL doesn't receive any MIDI notes sent by the Teensy on any port in "MIDIx3". Do I need to adapt more settings?

  16. #16
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    Another small step forward: While reducing NUM_CABLES to 3 caused the MIO-XL to detect the Teensy and send MIDI data from MIO-XL to the Teensy (but not vice versa), reducing NUM_CABLES even to 2 gives me bi-directional traffic! Very nice. But how could I increase the NUM_CABLES without loosing the connection? Sorry, I'm stumbling around in the dark here...

  17. #17
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    55
    I gave up stumbling around in the dark and sidestepped the Teensy Midi - MIO-10 issue for now with another rackmount Midi interface.

    In relation to the iConnectivity MIO-10 Midi interface, I read somewhere that a user can plug other iConnectivity devices into it's Usb host port. Perhaps it would help Paul if he could see the Usb descriptor details for the MIO-XL.

    I'm suggesting this based on a hunch that if iConnectivity devices work via a PC Usb host or a Usb host port of some other iConnectivity Usb-Midi device then the Usb descriptor details of the MIO-XL or a MIO-10 might be a good place to start.

    If someone would kindly give a mere-mortal like me a heads up as how to sniff out Usb descriptor stuff using Win 7, I'd gladly post same wrt MIO-10, Arturia Beatstep Pro, Behringer BCR-2000 and DSI Mopho if at all helpful. I've got Wireshark up and running but have not got past UI headscratching yet.

  18. #18
    Junior Member
    Join Date
    Jan 2020
    Location
    Freiburg, Germany
    Posts
    14
    There we go, this is "lsusb -v" for the MIO-XL:
    Code:
    Bus 001 Device 005: ID 2321:0026  
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x2321 
      idProduct          0x0026 
      bcdDevice            1.00
      iManufacturer           1 
      iProduct                2 
      iSerial                 3 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          581
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower                0mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass         1 Audio
          bInterfaceSubClass      1 Control Device
          bInterfaceProtocol      0 
          iInterface              0 
          AudioControl Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdADC               1.00
            wTotalLength            9
            bInCollection           1
            baInterfaceNr( 0)       1
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         1 Audio
          bInterfaceSubClass      3 MIDI Streaming
          bInterfaceProtocol      0 
          iInterface              0 
          MIDIStreaming Interface Descriptor:
            bLength                 7
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdADC               1.00
            wTotalLength          545
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                16
            iJack                  16 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                17
            iJack                  17 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                18
            iJack                  18 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                19
            iJack                  19 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                20
            iJack                  20 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                21
            iJack                  21 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                22
            iJack                  22 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                23
            iJack                  23 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                24
            iJack                  24 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                25
            iJack                  25 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                26
            iJack                  26 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                27
            iJack                  27 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                28
            iJack                  28 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                29
            iJack                  29 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                30
            iJack                  30 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               1 Embedded
            bJackID                31
            iJack                  31 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                32
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                33
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                34
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                35
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                36
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                37
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                38
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                39
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                40
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                41
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                42
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                43
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                44
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                45
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                46
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 6
            bDescriptorType        36
            bDescriptorSubtype      2 (MIDI_IN_JACK)
            bJackType               2 External
            bJackID                47
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                64
            bNrInputPins            1
            baSourceID( 0)         32
            BaSourcePin( 0)         1
            iJack                  16 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                65
            bNrInputPins            1
            baSourceID( 0)         33
            BaSourcePin( 0)         1
            iJack                  17 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                66
            bNrInputPins            1
            baSourceID( 0)         34
            BaSourcePin( 0)         1
            iJack                  18 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                67
            bNrInputPins            1
            baSourceID( 0)         35
            BaSourcePin( 0)         1
            iJack                  19 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                68
            bNrInputPins            1
            baSourceID( 0)         36
            BaSourcePin( 0)         1
            iJack                  20 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                69
            bNrInputPins            1
            baSourceID( 0)         37
            BaSourcePin( 0)         1
            iJack                  21 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                70
            bNrInputPins            1
            baSourceID( 0)         38
            BaSourcePin( 0)         1
            iJack                  22 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                71
            bNrInputPins            1
            baSourceID( 0)         39
            BaSourcePin( 0)         1
            iJack                  23 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                72
            bNrInputPins            1
            baSourceID( 0)         40
            BaSourcePin( 0)         1
            iJack                  24 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                73
            bNrInputPins            1
            baSourceID( 0)         41
            BaSourcePin( 0)         1
            iJack                  25 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                74
            bNrInputPins            1
            baSourceID( 0)         42
            BaSourcePin( 0)         1
            iJack                  26 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                75
            bNrInputPins            1
            baSourceID( 0)         43
            BaSourcePin( 0)         1
            iJack                  27 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                76
            bNrInputPins            1
            baSourceID( 0)         44
            BaSourcePin( 0)         1
            iJack                  28 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                77
            bNrInputPins            1
            baSourceID( 0)         45
            BaSourcePin( 0)         1
            iJack                  29 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                78
            bNrInputPins            1
            baSourceID( 0)         46
            BaSourcePin( 0)         1
            iJack                  30 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               1 Embedded
            bJackID                79
            bNrInputPins            1
            baSourceID( 0)         47
            BaSourcePin( 0)         1
            iJack                  31 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                48
            bNrInputPins            1
            baSourceID( 0)         16
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                49
            bNrInputPins            1
            baSourceID( 0)         17
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                50
            bNrInputPins            1
            baSourceID( 0)         18
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                51
            bNrInputPins            1
            baSourceID( 0)         19
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                52
            bNrInputPins            1
            baSourceID( 0)         20
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                53
            bNrInputPins            1
            baSourceID( 0)         21
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                54
            bNrInputPins            1
            baSourceID( 0)         22
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                55
            bNrInputPins            1
            baSourceID( 0)         23
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                56
            bNrInputPins            1
            baSourceID( 0)         24
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                57
            bNrInputPins            1
            baSourceID( 0)         25
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                58
            bNrInputPins            1
            baSourceID( 0)         26
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                59
            bNrInputPins            1
            baSourceID( 0)         27
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                60
            bNrInputPins            1
            baSourceID( 0)         28
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                61
            bNrInputPins            1
            baSourceID( 0)         29
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                62
            bNrInputPins            1
            baSourceID( 0)         30
            BaSourcePin( 0)         1
            iJack                   0 
          MIDIStreaming Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (MIDI_OUT_JACK)
            bJackType               2 External
            bJackID                63
            bNrInputPins            1
            baSourceID( 0)         31
            BaSourcePin( 0)         1
            iJack                   0 
          Endpoint Descriptor:
            bLength                 9
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
            bRefresh                0
            bSynchAddress           0
            MIDIStreaming Endpoint Descriptor:
              bLength                20
              bDescriptorType        37
              bDescriptorSubtype      1 (GENERAL)
              bNumEmbMIDIJack        16
              baAssocJackID( 0)      64
              baAssocJackID( 1)      65
              baAssocJackID( 2)      66
              baAssocJackID( 3)      67
              baAssocJackID( 4)      68
              baAssocJackID( 5)      69
              baAssocJackID( 6)      70
              baAssocJackID( 7)      71
              baAssocJackID( 8)      72
              baAssocJackID( 9)      73
              baAssocJackID(10)      74
              baAssocJackID(11)      75
              baAssocJackID(12)      76
              baAssocJackID(13)      77
              baAssocJackID(14)      78
              baAssocJackID(15)      79
          Endpoint Descriptor:
            bLength                 9
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
            bRefresh                0
            bSynchAddress           0
            MIDIStreaming Endpoint Descriptor:
              bLength                20
              bDescriptorType        37
              bDescriptorSubtype      1 (GENERAL)
              bNumEmbMIDIJack        16
              baAssocJackID( 0)      16
              baAssocJackID( 1)      17
              baAssocJackID( 2)      18
              baAssocJackID( 3)      19
              baAssocJackID( 4)      20
              baAssocJackID( 5)      21
              baAssocJackID( 6)      22
              baAssocJackID( 7)      23
              baAssocJackID( 8)      24
              baAssocJackID( 9)      25
              baAssocJackID(10)      26
              baAssocJackID(11)      27
              baAssocJackID(12)      28
              baAssocJackID(13)      29
              baAssocJackID(14)      30
              baAssocJackID(15)      31

  19. #19
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    55

    MIO-10 Usb Device descriptor info

    @Paul. Using Microsoft's UsbView, here's iConnectivity's MIO-10 Usb Descriptor details looking at it's Primary device port (Rear Panel):-

    Code:
    [Port2]  :  USB Composite Device
    
    
    Device Power State:               PowerDeviceD0
    
           ---===>Device Information<===---
    English product name: "mio10"
    
    ConnectionStatus:                  
    Current Config Value:              0x01  -> Device Bus Speed: Full
    Device Address:                    0x01
    Open Pipes:                           2
    
              ===>Device Descriptor<===
    bLength:                           0x12
    bDescriptorType:                   0x01
    bcdUSB:                          0x0110
    bDeviceClass:                      0x00  -> This is an Interface Class Defined Device
    bDeviceSubClass:                   0x00
    bDeviceProtocol:                   0x00
    bMaxPacketSize0:                   0x40 = (64) Bytes
    idVendor:                        0x2321 = iKingdom Corp. (d.b.a. iConnectivity)
    idProduct:                       0x001C
    bcdDevice:                       0x0100
    iManufacturer:                     0x01
         English (United States)  "iConnectivity"
    iProduct:                          0x02
         English (United States)  "mio10"
    iSerialNumber:                     0x03
         English (United States)  "00000836"
    bNumConfigurations:                0x01
    
              ---===>Open Pipes<===---
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
           ---===>Full Configuration Descriptor<===---
    
              ===>Configuration Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x02
    wTotalLength:                    0x0245  -> Validated
    bNumInterfaces:                    0x02
    bConfigurationValue:               0x01
    iConfiguration:                    0x00
    bmAttributes:                      0xC0  -> Self Powered
    MaxPower:                          0x00 =   0 mA
    
              ===>Interface Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x04
    bInterfaceNumber:                  0x00
    bAlternateSetting:                 0x00
    bNumEndpoints:                     0x00
    bInterfaceClass:                   0x01  -> Audio Interface Class
    bInterfaceSubClass:                0x01  -> Audio Control Interface SubClass
    bInterfaceProtocol:                0x00
    iInterface:                        0x00
    
              ===>Audio Control Interface Header Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x24 (CS_INTERFACE)
    bDescriptorSubtype:                0x01 (HEADER)
    bcdADC:                          0x0100
    wTotalLength:                    0x0009
    bInCollection:                     0x01
    baInterfaceNr[1]:                  0x01
    
              ===>Interface Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x04
    bInterfaceNumber:                  0x01
    bAlternateSetting:                 0x00
    bNumEndpoints:                     0x02
    bInterfaceClass:                   0x01  -> Audio Interface Class
    bInterfaceSubClass:                0x03  -> MIDI Streaming Interface SubClass
    bInterfaceProtocol:                0x00
    iInterface:                        0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x07
    bDescriptorType:                   0x24
    07 24 01 00 01 21 02 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 10 10 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 11 11 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 12 12 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 13 13 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 14 14 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 15 15 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 16 16 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 17 17 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 18 18 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 19 19 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1A 1A 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1B 1B 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1C 1C 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1D 1D 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1E 1E 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1F 1F 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 20 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 21 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 22 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 23 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 24 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 25 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 26 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 27 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 28 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 29 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2A 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2B 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2C 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2D 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2E 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2F 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 40 01 20 01 10 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 41 01 21 01 11 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 42 01 22 01 12 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 43 01 23 01 13 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 44 01 24 01 14 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 45 01 25 01 15 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 46 01 26 01 16 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 47 01 27 01 17 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 48 01 28 01 18 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 49 01 29 01 19 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4A 01 2A 01 1A 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4B 01 2B 01 1B 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4C 01 2C 01 1C 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4D 01 2D 01 1D 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4E 01 2E 01 1E 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4F 01 2F 01 1F 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 30 01 10 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 31 01 11 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 32 01 12 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 33 01 13 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 34 01 14 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 35 01 15 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 36 01 16 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 37 01 17 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 38 01 18 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 39 01 19 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3A 01 1A 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3B 01 1B 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3C 01 1C 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3D 01 1D 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3E 01 1E 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3F 01 1F 01 00 
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x14
    bDescriptorType:                   0x25
    14 25 01 10 40 41 42 43 44 45 46 47 48 49 4A 4B 
    4C 4D 4E 4F 
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x14
    bDescriptorType:                   0x25
    14 25 01 10 10 11 12 13 14 15 16 17 18 19 1A 1B 
    1C 1D 1E 1F
    And again for the Secondary Usb device port (Front panel):


    Code:
    [Port1]  :  USB Composite Device
    
    
    Device Power State:               PowerDeviceD0
    
           ---===>Device Information<===---
    English product name: "mio10"
    
    ConnectionStatus:                  
    Current Config Value:              0x01  -> Device Bus Speed: Full
    Device Address:                    0x01
    Open Pipes:                           2
    
              ===>Device Descriptor<===
    bLength:                           0x12
    bDescriptorType:                   0x01
    bcdUSB:                          0x0110
    bDeviceClass:                      0x00  -> This is an Interface Class Defined Device
    bDeviceSubClass:                   0x00
    bDeviceProtocol:                   0x00
    bMaxPacketSize0:                   0x40 = (64) Bytes
    idVendor:                        0x2321 = iKingdom Corp. (d.b.a. iConnectivity)
    idProduct:                       0x001B
    bcdDevice:                       0x0100
    iManufacturer:                     0x01
         English (United States)  "iConnectivity"
    iProduct:                          0x02
         English (United States)  "mio10"
    iSerialNumber:                     0x03
         English (United States)  "00000836"
    bNumConfigurations:                0x01
    
              ---===>Open Pipes<===---
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0020 = 0x20 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
           ---===>Full Configuration Descriptor<===---
    
              ===>Configuration Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x02
    wTotalLength:                    0x0245  -> Validated
    bNumInterfaces:                    0x02
    bConfigurationValue:               0x01
    iConfiguration:                    0x00
    bmAttributes:                      0xC0  -> Self Powered
    MaxPower:                          0x00 =   0 mA
    
              ===>Interface Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x04
    bInterfaceNumber:                  0x00
    bAlternateSetting:                 0x00
    bNumEndpoints:                     0x00
    bInterfaceClass:                   0x01  -> Audio Interface Class
    bInterfaceSubClass:                0x01  -> Audio Control Interface SubClass
    bInterfaceProtocol:                0x00
    iInterface:                        0x00
    
              ===>Audio Control Interface Header Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x24 (CS_INTERFACE)
    bDescriptorSubtype:                0x01 (HEADER)
    bcdADC:                          0x0100
    wTotalLength:                    0x0009
    bInCollection:                     0x01
    baInterfaceNr[1]:                  0x01
    
              ===>Interface Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x04
    bInterfaceNumber:                  0x01
    bAlternateSetting:                 0x00
    bNumEndpoints:                     0x02
    bInterfaceClass:                   0x01  -> Audio Interface Class
    bInterfaceSubClass:                0x03  -> MIDI Streaming Interface SubClass
    bInterfaceProtocol:                0x00
    iInterface:                        0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x07
    bDescriptorType:                   0x24
    07 24 01 00 01 21 02 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 10 10 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 11 11 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 12 12 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 13 13 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 14 14 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 15 15 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 16 16 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 17 17 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 18 18 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 19 19 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1A 1A 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1B 1B 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1C 1C 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1D 1D 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1E 1E 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 01 1F 1F 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 20 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 21 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 22 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 23 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 24 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 25 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 26 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 27 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 28 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 29 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2A 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2B 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2C 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2D 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2E 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x06
    bDescriptorType:                   0x24
    06 24 02 02 2F 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 40 01 20 01 10 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 41 01 21 01 11 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 42 01 22 01 12 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 43 01 23 01 13 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 44 01 24 01 14 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 45 01 25 01 15 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 46 01 26 01 16 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 47 01 27 01 17 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 48 01 28 01 18 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 49 01 29 01 19 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4A 01 2A 01 1A 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4B 01 2B 01 1B 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4C 01 2C 01 1C 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4D 01 2D 01 1D 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4E 01 2E 01 1E 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 01 4F 01 2F 01 1F 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 30 01 10 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 31 01 11 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 32 01 12 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 33 01 13 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 34 01 14 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 35 01 15 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 36 01 16 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 37 01 17 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 38 01 18 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 39 01 19 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3A 01 1A 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3B 01 1B 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3C 01 1C 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3D 01 1D 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3E 01 1E 01 00 
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x09
    bDescriptorType:                   0x24
    09 24 03 02 3F 01 1F 01 00 
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0040 = 0x40 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x14
    bDescriptorType:                   0x25
    14 25 01 10 40 41 42 43 44 45 46 47 48 49 4A 4B 
    4C 4D 4E 4F 
    
              ===>Endpoint Descriptor<===
    bLength:                           0x09
    bDescriptorType:                   0x05
    bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
    bmAttributes:                      0x02  -> Bulk Transfer Type
    wMaxPacketSize:                  0x0020 = 0x20 bytes
    wInterval:                       0x0000
    bSyncAddress:                      0x00
    
              ===>Descriptor Hex Dump<===
    bLength:                           0x14
    bDescriptorType:                   0x25
    14 25 01 10 10 11 12 13 14 15 16 17 18 19 1A 1B 
    1C 1D 1E 1F
    I hope this is useful.

Posting Permissions

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