[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