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