Allen&Heath Xone43C: USB communication

Geraldo Nascimento geraldogabriel at gmail.com
Thu Jun 3 17:57:51 CEST 2021


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 at 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


More information about the Alsa-devel mailing list