Re: Fwd: missing input volume controls in MAYA44 USB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Clemens.
I tested the patch you sent me and it works perfectly.
I am now able to change the volume of capture!
I add a little more information:
Alsamixer in the playback section shows three volume controls:
- Master: Controls the playback volume of the 4 outputs at the same time.
- Line0: I thought this controlled the volume of the first pair of stereo playback, but does not. It seems that controls the playback level of the capture, the playback volume of what is being recorded. For me it is useless, but it exists. When recording with these controls at high volume, I listen a little feedback noise.
- Line1: same as line 0 but for the second stereo pair.

Alsamixer, in the capture section, only shows a control LINE. This controls the volume of the capture for all capture channels, which is what I needed. It controls the 4 channels at same time, you cannot adjust the capture volume individually for each channel.

I add amixer output:

mint mint # amixer -c 2
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.99dB] [on]
  Front Right: Playback 255 [100%] [0.99dB] [on]
Simple mixer control 'Line',0
  Capabilities: pvolume cvolume pswitch pswitch-joined cswitch cswitch-joined
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 255 Capture 0 - 255
  Front Left: Playback 255 [100%] [0.99dB] [off] Capture 221 [87%] [0.85dB] [on]
  Front Right: Playback 255 [100%] [0.99dB] [off] Capture 221 [87%] [0.85dB] [on]
Simple mixer control 'Line',1
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.99dB] [off]
  Front Right: Playback 255 [100%] [0.99dB] [off]

mint mint # amixer -c 2 controls
numid=7,iface=MIXER,name='Master Playback Switch'
numid=8,iface=MIXER,name='Master Playback Volume'
numid=3,iface=MIXER,name='Line Playback Switch'
numid=5,iface=MIXER,name='Line Playback Switch',index=1
numid=4,iface=MIXER,name='Line Playback Volume'
numid=6,iface=MIXER,name='Line Playback Volume',index=1
numid=9,iface=MIXER,name='Line Capture Switch'
numid=10,iface=MIXER,name='Line Capture Volume'
numid=2,iface=PCM,name='Capture Channel Map'
numid=1,iface=PCM,name='Playback Channel Map'


You can include this patch in the Linux kernel, and thus no need to patch each kernel individually?


Finally, Clemens thanks for your help and your time, I really appreciate it.
I'm happy with my "new" sound card!

Greetings.





2015-05-22 4:37 GMT-03:00 Clemens Ladisch <cladisch@xxxxxxxxxxxxxx>:
nightmixes wrote:
> kernel: usb 3-2: [4] FU [Line Playback Switch] ch = 1, val = 0/1/1
> kernel: usb 3-2: [4] FU [Line Playback Volume] ch = 2, val = 0/255/1
> kernel: usb 3-2: [2] FU [Line Playback Switch] ch = 1, val = 0/1/1
> kernel: usb 3-2: [2] FU [Line Playback Volume] ch = 2, val = 0/255/1
> kernel: usb 3-2: [7] FU [Master Playback Switch] ch = 1, val = 0/1/1
> kernel: usb 3-2: [7] FU [Master Playback Volume] ch = 2, val = 0/255/1
> kernel: usb 3-2: MU 11 has no bmControls field

There's the culprit.  Ignoring mixer unit 11 also ignores all other
units connected as sources.

Try moving the bmControls check until after the source units have
been parsed, as in the patch below.


Regards,
Clemens


--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1582,18 +1582,15 @@ static int parse_audio_mixer_unit(struct
                              unitid);
                return -EINVAL;
        }
-       /* no bmControls field (e.g. Maya44) -> ignore */
-       if (desc->bLength <= 10 + input_pins) {
-               usb_audio_dbg(state->chip, "MU %d has no bmControls field\n",
-                             unitid);
-               return 0;
-       }

        num_ins = 0;
        ich = 0;
        for (pin = 0; pin < input_pins; pin++) {
                err = parse_audio_unit(state, desc->baSourceID[pin]);
                if (err < 0)
                        continue;
+               /* no bmControls field (e.g. Maya44) -> ignore */
+               if (desc->bLength <= 10 + input_pins)
+                       continue;
                err = check_input_term(state, desc->baSourceID[pin], &iterm);
                if (err < 0)

------------------------------------------------------------------------------
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux