[alsa-devel] snd_usb_audio - siberia elite prism soundcard issues

Raymond Yau superquad.vortex2 at gmail.com
Thu Mar 12 02:10:24 CET 2015


>> >>
>> >> >> > >
>> >> >> > > > amixer: Control hw:2 element read error: Invalid argument
>> >> >> > > > usb 1-1.3: 10:0: cannot get min/max values for control 3 (id
10)
>> >> >> > > > usb 1-1.3: 2:1: cannot get freq at ep 0x1
>> >>
>> >> numid=5,iface=MIXER,name='PCM Volume' ;
type=INTEGER,access=rw------,values=2,min=0,max=1,step=0 amixer: Control
hw:2 element read error: Invalid argument
>> >>
>> >> numid=6,iface=MIXER,name='PCM Volume',index=1 ;
type=INTEGER,access=rw------,values=1,min=0,max=1,step=0 amixer: Control
hw:2 element read error: Invalid argument
>> >>
>> >> numid=7,iface=MIXER,name='PCM Volume',index=2 ;
type=INTEGER,access=rw------,values=1,min=0,max=1,step=0 amixer: Control
hw:2 element read error: Invalid argument
>> >>
>> >> numid=8,iface=MIXER,name='PCM Volume',index=3 ;
type=INTEGER,access=rw------,values=1,min=0,max=1,step=0 amixer: Control
hw:2 element read error: Invalid argument
>> >>
>> >> numid=9,iface=MIXER,name='PCM Volume',index=4 ;
type=INTEGER,access=rw------,values=1,min=0,max=1,step=0 amixer: Control
hw:2 element read error: Invalid argument
>> >>
>> >> >       AudioControl Interface Descriptor:
>> >> >         bLength                13
>> >> >         bDescriptorType        36
>> >> >         bDescriptorSubtype      4 (MIXER_UNIT)
>> >> >       Warning: Descriptor too short
>> >> >         bUnitID                10
>> >> >         bNrInPins               2
>> >> >         baSourceID( 0)          9
>> >> >         baSourceID( 1)          1
>> >> >         bNrChannels            8
>> >> >         wChannelConfig     0x063f
>> >> >           Left Front (L)
>> >> >           Right Front (R)
>> >> >           Center Front (C)
>> >> >           Low Freqency Enhancement (LFE)
>> >> >           Left Surround (LS)
>> >> >           Right Surround (RS)
>> >> >           Side Left (SL)
>> >> >           Side Right (SR)
>> >> >         iChannelNames           0
>> >> >         bmControls         0x00
>> >> >         bmControls         0x00
>> >> >         iMixer                 33 (error)

Refer to usb audio specification 1.0

Table 4-5: Mixer Unit Descriptor

bLength = 10 +  p +  N = 14

Number of Input Pins of this Unit: p

> >> >         bNrInPins               2

The ID of the Unit or Terminal to which the first and second Input Pins of
this Mixer Unit is connected.

> >> >         baSourceID( 0)          9
>> >> >         baSourceID( 1)          1

Number of logical output channels in the Mixer’s output audio channel
cluster.

>> >> >         bNrChannels            8

Describes the spatial location of the logical channels.

>> >> >         wChannelConfig     0x063f
>> >> >           Left Front (L)
>> >> >           Right Front (R)
>> >> >           Center Front (C)
>> >> >           Low Freqency Enhancement (LFE)
>> >> >           Left Surround (LS)
>> >> >           Right Surround (RS)
>> >> >           Side Left (SL)
>> >> >           Side Right (SR)

Bit map indicating which mixing Controls are programmable.

>> >> >         bmControls         0x00
>> >> >         bmControls         0x00

The Mixer Unit Descriptor reports which Controls are programmable in the
bmControls bitmap field. This bitmap must be interpreted as a
two-dimensional bit array that has a row for each logical input channel and
a column for each logical output channel. If a bit at position [u, v] is
set, this means that the Mixer Unit contains a programmable mixing Control
that connects input channel u to output channel v. If bit [u, v] is clear,
this indicates that the connection between input channel u and output
channel v is non-programmable. Its fixed value can be retrieved through the
appropriate request. The valid range for u is from one to n. The valid
range for v is from one to m.

The bmControls field stores the bit array row after row where the MSb of
the first byte corresponds to the connection between input channel 1 and
output channel 1. If (n x m) is not an integer multiple of 8, the bit array
is padded with zeros until an integer number of bytes is occupied.

The number of bytes used to store the bit array, N, can be calculated as
follows:
IF ((n x m) MOD 8) <> 0 THEN
N = ((n x m) DIV 8) + 1
ELSE
N = ((n x m) DIV 8)

Index of a string descriptor, describing the name of the first logical
channel.

>> >         iChannelNames           0

Index of a string descriptor, describing the Mixer Unit.

>> >> >         iMixer                 33

>>
>>
>> if (check_matrix_bitmap(c, ich, och, num_outs)) {
>> ich_has_controls = 1;
>> break;
>> }
>> }

This mean value returned by check_matrix_bitmap() is incorrect as

>> >> >         bmControls         0x00
>> >> >         bmControls         0x00

>> if (ich_has_controls)
>> build_mixer_unit_ctl(state, desc, pin, ich,
>>      unitid, &iterm);
>> }
>> }
>> return 0;
>> }
>
>


More information about the Alsa-devel mailing list