All of lore.kernel.org
 help / color / mirror / Atom feed
* Allen&Heath Xone43C: USB communication
@ 2021-06-02 20:35 Roman
  2021-06-03 15:57 ` Geraldo Nascimento
  0 siblings, 1 reply; 3+ messages in thread
From: Roman @ 2021-06-02 20:35 UTC (permalink / raw)
  To: alsa-devel; +Cc: linux-kernel


   Hello all, hello list,
   I am not sure whether this is the correct list, since it's not strictly
   an
   ALSA affair (fw to kernel-devel). Recent progress on driver support for
   Pioneer devices encouraged me to dissect USB communication with an
   Allen&Heath Xone43C, a mixer with USB interface. It does feature 16
   channels
   (8 in, 8 out), but only 4 (2 in, 2 out) show up, 2 of which remain
   automagically
   silent. There is no linux driver yet, and maybe I can help?
   Addresses are:
   0x80    Endpoint 0 (in)
   0x00    Endpoint 0 (out)
   0x81    Endpoint 1 (in)    Interface 2.1 and Interface 2.2 (vendor
   spec)
   0x02    Endpoint 2 (out)  Interface 1.1 and Interface 1.2 (vendor spec)
   0x85    Endpoint 5 (in)    Interface 1.1
   0x83    Endpoint 3 (in)    Interface 3 MIDI
   0x04    Endpoint 4 (out)  Interface 3 MIDI

   ----------------------------------

   I have a sniff here:
   https://drive.google.com/file/d/1UPXCN-r7jc9hfm1d-Hip8vckSs2RQNtC/view?
   usp=sharing

   ---------------------------------

   USB info:

   Bus 001 Device 006: ID 22f0:000f Allen&Heath Xone:43C
   Device Descriptor:
     bLength                18
     bDescriptorType         1
     bcdUSB               2.00
     bDeviceClass          239 Miscellaneous Device
     bDeviceSubClass         2
     bDeviceProtocol         1 Interface Association
     bMaxPacketSize0        64
     idVendor           0x22f0
     idProduct          0x000f
     bcdDevice            2.00
     iManufacturer           1 Allen&Heath
     iProduct                2 Xone:43C
     iSerial                 3 no serial number
     bNumConfigurations      1
     Configuration Descriptor:
       bLength                 9
       bDescriptorType         2
       wTotalLength       0x0126
       bNumInterfaces          4
       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                11
           bDescriptorType        36
           bDescriptorSubtype      1 (HEADER)
           bcdADC               1.00
           wTotalLength       0x0035
           bInCollection           3
           baInterfaceNr(0)        1
           baInterfaceNr(1)        2
           baInterfaceNr(2)        3
         AudioControl Interface Descriptor:
           bLength                12
           bDescriptorType        36
           bDescriptorSubtype      2 (INPUT_TERMINAL)
           bTerminalID             1
           wTerminalType      0x0101 USB Streaming
           bAssocTerminal          0
           bNrChannels             2
           wChannelConfig     0x0003
             Left Front (L)
             Right Front (R)
           iChannelNames           0
           iTerminal               0
         AudioControl Interface Descriptor:
           bLength                 9
           bDescriptorType        36
           bDescriptorSubtype      3 (OUTPUT_TERMINAL)
           bTerminalID             2
           wTerminalType      0x0602 Digital Audio Interface
           bAssocTerminal          0
           bSourceID               1
           iTerminal               0
         AudioControl Interface Descriptor:
           bLength                12
           bDescriptorType        36
           bDescriptorSubtype      2 (INPUT_TERMINAL)
           bTerminalID             3
           wTerminalType      0x0602 Digital Audio Interface
           bAssocTerminal          0
           bNrChannels             2
           wChannelConfig     0x0003
             Left Front (L)
             Right Front (R)
           iChannelNames           0
           iTerminal               0
         AudioControl Interface Descriptor:
           bLength                 9
           bDescriptorType        36
           bDescriptorSubtype      3 (OUTPUT_TERMINAL)
           bTerminalID             4
           wTerminalType      0x0101 USB Streaming
           bAssocTerminal          0
           bSourceID               3
           iTerminal               0
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        1
         bAlternateSetting       0
         bNumEndpoints           0
         bInterfaceClass         1 Audio
         bInterfaceSubClass      2 Streaming
         bInterfaceProtocol      0
         iInterface              0
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        1
         bAlternateSetting       1
         bNumEndpoints           2
         bInterfaceClass         1 Audio
         bInterfaceSubClass      2 Streaming
         bInterfaceProtocol      0
         iInterface              0
         AudioStreaming Interface Descriptor:
           bLength                 7
           bDescriptorType        36
           bDescriptorSubtype      1 (AS_GENERAL)
           bTerminalLink           1
           bDelay                  1 frames
           wFormatTag         0x0001 PCM
         AudioStreaming Interface Descriptor:
           bLength                11
           bDescriptorType        36
           bDescriptorSubtype      2 (FORMAT_TYPE)
           bFormatType             1 (FORMAT_TYPE_I)
           bNrChannels             2
           bSubframeSize           3
           bBitResolution         24
           bSamFreqType            1 Discrete
           tSamFreq[ 0]        48000
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x02  EP 2 OUT
           bmAttributes            5
             Transfer Type            Isochronous
             Synch Type               Asynchronous
             Usage Type               Data
           wMaxPacketSize     0x0126  1x 294 bytes
           bInterval               4
           bRefresh                0
           bSynchAddress         133
           AudioStreaming Endpoint Descriptor:
             bLength                 7
             bDescriptorType        37
             bDescriptorSubtype      1 (EP_GENERAL)
             bmAttributes         0x01
               Sampling Frequency
             bLockDelayUnits         2 Decoded PCM samples
             wLockDelay         0x0000
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x85  EP 5 IN
           bmAttributes            1
             Transfer Type            Isochronous
             Synch Type               None
             Usage Type               Data
           wMaxPacketSize     0x0003  1x 3 bytes
           bInterval               4
           bRefresh                5
           bSynchAddress           0
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        1
         bAlternateSetting       2
         bNumEndpoints           1
         bInterfaceClass       255 Vendor Specific Class
         bInterfaceSubClass      0
         bInterfaceProtocol      0
         iInterface              0
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x02  EP 2 OUT
           bmAttributes            5
             Transfer Type            Isochronous
             Synch Type               Asynchronous
             Usage Type               Data
           wMaxPacketSize     0x0200  1x 512 bytes
           bInterval               1
           bRefresh                0
           bSynchAddress           0
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        2
         bAlternateSetting       0
         bNumEndpoints           0
         bInterfaceClass         1 Audio
         bInterfaceSubClass      2 Streaming
         bInterfaceProtocol      0
         iInterface              0
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        2
         bAlternateSetting       1
         bNumEndpoints           1
         bInterfaceClass         1 Audio
         bInterfaceSubClass      2 Streaming
         bInterfaceProtocol      0
         iInterface              0
         AudioStreaming Interface Descriptor:
           bLength                 7
           bDescriptorType        36
           bDescriptorSubtype      1 (AS_GENERAL)
           bTerminalLink           4
           bDelay                  1 frames
           wFormatTag         0x0001 PCM
         AudioStreaming Interface Descriptor:
           bLength                11
           bDescriptorType        36
           bDescriptorSubtype      2 (FORMAT_TYPE)
           bFormatType             1 (FORMAT_TYPE_I)
           bNrChannels             2
           bSubframeSize           3
           bBitResolution         24
           bSamFreqType            1 Discrete
           tSamFreq[ 0]        48000
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x81  EP 1 IN
           bmAttributes            5
             Transfer Type            Isochronous
             Synch Type               Asynchronous
             Usage Type               Data
           wMaxPacketSize     0x0126  1x 294 bytes
           bInterval               4
           bRefresh                0
           bSynchAddress           0
           AudioStreaming Endpoint Descriptor:
             bLength                 7
             bDescriptorType        37
             bDescriptorSubtype      1 (EP_GENERAL)
             bmAttributes         0x01
               Sampling Frequency
             bLockDelayUnits         2 Decoded PCM samples
             wLockDelay         0x0000
       Interface Descriptor:
         bLength                 9
         bDescriptorType         4
         bInterfaceNumber        2
         bAlternateSetting       2
         bNumEndpoints           1
         bInterfaceClass       255 Vendor Specific Class
         bInterfaceSubClass      0
         bInterfaceProtocol      0
         iInterface              0
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x81  EP 1 IN
           bmAttributes            5
             Transfer Type            Isochronous
             Synch Type               Asynchronous
             Usage Type               Data
           wMaxPacketSize     0x0200  1x 512 bytes
           bInterval               1
           bRefresh                0
           bSynchAddress           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       0x0041
         MIDIStreaming Interface Descriptor:
           bLength                 6
           bDescriptorType        36
           bDescriptorSubtype      2 (MIDI_IN_JACK)
           bJackType               1 Embedded
           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                 9
           bDescriptorType        36
           bDescriptorSubtype      3 (MIDI_OUT_JACK)
           bJackType               1 Embedded
           bJackID                 3
           bNrInputPins            1
           baSourceID( 0)          2
           BaSourcePin( 0)         1
           iJack                   0
         MIDIStreaming Interface Descriptor:
           bLength                 9
           bDescriptorType        36
           bDescriptorSubtype      3 (MIDI_OUT_JACK)
           bJackType               2 External
           bJackID                 4
           bNrInputPins            1
           baSourceID( 0)          1
           BaSourcePin( 0)         1
           iJack                   0
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x83  EP 3 IN
           bmAttributes            2
             Transfer Type            Bulk
             Synch Type               None
             Usage Type               Data
           wMaxPacketSize     0x0200  1x 512 bytes
           bInterval               1
           bRefresh                0
           bSynchAddress           0
           MIDIStreaming Endpoint Descriptor:
             bLength                 5
             bDescriptorType        37
             bDescriptorSubtype      1 (GENERAL)
             bNumEmbMIDIJack         1
             baAssocJackID( 0)       3
         Endpoint Descriptor:
           bLength                 9
           bDescriptorType         5
           bEndpointAddress     0x04  EP 4 OUT
           bmAttributes            3
             Transfer Type            Interrupt
             Synch Type               None
             Usage Type               Data
           wMaxPacketSize     0x0010  1x 16 bytes
           bInterval               4
           bRefresh                0
           bSynchAddress           0
           MIDIStreaming Endpoint Descriptor:
             bLength                 5
             bDescriptorType        37
             bDescriptorSubtype      1 (GENERAL)
             bNumEmbMIDIJack         1
             baAssocJackID( 0)       1
   Device Qualifier (for other device speed):
     bLength                10
     bDescriptorType         6
     bcdUSB               2.00
     bDeviceClass            0
     bDeviceSubClass         0
     bDeviceProtocol         0
     bMaxPacketSize0        64
     bNumConfigurations      1
   Device Status:     0x0001
     Self Powered

   ---
   Best wishes,
   Roman

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Allen&Heath Xone43C: USB communication
  2021-06-02 20:35 Allen&Heath Xone43C: USB communication Roman
@ 2021-06-03 15:57 ` Geraldo Nascimento
  0 siblings, 0 replies; 3+ messages in thread
