Hello Clemens and Ewald,
Bought this card the other week, been looking into making it work on my linux box. I am not a coder, so what follows is speculative.
I have both the UA-25EX and the UA-55, so made some lsusb -v comparisons and deductions:
(In the next mail (because of mailing list limitation):
Main specifications of the UA-55 from the manual.
lsusb -v outputs for the following:
UA-55
UA-25EX standard mode
UA-25EX advanced 44.1 mode
UA-25EX advanced 48 mode
UA-25EX advanced 96 playback mode
UA-25EX advanced 96 record mode. )
The UA-55 does not have an advanced mode switch. Comparing lsusb -v for UA-25Ex and UA-55, it looks like the UA-55 is always in advanced mode.
The UA-25EX in normal mode is standards compliant, so lsusb -v knows how to interpret all the data. We get values for bNrChannels, bBitResolution, bSamFreq and wFormatTag (e.g. 2 channels, 16bit, 44100Hz, PCM).
Both the UA-25EX and UA-55 in advanced mode give UNRECOGNIZED values in lsusb -v, examples:
UA-25EX advanced mode 44.1kHz sample rate:
** UNRECOGNIZED: 07 24 01 07 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 03 18 01 44 ac 00
UA-55:
** UNRECOGNIZED: 07 24 01 01 00 01 01
** UNRECOGNIZED: 0b 24 02 01 04 04 18 01 80 bb 00
The comment for create_uaxx_quirk in quirks.c says that the only way to detect samplerate is to look at wMaxPacketSize, but it is not true. The device does tell us:
44 ac 00 -> 0x00ac44 = 44100
80 bb 00 -> 0x00bb80 = 48000
So I attempt to interpret the data structure of these UNRECOGNIZED values with the help of "frmts10.pdf", "Frmts20 final.pdf" and correlations between UA-25EX standard and advanced modes. Example:
Audio class-specific stream interface
07 bLength = 7
24 bDescriptorType = CS_INTERFACE
01 bDescriptorSubtype = AS_GENERAL
01 bTerminalLink = 1
00 bDelay = 0 frames
01 wFormatTag (1) = PCM
01 wFormatTag (2) = PCM
( or WAVE_FORMAT_IRAT BeCubed Software Inc 0x0101
or IBM_FORMAT_MULAW 0x0101 ? )
Audio class-specific type I format
0b bLength = 11
24 bDescriptorType = CS_INTERFACE
02 bDescriptorSubtype = FORMAT_TYPE
01 bFormatType = TYPE_I
04 bNrChannels = 4 channels
04 bSubFrameSize = 4
18 bBitResolution = 0x18 = 24 bits
01 bSamFreqType = 1 (1 sampling frequency only)
80 bb 00 tSamFreq = 0x00bb80 = 48000 Hz sample rate
Seems straightforward enough. Trying to put this into the drivers, I fail miserably because I can't code. I try to make a copy in quirks.c of create_uaxx_quirk called create_ua55_quirk and just put the UA-55 values in it, but it doesn't fit.
The UA-55 has many combinations of channels and samplerates and wMaxPacketSize (and even the same wMaxPacketSize for 44.1kHz and 48kHz samplerates), so wMaxPacketSize is unsuitable for determining samplerate.
I don't know how to make the driver read the info from those UNRECOGNIZED values, even if it's clearly there. I don't know if the driver needs to be told about the 4 and 6 channel outputs. I don't know how the double wFormatTag relates to the channels. I don't know where to begin to find out about these things. Phew.
(The manual hints that you should be able to stream 2channel audio as is. There is no mention of 6 channels in the manual.)
Parsing the unrecognized data with the above interpretation yields:
UA-55 interface 0 altsetting 0: ** UNRECOGNIZED: 06 24 f1 01 00 00
UA-55 interface 0 altsetting 1: 4channel 24bit 44100Hz wMaxPacketSize 0x070
UA-55 interface 0 altsetting 2: 4channel 24bit 48000Hz wMaxPacketSize 0x070
UA-55 interface 0 altsetting 3: 4channel 24bit 96000hz wMaxPacketSize 0x0d0
UA-55 interface 0 altsetting 4: 2channel 24bit 192000hz wMaxPacketSize 0x0c8
UA-55 interface 1 altsetting 0:
UA-55 interface 1 altsetting 1: 6channel 24bit 44100Hz wMaxPacketSize 0x0a8
UA-55 interface 1 altsetting 2: 6channel 24bit 48000Hz wMaxPacketSize 0x0a8
UA-55 interface 1 altsetting 3: 6channel 24bit 96000Hz wMaxPacketSize 0x138
UA-55 interface 1 altsetting 4: 2channel 24bit 192000Hz wMaxPacketSize 0x0c8
UA-55 interface 2 altsetting 0: ** UNRECOGNIZED: 06 24 f1 02 01 01
UA-55 interface 2 altsetting 1:
UA-55 interface 3 altsetting 0:
UA-55 interface 3 altsetting 1:
UA-55 interface 4 altsetting 0:
UA-55 interface 4 altsetting 1:
UA-55 interface 4 altsetting 2:
UA-55 interface 4 altsetting 3:
UA-55 interface 4 altsetting 4:
UA-25EX stdrd int 0 alt 0: Audio Control Device
UA-25EX stdrd int 1 alt 0: Audio Streaming
UA-25EX stdrd int 1 alt 1: 2ch 16bit 44100Hz wMaxPacketSize 0x0c0
UA-25EX stdrd int 2 alt 0: Audio Streaming
UA-25EX stdrd int 2 alt 1: 2ch 16bit 44100Hz wMaxPacketSize 0x0c0
UA-25EX adv 44.1 mode int 0 alt 0:
UA-25EX adv 44.1 mode int 0 alt 1: 2ch 24bit 44100Hz wMaxPacketSize 0x120
UA-25EX adv 44.1 mode int 1 alt 0:
UA-25EX adv 44.1 mode int 1 alt 1: 2ch 24bit 44100Hz wMaxPacketSize 0x120
UA-25EX adv 44.1 mode int 2 alt 0:
UA-25EX adv 44.1 mode int 2 alt 1:
UA-25EX adv 48 mode int 0 alt 0:
UA-25EX adv 48 mode int 0 alt 1: 2ch 24bit 48000Hz wMaxPacketSize 0x140
UA-25EX adv 48 mode int 1 alt 0:
UA-25EX adv 48 mode int 1 alt 1: 2ch 24bit 48000Hz wMaxPacketSize 0x140
UA-25EX adv 48 mode int 2 alt 0:
UA-25EX adv 48 mode int 2 alt 1:
UA-25EX adv 96 playback int0 alt 0:
UA-25EX adv 96 playback int0 alt 1: 2ch 24bit 96000Hz wMaxPacketSize 0x260
UA-25EX adv 96 playback int1 alt 0:
UA-25EX adv 96 playback int1 alt 1:
UA-25EX adv 96 record int0 alt 0:
UA-25EX adv 96 record int0 alt 1: 2ch 24bit 96000Hz wMaxPacketSize 0x260
UA-25EX adv 96 record int1 alt 0:
UA-25EX adv 96 record int1 alt 1:
Any hints on how to hack up a driver for this?
Cheers,
Aleks
Bought this card the other week, been looking into making it work on my linux box. I am not a coder, so what follows is speculative.
I have both the UA-25EX and the UA-55, so made some lsusb -v comparisons and deductions:
(In the next mail (because of mailing list limitation):
Main specifications of the UA-55 from the manual.
lsusb -v outputs for the following:
UA-55
UA-25EX standard mode
UA-25EX advanced 44.1 mode
UA-25EX advanced 48 mode
UA-25EX advanced 96 playback mode
UA-25EX advanced 96 record mode. )
The UA-55 does not have an advanced mode switch. Comparing lsusb -v for UA-25Ex and UA-55, it looks like the UA-55 is always in advanced mode.
The UA-25EX in normal mode is standards compliant, so lsusb -v knows how to interpret all the data. We get values for bNrChannels, bBitResolution, bSamFreq and wFormatTag (e.g. 2 channels, 16bit, 44100Hz, PCM).
Both the UA-25EX and UA-55 in advanced mode give UNRECOGNIZED values in lsusb -v, examples:
UA-25EX advanced mode 44.1kHz sample rate:
** UNRECOGNIZED: 07 24 01 07 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 03 18 01 44 ac 00
UA-55:
** UNRECOGNIZED: 07 24 01 01 00 01 01
** UNRECOGNIZED: 0b 24 02 01 04 04 18 01 80 bb 00
The comment for create_uaxx_quirk in quirks.c says that the only way to detect samplerate is to look at wMaxPacketSize, but it is not true. The device does tell us:
44 ac 00 -> 0x00ac44 = 44100
80 bb 00 -> 0x00bb80 = 48000
So I attempt to interpret the data structure of these UNRECOGNIZED values with the help of "frmts10.pdf", "Frmts20 final.pdf" and correlations between UA-25EX standard and advanced modes. Example:
Audio class-specific stream interface
07 bLength = 7
24 bDescriptorType = CS_INTERFACE
01 bDescriptorSubtype = AS_GENERAL
01 bTerminalLink = 1
00 bDelay = 0 frames
01 wFormatTag (1) = PCM
01 wFormatTag (2) = PCM
( or WAVE_FORMAT_IRAT BeCubed Software Inc 0x0101
or IBM_FORMAT_MULAW 0x0101 ? )
Audio class-specific type I format
0b bLength = 11
24 bDescriptorType = CS_INTERFACE
02 bDescriptorSubtype = FORMAT_TYPE
01 bFormatType = TYPE_I
04 bNrChannels = 4 channels
04 bSubFrameSize = 4
18 bBitResolution = 0x18 = 24 bits
01 bSamFreqType = 1 (1 sampling frequency only)
80 bb 00 tSamFreq = 0x00bb80 = 48000 Hz sample rate
Seems straightforward enough. Trying to put this into the drivers, I fail miserably because I can't code. I try to make a copy in quirks.c of create_uaxx_quirk called create_ua55_quirk and just put the UA-55 values in it, but it doesn't fit.
The UA-55 has many combinations of channels and samplerates and wMaxPacketSize (and even the same wMaxPacketSize for 44.1kHz and 48kHz samplerates), so wMaxPacketSize is unsuitable for determining samplerate.
I don't know how to make the driver read the info from those UNRECOGNIZED values, even if it's clearly there. I don't know if the driver needs to be told about the 4 and 6 channel outputs. I don't know how the double wFormatTag relates to the channels. I don't know where to begin to find out about these things. Phew.
(The manual hints that you should be able to stream 2channel audio as is. There is no mention of 6 channels in the manual.)
Parsing the unrecognized data with the above interpretation yields:
UA-55 interface 0 altsetting 0: ** UNRECOGNIZED: 06 24 f1 01 00 00
UA-55 interface 0 altsetting 1: 4channel 24bit 44100Hz wMaxPacketSize 0x070
UA-55 interface 0 altsetting 2: 4channel 24bit 48000Hz wMaxPacketSize 0x070
UA-55 interface 0 altsetting 3: 4channel 24bit 96000hz wMaxPacketSize 0x0d0
UA-55 interface 0 altsetting 4: 2channel 24bit 192000hz wMaxPacketSize 0x0c8
UA-55 interface 1 altsetting 0:
UA-55 interface 1 altsetting 1: 6channel 24bit 44100Hz wMaxPacketSize 0x0a8
UA-55 interface 1 altsetting 2: 6channel 24bit 48000Hz wMaxPacketSize 0x0a8
UA-55 interface 1 altsetting 3: 6channel 24bit 96000Hz wMaxPacketSize 0x138
UA-55 interface 1 altsetting 4: 2channel 24bit 192000Hz wMaxPacketSize 0x0c8
UA-55 interface 2 altsetting 0: ** UNRECOGNIZED: 06 24 f1 02 01 01
UA-55 interface 2 altsetting 1:
UA-55 interface 3 altsetting 0:
UA-55 interface 3 altsetting 1:
UA-55 interface 4 altsetting 0:
UA-55 interface 4 altsetting 1:
UA-55 interface 4 altsetting 2:
UA-55 interface 4 altsetting 3:
UA-55 interface 4 altsetting 4:
UA-25EX stdrd int 0 alt 0: Audio Control Device
UA-25EX stdrd int 1 alt 0: Audio Streaming
UA-25EX stdrd int 1 alt 1: 2ch 16bit 44100Hz wMaxPacketSize 0x0c0
UA-25EX stdrd int 2 alt 0: Audio Streaming
UA-25EX stdrd int 2 alt 1: 2ch 16bit 44100Hz wMaxPacketSize 0x0c0
UA-25EX adv 44.1 mode int 0 alt 0:
UA-25EX adv 44.1 mode int 0 alt 1: 2ch 24bit 44100Hz wMaxPacketSize 0x120
UA-25EX adv 44.1 mode int 1 alt 0:
UA-25EX adv 44.1 mode int 1 alt 1: 2ch 24bit 44100Hz wMaxPacketSize 0x120
UA-25EX adv 44.1 mode int 2 alt 0:
UA-25EX adv 44.1 mode int 2 alt 1:
UA-25EX adv 48 mode int 0 alt 0:
UA-25EX adv 48 mode int 0 alt 1: 2ch 24bit 48000Hz wMaxPacketSize 0x140
UA-25EX adv 48 mode int 1 alt 0:
UA-25EX adv 48 mode int 1 alt 1: 2ch 24bit 48000Hz wMaxPacketSize 0x140
UA-25EX adv 48 mode int 2 alt 0:
UA-25EX adv 48 mode int 2 alt 1:
UA-25EX adv 96 playback int0 alt 0:
UA-25EX adv 96 playback int0 alt 1: 2ch 24bit 96000Hz wMaxPacketSize 0x260
UA-25EX adv 96 playback int1 alt 0:
UA-25EX adv 96 playback int1 alt 1:
UA-25EX adv 96 record int0 alt 0:
UA-25EX adv 96 record int0 alt 1: 2ch 24bit 96000Hz wMaxPacketSize 0x260
UA-25EX adv 96 record int1 alt 0:
UA-25EX adv 96 record int1 alt 1:
Any hints on how to hack up a driver for this?
Cheers,
Aleks
------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________ Alsa-user mailing list Alsa-user@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-user