[alsa-devel] snd_usb_audio - siberia elite prism soundcard issues
Daniel
dferradal at gmail.com
Fri Mar 13 12:52:08 CET 2015
2015-03-12 2:10 GMT+01:00 Raymond Yau <superquad.vortex2 at gmail.com>:
>
> >> >>
> >> >> >> > >
> >> >> >> > > > 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;
> >> }
> >
> >
>
In case this can be of any useful info, in the form of unknown controls
reported by the lsusb output, manufacturer software in other OS has
controls for:
* dolby surround activation (off and on).
* microphone input volume (which works fine now) in snd_usb_audio
* microphone input "compression" (supposedly to keep input within certain
non distorting levels)
* input noise reduction (off and on too)
* micro retro feedback volume
* equalizer.
Thanks for your time.
--
*Daniel Ferradal*
More information about the Alsa-devel
mailing list