From: Geraldo Nascimento @ 2021-06-03 15:57 UTC (permalink / raw)
  To: Roman; +Cc: alsa-devel

Hi Roman,

I don't know if you got any response in kernel-devel, I just wanted
you to know that yes, alsa-devel is the correct list for sending
patches to new USB sound device drivers, I see you got a verbose lsusb
and a USB capture of the device's handshake.

If it helps you, for the Pioneer additions you can find the kernel
backlog, correct me if I'm wrong, the key was first adding a section
in sound/usb/quirks-table.h with the correct rate information, EP
numbers, transfer masks, etc.

Please try adding your vendor spec EPs and associated interface number
and altsetting inside sound/usb/quirks-table.h, by creating a new
section.

At this point, you are not creating a new driver per se, but boot with
the extra kernel parameter snd_usb_audio.dyndbg=+p to get extra
debugging information.

I sincerely hope you are not dealing with Pioneer-like gear, because
that would mean a ton of strange cryptographic MIDI SysEx's or bizarre
CONTROL URBs to actually get silent inputs to activate.

Yours,
Geraldo Nascimento


On Wed, Jun 2, 2021 at 5:36 PM Roman <klangrausch@wolke7.net> wrote:
>
>
>    Hello all, hello list,
>    I am not sure whether this is the correct list, since it's not strictly
>    an
>    ALSA affair (fw to kernel-devel). Recent progress on driver support for
>    Pioneer devices encouraged me to dissect USB communication with an
>    Allen&Heath Xone43C, a mixer with USB interface. It does feature 16
>    channels
>    (8 in, 8 out), but only 4 (2 in, 2 out) show up, 2 of which remain
>    automagically
>    silent. There is no linux driver yet, and maybe I can help?
>    Addresses are:
>    0x80    Endpoint 0 (in)
>    0x00    Endpoint 0 (out)
>    0x81    Endpoint 1 (in)    Interface 2.1 and Interface 2.2 (vendor
>    spec)
>    0x02    Endpoint 2 (out)  Interface 1.1 and Interface 1.2 (vendor spec)
>    0x85    Endpoint 5 (in)    Interface 1.1
>    0x83    Endpoint 3 (in)    Interface 3 MIDI
>    0x04    Endpoint 4 (out)  Interface 3 MIDI
>
>    ----------------------------------
>
>    I have a sniff here:
>    https://drive.google.com/file/d/1UPXCN-r7jc9hfm1d-Hip8vckSs2RQNtC/view?
>    usp=sharing
>
>    ---------------------------------
>
>    USB info:
>
>    Bus 001 Device 006: ID 22f0:000f Allen&Heath Xone:43C
>    Device Descriptor:
>      bLength                18
>      bDescriptorType         1
>      bcdUSB               2.00
>      bDeviceClass          239 Miscellaneous Device
>      bDeviceSubClass         2
>      bDeviceProtocol         1 Interface Association
>      bMaxPacketSize0        64
>      idVendor           0x22f0
>      idProduct          0x000f
>      bcdDevice            2.00
>      iManufacturer           1 Allen&Heath
>      iProduct                2 Xone:43C
>      iSerial                 3 no serial number
>      bNumConfigurations      1
>      Configuration Descriptor:
>        bLength                 9
>        bDescriptorType         2
>        wTotalLength       0x0126
>        bNumInterfaces          4
>        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                11
>            bDescriptorType        36
>            bDescriptorSubtype      1 (HEADER)
>            bcdADC               1.00
>            wTotalLength       0x0035
>            bInCollection           3
>            baInterfaceNr(0)        1
>            baInterfaceNr(1)        2
>            baInterfaceNr(2)        3
>          AudioControl Interface Descriptor:
>            bLength                12
>            bDescriptorType        36
>            bDescriptorSubtype      2 (INPUT_TERMINAL)
>            bTerminalID             1
>            wTerminalType      0x0101 USB Streaming
>            bAssocTerminal          0
>            bNrChannels             2
>            wChannelConfig     0x0003
>              Left Front (L)
>              Right Front (R)
>            iChannelNames           0
>            iTerminal               0
>          AudioControl Interface Descriptor:
>            bLength                 9
>            bDescriptorType        36
>            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>            bTerminalID             2
>            wTerminalType      0x0602 Digital Audio Interface
>            bAssocTerminal          0
>            bSourceID               1
>            iTerminal               0
>          AudioControl Interface Descriptor:
>            bLength                12
>            bDescriptorType        36
>            bDescriptorSubtype      2 (INPUT_TERMINAL)
>            bTerminalID             3
>            wTerminalType      0x0602 Digital Audio Interface
>            bAssocTerminal          0
>            bNrChannels             2
>            wChannelConfig     0x0003
>              Left Front (L)
>              Right Front (R)
>            iChannelNames           0
>            iTerminal               0
>          AudioControl Interface Descriptor:
>            bLength                 9
>            bDescriptorType        36
>            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>            bTerminalID             4
>            wTerminalType      0x0101 USB Streaming
>            bAssocTerminal          0
>            bSourceID               3
>            iTerminal               0
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        1
>          bAlternateSetting       0
>          bNumEndpoints           0
>          bInterfaceClass         1 Audio
>          bInterfaceSubClass      2 Streaming
>          bInterfaceProtocol      0
>          iInterface              0
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        1
>          bAlternateSetting       1
>          bNumEndpoints           2
>          bInterfaceClass         1 Audio
>          bInterfaceSubClass      2 Streaming
>          bInterfaceProtocol      0
>          iInterface              0
>          AudioStreaming Interface Descriptor:
>            bLength                 7
>            bDescriptorType        36
>            bDescriptorSubtype      1 (AS_GENERAL)
>            bTerminalLink           1
>            bDelay                  1 frames
>            wFormatTag         0x0001 PCM
>          AudioStreaming Interface Descriptor:
>            bLength                11
>            bDescriptorType        36
>            bDescriptorSubtype      2 (FORMAT_TYPE)
>            bFormatType             1 (FORMAT_TYPE_I)
>            bNrChannels             2
>            bSubframeSize           3
>            bBitResolution         24
>            bSamFreqType            1 Discrete
>            tSamFreq[ 0]        48000
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x02  EP 2 OUT
>            bmAttributes            5
>              Transfer Type            Isochronous
>              Synch Type               Asynchronous
>              Usage Type               Data
>            wMaxPacketSize     0x0126  1x 294 bytes
>            bInterval               4
>            bRefresh                0
>            bSynchAddress         133
>            AudioStreaming Endpoint Descriptor:
>              bLength                 7
>              bDescriptorType        37
>              bDescriptorSubtype      1 (EP_GENERAL)
>              bmAttributes         0x01
>                Sampling Frequency
>              bLockDelayUnits         2 Decoded PCM samples
>              wLockDelay         0x0000
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x85  EP 5 IN
>            bmAttributes            1
>              Transfer Type            Isochronous
>              Synch Type               None
>              Usage Type               Data
>            wMaxPacketSize     0x0003  1x 3 bytes
>            bInterval               4
>            bRefresh                5
>            bSynchAddress           0
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        1
>          bAlternateSetting       2
>          bNumEndpoints           1
>          bInterfaceClass       255 Vendor Specific Class
>          bInterfaceSubClass      0
>          bInterfaceProtocol      0
>          iInterface              0
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x02  EP 2 OUT
>            bmAttributes            5
>              Transfer Type            Isochronous
>              Synch Type               Asynchronous
>              Usage Type               Data
>            wMaxPacketSize     0x0200  1x 512 bytes
>            bInterval               1
>            bRefresh                0
>            bSynchAddress           0
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        2
>          bAlternateSetting       0
>          bNumEndpoints           0
>          bInterfaceClass         1 Audio
>          bInterfaceSubClass      2 Streaming
>          bInterfaceProtocol      0
>          iInterface              0
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        2
>          bAlternateSetting       1
>          bNumEndpoints           1
>          bInterfaceClass         1 Audio
>          bInterfaceSubClass      2 Streaming
>          bInterfaceProtocol      0
>          iInterface              0
>          AudioStreaming Interface Descriptor:
>            bLength                 7
>            bDescriptorType        36
>            bDescriptorSubtype      1 (AS_GENERAL)
>            bTerminalLink           4
>            bDelay                  1 frames
>            wFormatTag         0x0001 PCM
>          AudioStreaming Interface Descriptor:
>            bLength                11
>            bDescriptorType        36
>            bDescriptorSubtype      2 (FORMAT_TYPE)
>            bFormatType             1 (FORMAT_TYPE_I)
>            bNrChannels             2
>            bSubframeSize           3
>            bBitResolution         24
>            bSamFreqType            1 Discrete
>            tSamFreq[ 0]        48000
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x81  EP 1 IN
>            bmAttributes            5
>              Transfer Type            Isochronous
>              Synch Type               Asynchronous
>              Usage Type               Data
>            wMaxPacketSize     0x0126  1x 294 bytes
>            bInterval               4
>            bRefresh                0
>            bSynchAddress           0
>            AudioStreaming Endpoint Descriptor:
>              bLength                 7
>              bDescriptorType        37
>              bDescriptorSubtype      1 (EP_GENERAL)
>              bmAttributes         0x01
>                Sampling Frequency
>              bLockDelayUnits         2 Decoded PCM samples
>              wLockDelay         0x0000
>        Interface Descriptor:
>          bLength                 9
>          bDescriptorType         4
>          bInterfaceNumber        2
>          bAlternateSetting       2
>          bNumEndpoints           1
>          bInterfaceClass       255 Vendor Specific Class
>          bInterfaceSubClass      0
>          bInterfaceProtocol      0
>          iInterface              0
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x81  EP 1 IN
>            bmAttributes            5
>              Transfer Type            Isochronous
>              Synch Type               Asynchronous
>              Usage Type               Data
>            wMaxPacketSize     0x0200  1x 512 bytes
>            bInterval               1
>            bRefresh                0
>            bSynchAddress           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       0x0041
>          MIDIStreaming Interface Descriptor:
>            bLength                 6
>            bDescriptorType        36
>            bDescriptorSubtype      2 (MIDI_IN_JACK)
>            bJackType               1 Embedded
>            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                 9
>            bDescriptorType        36
>            bDescriptorSubtype      3 (MIDI_OUT_JACK)
>            bJackType               1 Embedded
>            bJackID                 3
>            bNrInputPins            1
>            baSourceID( 0)          2
>            BaSourcePin( 0)         1
>            iJack                   0
>          MIDIStreaming Interface Descriptor:
>            bLength                 9
>            bDescriptorType        36
>            bDescriptorSubtype      3 (MIDI_OUT_JACK)
>            bJackType               2 External
>            bJackID                 4
>            bNrInputPins            1
>            baSourceID( 0)          1
>            BaSourcePin( 0)         1
>            iJack                   0
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x83  EP 3 IN
>            bmAttributes            2
>              Transfer Type            Bulk
>              Synch Type               None
>              Usage Type               Data
>            wMaxPacketSize     0x0200  1x 512 bytes
>            bInterval               1
>            bRefresh                0
>            bSynchAddress           0
>            MIDIStreaming Endpoint Descriptor:
>              bLength                 5
>              bDescriptorType        37
>              bDescriptorSubtype      1 (GENERAL)
>              bNumEmbMIDIJack         1
>              baAssocJackID( 0)       3
>          Endpoint Descriptor:
>            bLength                 9
>            bDescriptorType         5
>            bEndpointAddress     0x04  EP 4 OUT
>            bmAttributes            3
>              Transfer Type            Interrupt
>              Synch Type               None
>              Usage Type               Data
>            wMaxPacketSize     0x0010  1x 16 bytes
>            bInterval               4
>            bRefresh                0
>            bSynchAddress           0
>            MIDIStreaming Endpoint Descriptor:
>              bLength                 5
>              bDescriptorType        37
>              bDescriptorSubtype      1 (GENERAL)
>              bNumEmbMIDIJack         1
>              baAssocJackID( 0)       1
>    Device Qualifier (for other device speed):
>      bLength                10
>      bDescriptorType         6
>      bcdUSB               2.00
>      bDeviceClass            0
>      bDeviceSubClass         0
>      bDeviceProtocol         0
>      bMaxPacketSize0        64
>      bNumConfigurations      1
>    Device Status:     0x0001
>      Self Powered
>
>    ---
>    Best wishes,
>    Roman

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Allen&Heath Xone43C: USB communication
@ 2021-06-02 20:39 Roman
  0 siblings, 0 replies; 3+ messages in thread
From: Roman @ 2021-06-02 20:39 UTC (permalink / raw)
  To: linux-kernel

Hello all, hello list,
I am not sure whether this is the correct list, since it's not strictly an
ALSA affair (fw to kernel-devel). Recent progress on driver support for
Pioneer devices encouraged me to dissect USB communication with an
Allen&Heath Xone43C, a mixer with USB interface. It does feature 16 channels
(8 in, 8 out), but only 4 (2 in, 2 out) show up, 2 of which remain automagically
silent. There is no linux driver yet, and maybe I can help?

Addresses are:
0x80    Endpoint 0 (in)
0x00    Endpoint 0 (out)
0x81    Endpoint 1 (in)    Interface 2.1 and Interface 2.2 (vendor spec)
0x02    Endpoint 2 (out)   Interface 1.1 and Interface 1.2 (vendor spec)
0x85    Endpoint 5 (in)    Interface 1.1
0x83    Endpoint 3 (in)    Interface 3 MIDI
0x04    Endpoint 4 (out)   Interface 3 MIDI
 
----------------------------------
 
I have a sniff here:
https://drive.google.com/file/d/1UPXCN-r7jc9hfm1d-Hip8vckSs2RQNtC/view?usp=sharing
 
---------------------------------

USB info:
 
Bus 001 Device 006: ID 22f0:000f Allen&Heath Xone:43C
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x22f0
  idProduct          0x000f
  bcdDevice            2.00
  iManufacturer           1 Allen&Heath
  iProduct                2 Xone:43C
  iSerial                 3 no serial number
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0126
    bNumInterfaces          4
    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                11
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0035
        bInCollection           3
        baInterfaceNr(0)        1
        baInterfaceNr(1)        2
        baInterfaceNr(2)        3
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0602 Digital Audio Interface
        bAssocTerminal          0
        bSourceID               1
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0602 Digital Audio Interface
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             4
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               3
        iTerminal               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0126  1x 294 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress         133
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0003  1x 3 bytes
        bInterval               4
        bRefresh                5
        bSynchAddress           0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           4
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0126  1x 294 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           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       0x0041
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        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                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 3
        bNrInputPins            1
        baSourceID( 0)          2
        BaSourcePin( 0)         1
        iJack                   0
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                 4
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   0
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       3
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered
 
---
Best wishes,
Roman

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-06-03 16:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-02 20:35 Allen&Heath Xone43C: USB communication Roman
2021-06-03 15:57 ` Geraldo Nascimento
2021-06-02 20:39 Roman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.