Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* focusrite scarlett 18i20 : Mixer controls with corrupted names for
@ 2019-06-22 20:55 Stefan Sauer
  2019-06-22 21:17 ` Stefan Sauer
  2019-06-25  7:54 ` Takashi Iwai
  0 siblings, 2 replies; 9+ messages in thread
From: Stefan Sauer @ 2019-06-22 20:55 UTC (permalink / raw)
  To: alsa-devel

Hi,

when I run
amixer -D hw:4 controls | sort -n -t = -k2

I get the output below

numid=1,iface=MIXER,name='KKKKKKKKKKKKKÃÃÃÃÃÃÃÃÃÃÃ Switch'
numid=2,iface=CARD,name='Internal Validity'
numid=3,iface=CARD,name='S/PDIF Validity'
numid=4,iface=CARD,name='ADAT Validity'
numid=5,iface=MIXER,name='Scarlett 18i20 USB-Sync Clock Source'
numid=6,iface=MIXER,name=' Switch'
numid=7,iface=CARD,name='Keep Interface'
numid=8,iface=MIXER,name='Master Playback Switch'
numid=9,iface=MIXER,name='Master Playback Volume'
numid=10,iface=MIXER,name='Master 1 (Monitor) Playback Switch'
numid=11,iface=MIXER,name='Master 1 (Monitor) Playback Volume'
... lots of extra lines ...

Please note the lines for numid=1 and numid=6. The first one contains some
garbage and the 2nd one look like it should start with another word.

I now added some debug printing here:
https://github.com/torvalds/linux/blob/master/sound/usb/mixer_scarlett.c#L562

and get output in dmesg:
[ 2971.642137] usb 1-2: Product: Scarlett 18i20 USB
[ 2971.642141] usb 1-2: Manufacturer: Focusrite
[ 2971.709773] new ctrl: name='Master Playback Switch', index=10, offset=1,
num=0: numid=8
[ 2971.709781] new ctrl: name='Master Playback Volume', index=10, offset=2,
num=0: numid=9
[ 2971.709788] new ctrl: name='Master 1 (Monitor) Playback Switch', index=10,
offset=1, num=1: numid=10

So the first 8 controls are added somewhere else. Looks like this is from
mixer.c and after
echo -n 'file sound/usb/mixer.c +p' >/sys/kernel/debug/dynamic_debug/control
I get
[ 4405.855432] usb 1-2: [51] PU [KKKKKKKKKKKKKÃÃÃÃÃÃÃÃÃÃÃ Switch] ch = 1, val = 0/1
[ 4405.856423] usb 1-2: [52] PU [ Switch] ch = 1, val = 0/1

I now added more debug prints into
https://github.com/torvalds/linux/blob/master/sound/usb/mixer.c#L2431
and its the code that calls snd_usb_copy_string_desc()
[ 5750.124123] usb 1-2: nameid=90, len=35
[ 5750.124157] usb 1-2: [51] PU [KKKKKKKKKKKKKÃÃÃÃÃÃÃÃÃÃÃ Switch] ch = 1, val = 0/1
[ 5750.125241] usb 1-2: nameid=82, len=1
[ 5750.125260] usb 1-2: [52] PU [ Switch] ch = 1, val = 0/1

In both cases the returned len seems wrong and the function does not seems to
copy any useful string here. snd_usb_copy_string_desc() is just a wrapper around
usb_string().

Is my hardware returning bogus data in usb descriptors? Can this be address
through some quirks table? Any other ideas?

Thanks!
Stefan
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-06-29 15:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-22 20:55 focusrite scarlett 18i20 : Mixer controls with corrupted names for Stefan Sauer
2019-06-22 21:17 ` Stefan Sauer
2019-06-23 11:28   ` Stefan Sauer
2019-06-25  7:54 ` Takashi Iwai
2019-06-26 20:06   ` Stefan Sauer
2019-06-26 20:13     ` Stefan Sauer
2019-06-26 21:42     ` Takashi Iwai
2019-06-29 12:32       ` Stefan Sauer
2019-06-29 15:31         ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox