x42/scarlett-mixer

Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.

Closed this issue · 46 comments

kujaw commented

I'm trying to run this mixer in Arch but without success.

4.14.15-1-ARCH #1 SMP PREEMPT Tue Jan 23 21:49:25 UTC 2018 x86_64 GNU/Linux

$ ./scarlett-mixer hw:2
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)

I think I have all the libraries needed. Libpango and libcairo is named pango and cairo in Arch.

Any idea what could cause this?

x42 commented

What soundcard is that? Could run scarlett-mixer -p and paste the output here?

That assertion is due to a mismatched control-layout. Some GUI knob expects to control an enumerated value on the soundcard that is not present. So far not all scarlet devices are supported, in particular the 6i6 is mostly guesswork and hasn't been tested, yet.

kujaw commented

Scarlett 18i8 1st gen.

$ ./scarlett-mixer -p
Device Scarlett 18i8 USB' has 205 contols: 
 0 Master, PBS
 1 Master 1 (Monitor), PBS
 2 Master 1L (Monitor) Source, ENUM
 3 Master 1R (Monitor) Source, ENUM
 4 Master 2 (Headphone 1), PBS
 5 Master 2L (Headphone 1) Source Playback Enu, ENUM
 6 Master 2R (Headphone 1) Source Playback Enu, ENUM
 7 Master 3 (Headphone 2), PBS
 8 Master 3L (Headphone 2) Source Playback Enu, ENUM
 9 Master 3R (Headphone 2) Source Playback Enu, ENUM
 10 Master 4 (SPDIF), PBS
 11 Master 4L (SPDIF) Source, ENUM
 12 Master 4R (SPDIF) Source, ENUM
 13 ADAT Validity, PBS
 14 Input 1 Impedance, ENUM
 15 Input 1 Pad, ENUM
 16 Input 2 Impedance, ENUM
 17 Input 2 Pad, ENUM
 18 Input 3 Pad, ENUM
 19 Input 4 Pad, ENUM
 20 Input Source 01, ENUM
 21 Input Source 02, ENUM
 22 Input Source 03, ENUM
 23 Input Source 04, ENUM
 24 Input Source 05, ENUM
 25 Input Source 06, ENUM
 26 Input Source 07, ENUM
 27 Input Source 08, ENUM
 28 Input Source 09, ENUM
 29 Input Source 10, ENUM
 30 Input Source 11, ENUM
 31 Input Source 12, ENUM
 32 Input Source 13, ENUM
 33 Input Source 14, ENUM
 34 Input Source 15, ENUM
 35 Input Source 16, ENUM
 36 Input Source 17, ENUM
 37 Input Source 18, ENUM
 38 Internal Validity, PBS
 39 Matrix 01 Input, ENUM
 40 Matrix 01 Mix A
 41 Matrix 01 Mix B
 42 Matrix 01 Mix C
 43 Matrix 01 Mix D
 44 Matrix 01 Mix E
 45 Matrix 01 Mix F
 46 Matrix 01 Mix G
 47 Matrix 01 Mix H
 48 Matrix 02 Input, ENUM
 49 Matrix 02 Mix A
 50 Matrix 02 Mix B
 51 Matrix 02 Mix C
 52 Matrix 02 Mix D
 53 Matrix 02 Mix E
 54 Matrix 02 Mix F
 55 Matrix 02 Mix G
 56 Matrix 02 Mix H
 57 Matrix 03 Input, ENUM
 58 Matrix 03 Mix A
 59 Matrix 03 Mix B
 60 Matrix 03 Mix C
 61 Matrix 03 Mix D
 62 Matrix 03 Mix E
 63 Matrix 03 Mix F
 64 Matrix 03 Mix G
 65 Matrix 03 Mix H
 66 Matrix 04 Input, ENUM
 67 Matrix 04 Mix A
 68 Matrix 04 Mix B
 69 Matrix 04 Mix C
 70 Matrix 04 Mix D
 71 Matrix 04 Mix E
 72 Matrix 04 Mix F
 73 Matrix 04 Mix G
 74 Matrix 04 Mix H
 75 Matrix 05 Input, ENUM
 76 Matrix 05 Mix A
 77 Matrix 05 Mix B
 78 Matrix 05 Mix C
 79 Matrix 05 Mix D
 80 Matrix 05 Mix E
 81 Matrix 05 Mix F
 82 Matrix 05 Mix G
 83 Matrix 05 Mix H
 84 Matrix 06 Input, ENUM
 85 Matrix 06 Mix A
 86 Matrix 06 Mix B
 87 Matrix 06 Mix C
 88 Matrix 06 Mix D
 89 Matrix 06 Mix E
 90 Matrix 06 Mix F
 91 Matrix 06 Mix G
 92 Matrix 06 Mix H
 93 Matrix 07 Input, ENUM
 94 Matrix 07 Mix A
 95 Matrix 07 Mix B
 96 Matrix 07 Mix C
 97 Matrix 07 Mix D
 98 Matrix 07 Mix E
 99 Matrix 07 Mix F
 100 Matrix 07 Mix G
 101 Matrix 07 Mix H
 102 Matrix 08 Input, ENUM
 103 Matrix 08 Mix A
 104 Matrix 08 Mix B
 105 Matrix 08 Mix C
 106 Matrix 08 Mix D
 107 Matrix 08 Mix E
 108 Matrix 08 Mix F
 109 Matrix 08 Mix G
 110 Matrix 08 Mix H
 111 Matrix 09 Input, ENUM
 112 Matrix 09 Mix A
 113 Matrix 09 Mix B
 114 Matrix 09 Mix C
 115 Matrix 09 Mix D
 116 Matrix 09 Mix E
 117 Matrix 09 Mix F
 118 Matrix 09 Mix G
 119 Matrix 09 Mix H
 120 Matrix 10 Input, ENUM
 121 Matrix 10 Mix A
 122 Matrix 10 Mix B
 123 Matrix 10 Mix C
 124 Matrix 10 Mix D
 125 Matrix 10 Mix E
 126 Matrix 10 Mix F
 127 Matrix 10 Mix G
 128 Matrix 10 Mix H
 129 Matrix 11 Input, ENUM
 130 Matrix 11 Mix A
 131 Matrix 11 Mix B
 132 Matrix 11 Mix C
 133 Matrix 11 Mix D
 134 Matrix 11 Mix E
 135 Matrix 11 Mix F
 136 Matrix 11 Mix G
 137 Matrix 11 Mix H
 138 Matrix 12 Input, ENUM
 139 Matrix 12 Mix A
 140 Matrix 12 Mix B
 141 Matrix 12 Mix C
 142 Matrix 12 Mix D
 143 Matrix 12 Mix E
 144 Matrix 12 Mix F
 145 Matrix 12 Mix G
 146 Matrix 12 Mix H
 147 Matrix 13 Input, ENUM
 148 Matrix 13 Mix A
 149 Matrix 13 Mix B
 150 Matrix 13 Mix C
 151 Matrix 13 Mix D
 152 Matrix 13 Mix E
 153 Matrix 13 Mix F
 154 Matrix 13 Mix G
 155 Matrix 13 Mix H
 156 Matrix 14 Input, ENUM
 157 Matrix 14 Mix A
 158 Matrix 14 Mix B
 159 Matrix 14 Mix C
 160 Matrix 14 Mix D
 161 Matrix 14 Mix E
 162 Matrix 14 Mix F
 163 Matrix 14 Mix G
 164 Matrix 14 Mix H
 165 Matrix 15 Input, ENUM
 166 Matrix 15 Mix A
 167 Matrix 15 Mix B
 168 Matrix 15 Mix C
 169 Matrix 15 Mix D
 170 Matrix 15 Mix E
 171 Matrix 15 Mix F
 172 Matrix 15 Mix G
 173 Matrix 15 Mix H
 174 Matrix 16 Input, ENUM
 175 Matrix 16 Mix A
 176 Matrix 16 Mix B
 177 Matrix 16 Mix C
 178 Matrix 16 Mix D
 179 Matrix 16 Mix E
 180 Matrix 16 Mix F
 181 Matrix 16 Mix G
 182 Matrix 16 Mix H
 183 Matrix 17 Input, ENUM
 184 Matrix 17 Mix A
 185 Matrix 17 Mix B
 186 Matrix 17 Mix C
 187 Matrix 17 Mix D
 188 Matrix 17 Mix E
 189 Matrix 17 Mix F
 190 Matrix 17 Mix G
 191 Matrix 17 Mix H
 192 Matrix 18 Input, ENUM
 193 Matrix 18 Mix A
 194 Matrix 18 Mix B
 195 Matrix 18 Mix C
 196 Matrix 18 Mix D
 197 Matrix 18 Mix E
 198 Matrix 18 Mix F
 199 Matrix 18 Mix G
 200 Matrix 18 Mix H
 201 S/PDIF Validity, PBS
 202 Sample Clock Source, ENUM
 203 Sample Clock Sync Status, ENUM
 204 Scarlett 18i8 USB-Sync Clock Source, ENUM
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)`

PS
Thanks a lot for your work 8)

x42 commented

@matze looks like that mapping is offset by one after 13 ADAT Validity, PBS and by two after 38 Internal Validity, PBS compared to your map (#2) for the 18i8. Does the current git-version still work on your machine? What kernel-version/driver are you running?

I've never seen any Internal Validity playback/input-switches and I certainly did not add those to the kernel driver when I wrote it, nor can I find it in current vanilla linux (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/usb/mixer_scarlett.c) Perhaps this is something Arch specific?

I'm not yet sure how to resolve this, perhaps instead of hardcoding IDs, the proper way would be to look up some specific names for offsets.

matze commented

Yes, HEAD worked for me fine but let me check again tonight and also what versions I am running.

I'm not yet sure how to resolve this, perhaps instead of hardcoding IDs, the proper way would be to look up some specific names for offsets.

That was my initial idea when I was restructuring it but then I assumed things are fixed in a static way at the driver-level …

matze commented

Still works. I run the stock Ubuntu 16.04 kernel which is currently at 4.4.0.

kujaw commented

I get same issue with 4.13.0-32-lowlatency #35-Ubuntu SMP PREEMPT Thu Jan 25 10:36:35 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux (Ubuntu Studio 17.10).

$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf4a00000 irq 26
 1 [USB            ]: USB-Audio - Scarlett 18i8 USB
                      Focusrite Scarlett 18i8 USB at usb-0000:00:1d.7-5, high speed

Scarlett is recognized as hw:1, not hw:2, so

$ ./scarlett-mixer hw:1
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)

$ ./scarlett-mixer hw:1 -p on 4.13.0-32-lowlatency #35-Ubuntu SMP PREEMPT gave me same output as on 4.14.15-1-ARCH #1 SMP PREEMPT.
Looks like ./scarlett-mixer -p searches for device only in hw:2, can't execute it.

Looks like it's not arch specific, more like some changes in newer linux kernel (I'm no dev so I can only imagine).

kujaw commented

Reverted to 4.4.0-98-generic #121-Ubuntu SMP , now it works.

edit:

$ ./scarlett-mixer hw:1 -p
Device `Scarlett 18i8 USB' has 202 contols: 
 0 Master, PBS
 1 Master 1 (Monitor), PBS
 2 Master 1L (Monitor) Source, ENUM
 3 Master 1R (Monitor) Source, ENUM
 4 Master 2 (Headphone 1), PBS
 5 Master 2L (Headphone 1) Source Playback Enu, ENUM
 6 Master 2R (Headphone 1) Source Playback Enu, ENUM
 7 Master 3 (Headphone 2), PBS
 8 Master 3L (Headphone 2) Source Playback Enu, ENUM
 9 Master 3R (Headphone 2) Source Playback Enu, ENUM
 10 Master 4 (SPDIF), PBS
 11 Master 4L (SPDIF) Source, ENUM
 12 Master 4R (SPDIF) Source, ENUM
 13 Input 1 Impedance, ENUM
 14 Input 1 Pad, ENUM
 15 Input 2 Impedance, ENUM
 16 Input 2 Pad, ENUM
 17 Input 3 Pad, ENUM
 18 Input 4 Pad, ENUM
 19 Input Source 01, ENUM
 20 Input Source 02, ENUM
 21 Input Source 03, ENUM
 22 Input Source 04, ENUM
 23 Input Source 05, ENUM
 24 Input Source 06, ENUM
 25 Input Source 07, ENUM
 26 Input Source 08, ENUM
 27 Input Source 09, ENUM
 28 Input Source 10, ENUM
 29 Input Source 11, ENUM
 30 Input Source 12, ENUM
 31 Input Source 13, ENUM
 32 Input Source 14, ENUM
 33 Input Source 15, ENUM
 34 Input Source 16, ENUM
 35 Input Source 17, ENUM
 36 Input Source 18, ENUM
 37 Matrix 01 Input, ENUM
 38 Matrix 01 Mix A
 39 Matrix 01 Mix B
 40 Matrix 01 Mix C
 41 Matrix 01 Mix D
 42 Matrix 01 Mix E
 43 Matrix 01 Mix F
 44 Matrix 01 Mix G
 45 Matrix 01 Mix H
 46 Matrix 02 Input, ENUM
 47 Matrix 02 Mix A
 48 Matrix 02 Mix B
 49 Matrix 02 Mix C
 50 Matrix 02 Mix D
 51 Matrix 02 Mix E
 52 Matrix 02 Mix F
 53 Matrix 02 Mix G
 54 Matrix 02 Mix H
 55 Matrix 03 Input, ENUM
 56 Matrix 03 Mix A
 57 Matrix 03 Mix B
 58 Matrix 03 Mix C
 59 Matrix 03 Mix D
 60 Matrix 03 Mix E
 61 Matrix 03 Mix F
 62 Matrix 03 Mix G
 63 Matrix 03 Mix H
 64 Matrix 04 Input, ENUM
 65 Matrix 04 Mix A
 66 Matrix 04 Mix B
 67 Matrix 04 Mix C
 68 Matrix 04 Mix D
 69 Matrix 04 Mix E
 70 Matrix 04 Mix F
 71 Matrix 04 Mix G
 72 Matrix 04 Mix H
 73 Matrix 05 Input, ENUM
 74 Matrix 05 Mix A
 75 Matrix 05 Mix B
 76 Matrix 05 Mix C
 77 Matrix 05 Mix D
 78 Matrix 05 Mix E
 79 Matrix 05 Mix F
 80 Matrix 05 Mix G
 81 Matrix 05 Mix H
 82 Matrix 06 Input, ENUM
 83 Matrix 06 Mix A
 84 Matrix 06 Mix B
 85 Matrix 06 Mix C
 86 Matrix 06 Mix D
 87 Matrix 06 Mix E
 88 Matrix 06 Mix F
 89 Matrix 06 Mix G
 90 Matrix 06 Mix H
 91 Matrix 07 Input, ENUM
 92 Matrix 07 Mix A
 93 Matrix 07 Mix B
 94 Matrix 07 Mix C
 95 Matrix 07 Mix D
 96 Matrix 07 Mix E
 97 Matrix 07 Mix F
 98 Matrix 07 Mix G
 99 Matrix 07 Mix H
 100 Matrix 08 Input, ENUM
 101 Matrix 08 Mix A
 102 Matrix 08 Mix B
 103 Matrix 08 Mix C
 104 Matrix 08 Mix D
 105 Matrix 08 Mix E
 106 Matrix 08 Mix F
 107 Matrix 08 Mix G
 108 Matrix 08 Mix H
 109 Matrix 09 Input, ENUM
 110 Matrix 09 Mix A
 111 Matrix 09 Mix B
 112 Matrix 09 Mix C
 113 Matrix 09 Mix D
 114 Matrix 09 Mix E
 115 Matrix 09 Mix F
 116 Matrix 09 Mix G
 117 Matrix 09 Mix H
 118 Matrix 10 Input, ENUM
 119 Matrix 10 Mix A
 120 Matrix 10 Mix B
 121 Matrix 10 Mix C
 122 Matrix 10 Mix D
 123 Matrix 10 Mix E
 124 Matrix 10 Mix F
 125 Matrix 10 Mix G
 126 Matrix 10 Mix H
 127 Matrix 11 Input, ENUM
 128 Matrix 11 Mix A
 129 Matrix 11 Mix B
 130 Matrix 11 Mix C
 131 Matrix 11 Mix D
 132 Matrix 11 Mix E
 133 Matrix 11 Mix F
 134 Matrix 11 Mix G
 135 Matrix 11 Mix H
 136 Matrix 12 Input, ENUM
 137 Matrix 12 Mix A
 138 Matrix 12 Mix B
 139 Matrix 12 Mix C
 140 Matrix 12 Mix D
 141 Matrix 12 Mix E
 142 Matrix 12 Mix F
 143 Matrix 12 Mix G
 144 Matrix 12 Mix H
 145 Matrix 13 Input, ENUM
 146 Matrix 13 Mix A
 147 Matrix 13 Mix B
 148 Matrix 13 Mix C
 149 Matrix 13 Mix D
 150 Matrix 13 Mix E
 151 Matrix 13 Mix F
 152 Matrix 13 Mix G
 153 Matrix 13 Mix H
 154 Matrix 14 Input, ENUM
 155 Matrix 14 Mix A
 156 Matrix 14 Mix B
 157 Matrix 14 Mix C
 158 Matrix 14 Mix D
 159 Matrix 14 Mix E
 160 Matrix 14 Mix F
 161 Matrix 14 Mix G
 162 Matrix 14 Mix H
 163 Matrix 15 Input, ENUM
 164 Matrix 15 Mix A
 165 Matrix 15 Mix B
 166 Matrix 15 Mix C
 167 Matrix 15 Mix D
 168 Matrix 15 Mix E
 169 Matrix 15 Mix F
 170 Matrix 15 Mix G
 171 Matrix 15 Mix H
 172 Matrix 16 Input, ENUM
 173 Matrix 16 Mix A
 174 Matrix 16 Mix B
 175 Matrix 16 Mix C
 176 Matrix 16 Mix D
 177 Matrix 16 Mix E
 178 Matrix 16 Mix F
 179 Matrix 16 Mix G
 180 Matrix 16 Mix H
 181 Matrix 17 Input, ENUM
 182 Matrix 17 Mix A
 183 Matrix 17 Mix B
 184 Matrix 17 Mix C
 185 Matrix 17 Mix D
 186 Matrix 17 Mix E
 187 Matrix 17 Mix F
 188 Matrix 17 Mix G
 189 Matrix 17 Mix H
 190 Matrix 18 Input, ENUM
 191 Matrix 18 Mix A
 192 Matrix 18 Mix B
 193 Matrix 18 Mix C
 194 Matrix 18 Mix D
 195 Matrix 18 Mix E
 196 Matrix 18 Mix F
 197 Matrix 18 Mix G
 198 Matrix 18 Mix H
 199 Sample Clock Source, ENUM
 200 Sample Clock Sync Status, ENUM
 201 Scarlett 18i8 USB-Sync, ENUM

Interesting, I'm hitting the same assertion but with way fewer controls:

$ ./scarlett-mixer -p hw:1
Device `Scarlett 18i20 USB' has 4 contols: 
 0 ADAT Validity, PBS
 1 Clock Source Clock Source, ENUM
 2 Internal Validity, PBS
 3 S/PDIF Validity, PBS
scarlett-mixer: simple.c:914: snd_mixer_selem_get_enum_items: Assertion `elem' failed.
Aborted

I'm running Debian Stretch, here's some kernel info:

$ uname -a
Linux ringo 4.9.0-6-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.82-1+deb9u2 (2018-02-21) x86_64 GNU/Linux
[    3.341751] usb 3-3.3: new low-speed USB device number 4 using ohci-pci
[    3.354798] usb 1-4: New USB device found, idVendor=1235, idProduct=8201
[    3.354800] usb 1-4: New USB device strings: Mfr=1, Product=3, SerialNumber=2
[    3.354802] usb 1-4: Product: Scarlett 18i20 USB
[    3.354803] usb 1-4: Manufacturer: Focusrite
[    3.354804] usb 1-4: SerialNumber: 00011988

I tried with the 4.14 backport kernel as well, got the same result.

I can record fine on multi tracks with Audacity, but I'd like to configure the internal mixer for monitoring etc...

Any idea what I may be missing?

Hello. I 'm having the same issue with the 4.15.5 kernel.

$ uname -a
Linux roadwarrior.x 4.4.114-42-default #1 SMP Tue Feb 6 10:58:10 UTC 2018 (b6ee9ae) x86_64 x86_64 x86_64 GNU/Linux
$ ./scarlett-mixer hw:2
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
 Aborted (core dumped)

Booting with the default 4.4 for OpenSuse Leap 42.3 the application runs fine. I have a Scarlett 18i8 (1st Gen apparently).

18i8.txt

x42 commented

@gctucker Looks like you do have a 2nd generation or some device that is not supported by the dedicated mixer-driver in Linux.

@x42 OK thanks will check the USB device IDs. Might be something I can fix ;)

Using Ardour "software" monitoring works but I have a few ms latency, would be better with hw mixer I guess.

@gctucker FYI, 2nd Gen Scarletts are not supported by ALSA in terms of their on-board mixer and direct monitoring. Unfortunately, Focusrite has changed that bit of their Scarlett hardware.

kujaw commented

I've just found that the latest kernel the scarlett-mixer can run on is 4.6.5-1ARCH
Many kernels after this one doesn't support this app. Just in case this info may help.

x42 commented

Just to be clear: it's unlikely that I will address this issue. I only ever intended this project for personal use. You're on your own there. I'm sorry.

The indices are numerically hardcoded and match upstream (vanilla) Linux. Works for me with 4.14.13.

For kernels that do have those Validity switches, you'll have to add offsets for those in static Device devices[]... or rewrite the project to use names instead of indices.

Hi Robin,
could you please give a concrete example of what we have to change ? i'm trying to change stuff in scarlett_mixer.c for my 18i8, but can't figure what you mean by "add offsets" (as i'm not a programmer :-/)
thks

18i20 Gen 1
Ubuntu 18.04 low-latency
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)

Linux H3U1 4.15.0-23-lowlatency #25-Ubuntu SMP PREEMPT Wed May 23 20:39:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Device `Scarlett 18i20 USB' has 219 contols:
0 Master, PBS
1 Master 1 (Monitor), PBS
2 Master 10 (ADAT 7/8), PBS
3 Master 10L (ADAT 7/8) Source, ENUM
4 Master 10R (ADAT 7/8) Source, ENUM
5 Master 1L (Monitor) Source, ENUM
6 Master 1R (Monitor) Source, ENUM
7 Master 2 (Line 3/4), PBS
8 Master 2L (Line 3/4) Source, ENUM
9 Master 2R (Line 3/4) Source, ENUM
10 Master 3 (Line 5/6), PBS
11 Master 3L (Line 5/6) Source, ENUM
12 Master 3R (Line 5/6) Source, ENUM
13 Master 4 (Line 7/8), PBS
14 Master 4L (Line 7/8) Source, ENUM
15 Master 4R (Line 7/8) Source, ENUM
16 Master 5 (Line 9/10), PBS
17 Master 5L (Line 9/10) Source, ENUM
18 Master 5R (Line 9/10) Source, ENUM
19 Master 6 (SPDIF), PBS
20 Master 6L (SPDIF) Source, ENUM
21 Master 6R (SPDIF) Source, ENUM
22 Master 7 (ADAT 1/2), PBS
23 Master 7L (ADAT 1/2) Source, ENUM
24 Master 7R (ADAT 1/2) Source, ENUM
25 Master 8 (ADAT 3/4), PBS
26 Master 8L (ADAT 3/4) Source, ENUM
27 Master 8R (ADAT 3/4) Source, ENUM
28 Master 9 (ADAT 5/6), PBS
29 Master 9L (ADAT 5/6) Source, ENUM
30 Master 9R (ADAT 5/6) Source, ENUM
31 , PBS
32 ADAT Validity, PBS
33 Input Source 01, ENUM
34 Input Source 02, ENUM
35 Input Source 03, ENUM
36 Input Source 04, ENUM
37 Input Source 05, ENUM
38 Input Source 06, ENUM
39 Input Source 07, ENUM
40 Input Source 08, ENUM
41 Input Source 09, ENUM
42 Input Source 10, ENUM
43 Input Source 11, ENUM
44 Input Source 12, ENUM
45 Input Source 13, ENUM
46 Input Source 14, ENUM
47 Input Source 15, ENUM
48 Input Source 16, ENUM
49 Input Source 17, ENUM
50 Input Source 18, ENUM
51 Internal Validity, PBS
52 KKKKKKKKKKKKKKKKKÃÃÃÃÃÃÃÃÃÃÃ Swi, PBS
53 Matrix 01 Input, ENUM
54 Matrix 01 Mix A
55 Matrix 01 Mix B
56 Matrix 01 Mix C
57 Matrix 01 Mix D
58 Matrix 01 Mix E
59 Matrix 01 Mix F
60 Matrix 01 Mix G
61 Matrix 01 Mix H
62 Matrix 02 Input, ENUM
63 Matrix 02 Mix A
64 Matrix 02 Mix B
65 Matrix 02 Mix C
66 Matrix 02 Mix D
67 Matrix 02 Mix E
68 Matrix 02 Mix F
69 Matrix 02 Mix G
70 Matrix 02 Mix H
71 Matrix 03 Input, ENUM
72 Matrix 03 Mix A
73 Matrix 03 Mix B
74 Matrix 03 Mix C
75 Matrix 03 Mix D
76 Matrix 03 Mix E
77 Matrix 03 Mix F
78 Matrix 03 Mix G
79 Matrix 03 Mix H
80 Matrix 04 Input, ENUM
81 Matrix 04 Mix A
82 Matrix 04 Mix B
83 Matrix 04 Mix C
84 Matrix 04 Mix D
85 Matrix 04 Mix E
86 Matrix 04 Mix F
87 Matrix 04 Mix G
88 Matrix 04 Mix H
89 Matrix 05 Input, ENUM
90 Matrix 05 Mix A
91 Matrix 05 Mix B
92 Matrix 05 Mix C
93 Matrix 05 Mix D
94 Matrix 05 Mix E
95 Matrix 05 Mix F
96 Matrix 05 Mix G
97 Matrix 05 Mix H
98 Matrix 06 Input, ENUM
99 Matrix 06 Mix A
100 Matrix 06 Mix B
101 Matrix 06 Mix C
102 Matrix 06 Mix D
103 Matrix 06 Mix E
104 Matrix 06 Mix F
105 Matrix 06 Mix G
106 Matrix 06 Mix H
107 Matrix 07 Input, ENUM
108 Matrix 07 Mix A
109 Matrix 07 Mix B
110 Matrix 07 Mix C
111 Matrix 07 Mix D
112 Matrix 07 Mix E
113 Matrix 07 Mix F
114 Matrix 07 Mix G
115 Matrix 07 Mix H
116 Matrix 08 Input, ENUM
117 Matrix 08 Mix A
118 Matrix 08 Mix B
119 Matrix 08 Mix C
120 Matrix 08 Mix D
121 Matrix 08 Mix E
122 Matrix 08 Mix F
123 Matrix 08 Mix G
124 Matrix 08 Mix H
125 Matrix 09 Input, ENUM
126 Matrix 09 Mix A
127 Matrix 09 Mix B
128 Matrix 09 Mix C
129 Matrix 09 Mix D
130 Matrix 09 Mix E
131 Matrix 09 Mix F
132 Matrix 09 Mix G
133 Matrix 09 Mix H
134 Matrix 10 Input, ENUM
135 Matrix 10 Mix A
136 Matrix 10 Mix B
137 Matrix 10 Mix C
138 Matrix 10 Mix D
139 Matrix 10 Mix E
140 Matrix 10 Mix F
141 Matrix 10 Mix G
142 Matrix 10 Mix H
143 Matrix 11 Input, ENUM
144 Matrix 11 Mix A
145 Matrix 11 Mix B
146 Matrix 11 Mix C
147 Matrix 11 Mix D
148 Matrix 11 Mix E
149 Matrix 11 Mix F
150 Matrix 11 Mix G
151 Matrix 11 Mix H
152 Matrix 12 Input, ENUM
153 Matrix 12 Mix A
154 Matrix 12 Mix B
155 Matrix 12 Mix C
156 Matrix 12 Mix D
157 Matrix 12 Mix E
158 Matrix 12 Mix F
159 Matrix 12 Mix G
160 Matrix 12 Mix H
161 Matrix 13 Input, ENUM
162 Matrix 13 Mix A
163 Matrix 13 Mix B
164 Matrix 13 Mix C
165 Matrix 13 Mix D
166 Matrix 13 Mix E
167 Matrix 13 Mix F
168 Matrix 13 Mix G
169 Matrix 13 Mix H
170 Matrix 14 Input, ENUM
171 Matrix 14 Mix A
172 Matrix 14 Mix B
173 Matrix 14 Mix C
174 Matrix 14 Mix D
175 Matrix 14 Mix E
176 Matrix 14 Mix F
177 Matrix 14 Mix G
178 Matrix 14 Mix H
179 Matrix 15 Input, ENUM
180 Matrix 15 Mix A
181 Matrix 15 Mix B
182 Matrix 15 Mix C
183 Matrix 15 Mix D
184 Matrix 15 Mix E
185 Matrix 15 Mix F
186 Matrix 15 Mix G
187 Matrix 15 Mix H
188 Matrix 16 Input, ENUM
189 Matrix 16 Mix A
190 Matrix 16 Mix B
191 Matrix 16 Mix C
192 Matrix 16 Mix D
193 Matrix 16 Mix E
194 Matrix 16 Mix F
195 Matrix 16 Mix G
196 Matrix 16 Mix H
197 Matrix 17 Input, ENUM
198 Matrix 17 Mix A
199 Matrix 17 Mix B
200 Matrix 17 Mix C
201 Matrix 17 Mix D
202 Matrix 17 Mix E
203 Matrix 17 Mix F
204 Matrix 17 Mix G
205 Matrix 17 Mix H
206 Matrix 18 Input, ENUM
207 Matrix 18 Mix A
208 Matrix 18 Mix B
209 Matrix 18 Mix C
210 Matrix 18 Mix D
211 Matrix 18 Mix E
212 Matrix 18 Mix F
213 Matrix 18 Mix G
214 Matrix 18 Mix H
215 S/PDIF Validity, PBS
216 Sample Clock Source, ENUM
217 Sample Clock Sync Status, ENUM
218 Scarlett 18i20 USB-Sync Clock Source, ENUM

Debugging ahead... :-)

daeavelwyn , Just spend a few hours to figure out the cause and solution of the same issue on an 18i20 (see the pull request). if you run the program with the -p option and provide the output (as above), I might be able to tell what needs to change for your 18i8 in your environment (having a little bit understanding of the code now). As with with x42 other repos, this is an beautiful tool/GUI compared to Alsamixer and worth maintaining/fixing. Wish someone could add support for the Gen2 in the kernel. :-)

Hi symdeb, sorry for the delay ! I'm not with the 18i8 for now, I will get it back in september (I've lent to a friend ;) ). I will test ASAP.

I have a gen1 6i6 - get similar issues ( I have in the past managed to get a similar older qtscarlett mixer working with it that's somewhere on sourceforge and hasn't been updated for newer qt libs for years).

here is the output

aenertia@kiorewha:~/buildlocal/scarlett-mixer$ ./scarlett-mixer hw:0 -p
Device `Scarlett 6i6 USB' has 189 contols: 
 0 Master, PBS
 1 Master 1 (Monitor), PBS
 2 Master 1L (Monitor) Source, ENUM
 3 Master 1R (Monitor) Source, ENUM
 4 Master 2 (Headphone), PBS
 5 Master 2L (Headphone) Source, ENUM
 6 Master 2R (Headphone) Source, ENUM
 7 Master 3 (SPDIF), PBS
 8 Master 3L (SPDIF) Source, ENUM
 9 Master 3R (SPDIF) Source, ENUM
 10 Line 4, PBS
 11 Mixer Out 8, PBS
 12 Input 1 Impedance, ENUM
 13 Input 1 Pad, ENUM
 14 Input 2 Impedance, ENUM
 15 Input 2 Pad, ENUM
 16 Input 3 Pad, ENUM
 17 Input 4 Pad, ENUM
 18 Input Source 01, ENUM
 19 Input Source 02, ENUM
 20 Input Source 03, ENUM
 21 Input Source 04, ENUM
 22 Input Source 05, ENUM
 23 Input Source 06, ENUM
 24 Matrix 01 Input, ENUM
 25 Matrix 01 Mix A
 26 Matrix 01 Mix B
 27 Matrix 01 Mix C
 28 Matrix 01 Mix D
 29 Matrix 01 Mix E
 30 Matrix 01 Mix F
 31 Matrix 01 Mix G
 32 Matrix 01 Mix H
 33 Matrix 02 Input, ENUM
 34 Matrix 02 Mix A
 35 Matrix 02 Mix B
 36 Matrix 02 Mix C
 37 Matrix 02 Mix D
 38 Matrix 02 Mix E
 39 Matrix 02 Mix F
 40 Matrix 02 Mix G
 41 Matrix 02 Mix H
 42 Matrix 03 Input, ENUM
 43 Matrix 03 Mix A
 44 Matrix 03 Mix B
 45 Matrix 03 Mix C
 46 Matrix 03 Mix D
 47 Matrix 03 Mix E
 48 Matrix 03 Mix F
 49 Matrix 03 Mix G
 50 Matrix 03 Mix H
 51 Matrix 04 Input, ENUM
 52 Matrix 04 Mix A
 53 Matrix 04 Mix B
 54 Matrix 04 Mix C
 55 Matrix 04 Mix D
 56 Matrix 04 Mix E
 57 Matrix 04 Mix F
 58 Matrix 04 Mix G
 59 Matrix 04 Mix H
 60 Matrix 05 Input, ENUM
 61 Matrix 05 Mix A
 62 Matrix 05 Mix B
 63 Matrix 05 Mix C
 64 Matrix 05 Mix D
 65 Matrix 05 Mix E
 66 Matrix 05 Mix F
 67 Matrix 05 Mix G
 68 Matrix 05 Mix H
 69 Matrix 06 Input, ENUM
 70 Matrix 06 Mix A
 71 Matrix 06 Mix B
 72 Matrix 06 Mix C
 73 Matrix 06 Mix D
 74 Matrix 06 Mix E
 75 Matrix 06 Mix F
 76 Matrix 06 Mix G
 77 Matrix 06 Mix H
 78 Matrix 07 Input, ENUM
 79 Matrix 07 Mix A
 80 Matrix 07 Mix B
 81 Matrix 07 Mix C
 82 Matrix 07 Mix D
 83 Matrix 07 Mix E
 84 Matrix 07 Mix F
 85 Matrix 07 Mix G
 86 Matrix 07 Mix H
 87 Matrix 08 Input, ENUM
 88 Matrix 08 Mix A
 89 Matrix 08 Mix B
 90 Matrix 08 Mix C
 91 Matrix 08 Mix D
 92 Matrix 08 Mix E
 93 Matrix 08 Mix F
 94 Matrix 08 Mix G
 95 Matrix 08 Mix H
 96 Matrix 09 Input, ENUM
 97 Matrix 09 Mix A
 98 Matrix 09 Mix B
 99 Matrix 09 Mix C
 100 Matrix 09 Mix D
 101 Matrix 09 Mix E
 102 Matrix 09 Mix F
 103 Matrix 09 Mix G
 104 Matrix 09 Mix H
 105 Matrix 10 Input, ENUM
 106 Matrix 10 Mix A
 107 Matrix 10 Mix B
 108 Matrix 10 Mix C
 109 Matrix 10 Mix D
 110 Matrix 10 Mix E
 111 Matrix 10 Mix F
 112 Matrix 10 Mix G
 113 Matrix 10 Mix H
 114 Matrix 11 Input, ENUM
 115 Matrix 11 Mix A
 116 Matrix 11 Mix B
 117 Matrix 11 Mix C
 118 Matrix 11 Mix D
 119 Matrix 11 Mix E
 120 Matrix 11 Mix F
 121 Matrix 11 Mix G
 122 Matrix 11 Mix H
 123 Matrix 12 Input, ENUM
 124 Matrix 12 Mix A
 125 Matrix 12 Mix B
 126 Matrix 12 Mix C
 127 Matrix 12 Mix D
 128 Matrix 12 Mix E
 129 Matrix 12 Mix F
 130 Matrix 12 Mix G
 131 Matrix 12 Mix H
 132 Matrix 13 Input, ENUM
 133 Matrix 13 Mix A
 134 Matrix 13 Mix B
 135 Matrix 13 Mix C
 136 Matrix 13 Mix D
 137 Matrix 13 Mix E
 138 Matrix 13 Mix F
 139 Matrix 13 Mix G
 140 Matrix 13 Mix H
 141 Matrix 14 Input, ENUM
 142 Matrix 14 Mix A
 143 Matrix 14 Mix B
 144 Matrix 14 Mix C
 145 Matrix 14 Mix D
 146 Matrix 14 Mix E
 147 Matrix 14 Mix F
 148 Matrix 14 Mix G
 149 Matrix 14 Mix H
 150 Matrix 15 Input, ENUM
 151 Matrix 15 Mix A
 152 Matrix 15 Mix B
 153 Matrix 15 Mix C
 154 Matrix 15 Mix D
 155 Matrix 15 Mix E
 156 Matrix 15 Mix F
 157 Matrix 15 Mix G
 158 Matrix 15 Mix H
 159 Matrix 16 Input, ENUM
 160 Matrix 16 Mix A
 161 Matrix 16 Mix B
 162 Matrix 16 Mix C
 163 Matrix 16 Mix D
 164 Matrix 16 Mix E
 165 Matrix 16 Mix F
 166 Matrix 16 Mix G
 167 Matrix 16 Mix H
 168 Matrix 17 Input, ENUM
 169 Matrix 17 Mix A
 170 Matrix 17 Mix B
 171 Matrix 17 Mix C
 172 Matrix 17 Mix D
 173 Matrix 17 Mix E
 174 Matrix 17 Mix F
 175 Matrix 17 Mix G
 176 Matrix 17 Mix H
 177 Matrix 18 Input, ENUM
 178 Matrix 18 Mix A
 179 Matrix 18 Mix B
 180 Matrix 18 Mix C
 181 Matrix 18 Mix D
 182 Matrix 18 Mix E
 183 Matrix 18 Mix F
 184 Matrix 18 Mix G
 185 Matrix 18 Mix H
 186 Sample Clock Source, ENUM
 187 Sample Clock Sync Status, ENUM
 188 Scarlett 6i6 USB-Sync Clock Source, ENUM
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)

This is the project I was referring too for the 6i6 which should have correct control mapping you can yoink,

https://sourceforge.net/projects/qsismixer/

@aenertia. Updated for 6i6 (assuming you use Ubutnu)

Yah - 18.04 userspace with 4.18 mainline kernel.

This is the commit version I am using that is failing : commit fb5b599 (HEAD -> master, origin/master, origin/HEAD)

appears to be latest

I have a 6i6 1st gen too an am running Manjaro Linux with RT-Kernel:

Linux denkbett 4.16.18-rt12-MANJARO #1 SMP PREEMPT RT Fri Aug 3 12:10:46 UTC 2018 x86_64 GNU/Linux

I get the same error even with the above referenced commit and option -p shows two additional controls:

$ scarlett-mixer -p hw:2
Device `Scarlett 6i6 USB' has 191 contols: 
 0 Master, PBS
 1 Master 1 (Monitor), PBS
 2 Master 1L (Monitor) Source, ENUM
 3 Master 1R (Monitor) Source, ENUM
 4 Master 2 (Headphone), PBS
 5 Master 2L (Headphone) Source, ENUM
 6 Master 2R (Headphone) Source, ENUM
 7 Master 3 (SPDIF), PBS
 8 Master 3L (SPDIF) Source, ENUM
 9 Master 3R (SPDIF) Source, ENUM
 10 Line 4, PBS
 11 Mixer Out 8, PBS
 12 Input 1 Impedance, ENUM
 13 Input 1 Pad, ENUM
 14 Input 2 Impedance, ENUM
 15 Input 2 Pad, ENUM
 16 Input 3 Pad, ENUM
 17 Input 4 Pad, ENUM
 18 Input Source 01, ENUM
 19 Input Source 02, ENUM
 20 Input Source 03, ENUM
 21 Input Source 04, ENUM
 22 Input Source 05, ENUM
 23 Input Source 06, ENUM
 24 Internal Validity, PBS
 25 Matrix 01 Input, ENUM
 26 Matrix 01 Mix A
 27 Matrix 01 Mix B
 28 Matrix 01 Mix C
 29 Matrix 01 Mix D
 30 Matrix 01 Mix E
 31 Matrix 01 Mix F
 32 Matrix 01 Mix G
 33 Matrix 01 Mix H
 34 Matrix 02 Input, ENUM
 35 Matrix 02 Mix A
 36 Matrix 02 Mix B
 37 Matrix 02 Mix C
 38 Matrix 02 Mix D
 39 Matrix 02 Mix E
 40 Matrix 02 Mix F
 41 Matrix 02 Mix G
 42 Matrix 02 Mix H
 43 Matrix 03 Input, ENUM
 44 Matrix 03 Mix A
 45 Matrix 03 Mix B
 46 Matrix 03 Mix C
 47 Matrix 03 Mix D
 48 Matrix 03 Mix E
 49 Matrix 03 Mix F
 50 Matrix 03 Mix G
 51 Matrix 03 Mix H
 52 Matrix 04 Input, ENUM
 53 Matrix 04 Mix A
 54 Matrix 04 Mix B
 55 Matrix 04 Mix C
 56 Matrix 04 Mix D
 57 Matrix 04 Mix E
 58 Matrix 04 Mix F
 59 Matrix 04 Mix G
 60 Matrix 04 Mix H
 61 Matrix 05 Input, ENUM
 62 Matrix 05 Mix A
 63 Matrix 05 Mix B
 64 Matrix 05 Mix C
 65 Matrix 05 Mix D
 66 Matrix 05 Mix E
 67 Matrix 05 Mix F
 68 Matrix 05 Mix G
 69 Matrix 05 Mix H
 70 Matrix 06 Input, ENUM
 71 Matrix 06 Mix A
 72 Matrix 06 Mix B
 73 Matrix 06 Mix C
 74 Matrix 06 Mix D
 75 Matrix 06 Mix E
 76 Matrix 06 Mix F
 77 Matrix 06 Mix G
 78 Matrix 06 Mix H
 79 Matrix 07 Input, ENUM
 80 Matrix 07 Mix A
 81 Matrix 07 Mix B
 82 Matrix 07 Mix C
 83 Matrix 07 Mix D
 84 Matrix 07 Mix E
 85 Matrix 07 Mix F
 86 Matrix 07 Mix G
 87 Matrix 07 Mix H
 88 Matrix 08 Input, ENUM
 89 Matrix 08 Mix A
 90 Matrix 08 Mix B
 91 Matrix 08 Mix C
 92 Matrix 08 Mix D
 93 Matrix 08 Mix E
 94 Matrix 08 Mix F
 95 Matrix 08 Mix G
 96 Matrix 08 Mix H
 97 Matrix 09 Input, ENUM
 98 Matrix 09 Mix A
 99 Matrix 09 Mix B
 100 Matrix 09 Mix C
 101 Matrix 09 Mix D
 102 Matrix 09 Mix E
 103 Matrix 09 Mix F
 104 Matrix 09 Mix G
 105 Matrix 09 Mix H
 106 Matrix 10 Input, ENUM
 107 Matrix 10 Mix A
 108 Matrix 10 Mix B
 109 Matrix 10 Mix C
 110 Matrix 10 Mix D
 111 Matrix 10 Mix E
 112 Matrix 10 Mix F
 113 Matrix 10 Mix G
 114 Matrix 10 Mix H
 115 Matrix 11 Input, ENUM
 116 Matrix 11 Mix A
 117 Matrix 11 Mix B
 118 Matrix 11 Mix C
 119 Matrix 11 Mix D
 120 Matrix 11 Mix E
 121 Matrix 11 Mix F
 122 Matrix 11 Mix G
 123 Matrix 11 Mix H
 124 Matrix 12 Input, ENUM
 125 Matrix 12 Mix A
 126 Matrix 12 Mix B
 127 Matrix 12 Mix C
 128 Matrix 12 Mix D
 129 Matrix 12 Mix E
 130 Matrix 12 Mix F
 131 Matrix 12 Mix G
 132 Matrix 12 Mix H
 133 Matrix 13 Input, ENUM
 134 Matrix 13 Mix A
 135 Matrix 13 Mix B
 136 Matrix 13 Mix C
 137 Matrix 13 Mix D
 138 Matrix 13 Mix E
 139 Matrix 13 Mix F
 140 Matrix 13 Mix G
 141 Matrix 13 Mix H
 142 Matrix 14 Input, ENUM
 143 Matrix 14 Mix A
 144 Matrix 14 Mix B
 145 Matrix 14 Mix C
 146 Matrix 14 Mix D
 147 Matrix 14 Mix E
 148 Matrix 14 Mix F
 149 Matrix 14 Mix G
 150 Matrix 14 Mix H
 151 Matrix 15 Input, ENUM
 152 Matrix 15 Mix A
 153 Matrix 15 Mix B
 154 Matrix 15 Mix C
 155 Matrix 15 Mix D
 156 Matrix 15 Mix E
 157 Matrix 15 Mix F
 158 Matrix 15 Mix G
 159 Matrix 15 Mix H
 160 Matrix 16 Input, ENUM
 161 Matrix 16 Mix A
 162 Matrix 16 Mix B
 163 Matrix 16 Mix C
 164 Matrix 16 Mix D
 165 Matrix 16 Mix E
 166 Matrix 16 Mix F
 167 Matrix 16 Mix G
 168 Matrix 16 Mix H
 169 Matrix 17 Input, ENUM
 170 Matrix 17 Mix A
 171 Matrix 17 Mix B
 172 Matrix 17 Mix C
 173 Matrix 17 Mix D
 174 Matrix 17 Mix E
 175 Matrix 17 Mix F
 176 Matrix 17 Mix G
 177 Matrix 17 Mix H
 178 Matrix 18 Input, ENUM
 179 Matrix 18 Mix A
 180 Matrix 18 Mix B
 181 Matrix 18 Mix C
 182 Matrix 18 Mix D
 183 Matrix 18 Mix E
 184 Matrix 18 Mix F
 185 Matrix 18 Mix G
 186 Matrix 18 Mix H
 187 S/PDIF Validity, PBS
 188 Sample Clock Source, ENUM
 189 Sample Clock Sync Status, ENUM
 190 Scarlett 6i6 USB-Sync Clock Source, ENUM
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Abgebrochen (Speicherabzug geschrieben)

Below is the lsusb -v output for the device.

Also have you run it with the windows focusrite control app which IIRC will do a firmware update.

Yeah certainly did that, but I don't know when was the last time. But something seems to have changed in the ALSA interface, because I had qsismixer (with a small change to upstream) running without problems before but now the GUI controls are not mapped correctly to the mixer controls anymore.

Bus 001 Device 109: ID 1235:8012 Focusrite-Novation Scarlett 6i6
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x1235 Focusrite-Novation
  idProduct          0x8012 Scarlett 6i6
  bcdDevice            2.60
  iManufacturer           1 Focusrite
  iProduct                2 Scarlett 6i6 USB
  iSerial                 3 1001949C
  bNumConfigurations      2
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0213
    bNumInterfaces          6
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass          1 Audio
      bFunctionSubClass       0 
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              2 Scarlett 6i6 USB
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x00e9
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            3 Internal programmable clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            9 Internal
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               42
        bmAttributes            0 External clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource           10 S/PDIF
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype     11 (CLOCK_SELECTOR)
        bClockID               40
        bNrInPins               2
        baCSourceID(0)         41
        baCSourceID(1)         42
        bmControls           0x03
          Clock Selector Control (read/write)
        iClockSelector          8 Scarlett 6i6 USB-Sync
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames          13 Mon 1
        bmControls         0x0000
        iTerminal               6 Scarlett 6i6 USB-Output
      AudioControl Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                51
        wExtensionCode     0x0000
        bNrInPins               1
        baSourceID(0)           2
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                58
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID              51
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             40
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          31 Mic 1
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                52
        wExtensionCode     0x0000
        bNrInPins               1
        baSourceID(0)           1
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                34
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID              52
        bmaControls(0)     0x00000000
        bmaControls(1)     0x00000000
        bmaControls(2)     0x00000000
        bmaControls(3)     0x00000000
        bmaControls(4)     0x00000000
        bmaControls(5)     0x00000000
        bmaControls(6)     0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            22
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             40
        bmControls         0x0000
        iTerminal               7 Scarlett 6i6 USB-Input
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                50
        wExtensionCode     0x0000
        bNrInPins               2
        baSourceID(0)           2
        baSourceID(1)           1
        bNrChannels            18
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                32
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                60
        bNrInPins               1
        baSourceID(0)          50
        bNrChannels             8
        bmChannelConfig    0x00000000
        iChannelNames          51 Mixer Out 1
        bmMixerControls(0)   0xff
        bmControls           0xff
          Cluster Control (read/write)
          Underflow Control (read/write)
          Overflow Control (read/write)
        iMixer                255 
      Warning: Junk at end of descriptor (17 bytes):
        ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0006  1x 6 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 6i6 USB-Out
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 6i6 USB-Out
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames          13 Mon 1
      AudioStreaming Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
        junk at descriptor end: 00 77 01 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 6i6 USB-In
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 6i6 USB-In
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          22
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          31 Mic 1
      AudioStreaming Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
        junk at descriptor end: 00 77 01 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0041
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                 2
        iJack                   5 Scarlett 6i6 USB-In
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 3
        bNrInputPins            1
        baSourceID( 0)          2
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                 4
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   4 Scarlett 6i6 USB-Out
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       3
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        5
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      0 
      iInterface             12 Scarlett 6i6 USB-DFU
      Device Firmware Upgrade Interface Descriptor:
        bLength                             7
        bDescriptorType                    33
        bmAttributes                        7
          Will Not Detach
          Manifestation Tolerant
          Upload Supported
          Download Supported
        wDetachTimeout                    250 milliseconds
        wTransferSize                      64 bytes
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0213
    bNumInterfaces          6
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass          1 Audio
      bFunctionSubClass       0 
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              2 Scarlett 6i6 USB
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x00e9
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            3 Internal programmable clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            9 Internal
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               42
        bmAttributes            0 External clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource           10 S/PDIF
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype     11 (CLOCK_SELECTOR)
        bClockID               40
        bNrInPins               2
        baCSourceID(0)         41
        baCSourceID(1)         42
        bmControls           0x03
          Clock Selector Control (read/write)
        iClockSelector          8 Scarlett 6i6 USB-Sync
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames          13 Mon 1
        bmControls         0x0000
        iTerminal               6 Scarlett 6i6 USB-Output
      AudioControl Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                51
        wExtensionCode     0x0000
        bNrInPins               1
        baSourceID(0)           2
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                58
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID              51
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             40
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          31 Mic 1
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                52
        wExtensionCode     0x0000
        bNrInPins               1
        baSourceID(0)           1
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                34
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID              52
        bmaControls(0)     0x00000000
        bmaControls(1)     0x00000000
        bmaControls(2)     0x00000000
        bmaControls(3)     0x00000000
        bmaControls(4)     0x00000000
        bmaControls(5)     0x00000000
        bmaControls(6)     0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            22
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             40
        bmControls         0x0000
        iTerminal               7 Scarlett 6i6 USB-Input
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      9 (EXTENSION_UNIT)
        bUnitID                50
        wExtensionCode     0x0000
        bNrInPins               2
        baSourceID(0)           2
        baSourceID(1)           1
        bNrChannels            18
        bmChannelConfig    0x00000000
        iChannelNames           0 
        bmControls           0x03
          Enable Control (read/write)
        iExtension              0 
      AudioControl Interface Descriptor:
        bLength                32
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                60
        bNrInPins               1
        baSourceID(0)          50
        bNrChannels             8
        bmChannelConfig    0x00000000
        iChannelNames          51 Mixer Out 1
        bmMixerControls(0)   0xff
        bmControls           0xff
          Cluster Control (read/write)
          Underflow Control (read/write)
          Overflow Control (read/write)
        iMixer                255 
      Warning: Junk at end of descriptor (17 bytes):
        ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0006  1x 6 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 6i6 USB-Out
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 6i6 USB-Out
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            12
        bmChannelConfig    0x00000000
        iChannelNames          13 Mon 1
      AudioStreaming Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
        junk at descriptor end: 00 77 01 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 6i6 USB-In
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 6i6 USB-In
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          22
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          31 Mic 1
      AudioStreaming Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
        junk at descriptor end: 00 77 01 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0041
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                 2
        iJack                   5 Scarlett 6i6 USB-In
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 3
        bNrInputPins            1
        baSourceID( 0)          2
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                 4
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   4 Scarlett 6i6 USB-Out
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       3
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        5
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      0 
      iInterface             12 Scarlett 6i6 USB-DFU
      Device Firmware Upgrade Interface Descriptor:
        bLength                             7
        bDescriptorType                    33
        bmAttributes                        7
          Will Not Detach
          Manifestation Tolerant
          Upload Supported
          Download Supported
        wDetachTimeout                    250 milliseconds
        wTransferSize                      64 bytes
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
x42 commented

@aenertia , @SpotlightKid lsusb output is not useful here. This tool interacts with ALSA mixer interface (amixer) and does not talk directly with the USB device.

The reason for this is: As soon as the kernel uses the soundcard, the USB device is busy, and all I/O has to happen via ALSA. A userspace tool cannot concurrently use the raw USB device at the same time while the kernel uses it.

The lsusb output may be helpful for the person writing and maintaining the kernel-driver, but that is no longer me.

x42 commented

The interesting part is indeed the output of scarlett-mixer -p ... two additional controls on @SpotlightKid 's system.

This quickly hacked GUI is using hardcoded offsets and is not capable to handle this situation.
One would have to dynamically parse the control-names and/or offsets or come up with a better solution.

PS. Complaining to Linus may help. He is very advocate that a kernel-change must never ever break userspace applications. And this is clearly the case here.

Sorry for the long lsusb output paste. I wasn't sure whether it would help but since @aenertia requested it...

So, anybody have a recommendation for a usable mixer program for the Scarlett 6i6? I used to use qsismix, but like I said, that doesn't work anymore either. Sigh ... The next time I want to quickly record something, I guess I'll use my Zoom H2 instead of Linux/Ardour.

Thanks for your efforts, anyway, Robin.

Check gmerlin and/or qasmixer. Haven't been updated for a long time now, but they still seem to work with the Scarlett 1st Gen interfaces

x42 commented

@SpotlightKid you may be able to help yourself like in 42bc082

@x42: Thanks, that works!

scarlett-mixer-6i6-20180822t143128

Maybe "how to hack the source for your kernel" should be a wiki entry. :) The trick is to just check the offsets to make sure they match. For reference, here's a configuration and corresponding Device config that works for me. Maybe it'll help someone. :)

For reference, I have an earlier 18i6 on Devuan: 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64. I was able to get it working with this config:

{
	.name = "Scarlett 18i6 USB",
	.smi = 18, .smo = 6,
	.sin = 18, .sout = 6,
	.smst = 3,
	.num_hiz = 2,
	.num_pad = 0,
	.matrix_mix_offset = 33, .matrix_mix_stride = 7,
	.matrix_in_offset = 32, .matrix_in_stride = 7,
	.input_offset = 13,
	.out_gain_map = { 1 /* Monitor */, 4 /* Headphone */, 7 /* SPDIF */, -1, -1 , -1, -1, -1, -1, -1 }, // PBS
	.out_gain_labels = { "Monitor", "Headphone", "SPDIF", "", "", "", "", "", "", "" },
	.out_bus_map = { 2, 3, 5, 6, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Source, ENUM
	.hiz_map = { 11, 12 },
	.pad_map = { -1, -1, -1, -1 },
}

Which corresponds to the controls:

0 Master, PBS
1 Master 1 (Monitor), PBS
2 Master 1L (Monitor) Source, ENUM
3 Master 1R (Monitor) Source, ENUM
4 Master 2 (Headphone), PBS
5 Master 2L (Headphone) Source, ENUM
6 Master 2R (Headphone) Source, ENUM
7 Master 3 (SPDIF), PBS
8 Master 3L (SPDIF) Source, ENUM
9 Master 3R (SPDIF) Source, ENUM
10 ADAT Validity, PBS
11 Input 1 Impedance, ENUM
12 Input 2 Impedance, ENUM
13 Input Source 01, ENUM
14 Input Source 02, ENUM
15 Input Source 03, ENUM
16 Input Source 04, ENUM
17 Input Source 05, ENUM
18 Input Source 06, ENUM
19 Input Source 07, ENUM
20 Input Source 08, ENUM
21 Input Source 09, ENUM
22 Input Source 10, ENUM
23 Input Source 11, ENUM
24 Input Source 12, ENUM
25 Input Source 13, ENUM
26 Input Source 14, ENUM
27 Input Source 15, ENUM
28 Input Source 16, ENUM
29 Input Source 17, ENUM
30 Input Source 18, ENUM
31 Internal Validity, PBS
32 Matrix 01 Input, ENUM
33 Matrix 01 Mix A
34 Matrix 01 Mix B
35 Matrix 01 Mix C
36 Matrix 01 Mix D
37 Matrix 01 Mix E
38 Matrix 01 Mix F
39 Matrix 02 Input, ENUM
40 Matrix 02 Mix A
41 Matrix 02 Mix B
42 Matrix 02 Mix C
43 Matrix 02 Mix D
44 Matrix 02 Mix E
45 Matrix 02 Mix F
46 Matrix 03 Input, ENUM
47 Matrix 03 Mix A

I suppose if I was really inspired and didn't have six other pending projects, I could write a startup routine that locates the device offsets by name instead of number, but it's so easy to hack the source. :)

Thanks for sharing and hop this helps and doesn't instead annoy.

x42 commented

I suppose if I was really inspired and didn't have six other pending projects, I could write a startup
routine that locates the device offsets by name instead of number, but it's so easy to hack the source

Perhaps file a bug with the Linux kernel. The number one rule of the Linux kernel is to not break userspace, but here it clearly does. -- Then again it seems for the issue at hand distros to blame, not upstream.

As for this little mixer app. I have not designed it to be used by anyone other than myself. So I'm to blame for that. I actually expected most users would rather want a a less technical mixer, and prefer one that groups the controls semantically into mixer-strips.

It should also be simple to cook up a python script or some alternative.

Ran in the same problem using a live ubuntu and a 1st get 18i8.

~/scarlett-mixer$ ./scarlett-mixer hw:2
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)

Here's the print's output

~/scarlett-mixer$ ./scarlett-mixer -p
Device `Scarlett 18i8 USB' has 207 contols: 
 0 Master, PBS
 1 Master 1 (Monitor), PBS
 2 Master 1L (Monitor) Source, ENUM
 3 Master 1R (Monitor) Source, ENUM
 4 Master 2 (Headphone 1), PBS
 5 Master 2L (Headphone 1) Source Playback Enu, ENUM
 6 Master 2R (Headphone 1) Source Playback Enu, ENUM
 7 Master 3 (Headphone 2), PBS
 8 Master 3L (Headphone 2) Source Playback Enu, ENUM
 9 Master 3R (Headphone 2) Source Playback Enu, ENUM
 10 Master 4 (SPDIF), PBS
 11 Master 4L (SPDIF) Source, ENUM
 12 Master 4R (SPDIF) Source, ENUM
 13 ADAT 2, PBS
 14 ADAT Validity, PBS
 15 Extension Unit, PBS
 16 Input 1 Impedance, ENUM
 17 Input 1 Pad, ENUM
 18 Input 2 Impedance, ENUM
 19 Input 2 Pad, ENUM
 20 Input 3 Pad, ENUM
 21 Input 4 Pad, ENUM
 22 Input Source 01, ENUM
 23 Input Source 02, ENUM
 24 Input Source 03, ENUM
 25 Input Source 04, ENUM
 26 Input Source 05, ENUM
 27 Input Source 06, ENUM
 28 Input Source 07, ENUM
 29 Input Source 08, ENUM
 30 Input Source 09, ENUM
 31 Input Source 10, ENUM
 32 Input Source 11, ENUM
 33 Input Source 12, ENUM
 34 Input Source 13, ENUM
 35 Input Source 14, ENUM
 36 Input Source 15, ENUM
 37 Input Source 16, ENUM
 38 Input Source 17, ENUM
 39 Input Source 18, ENUM
 40 Internal Validity, PBS
 41 Matrix 01 Input, ENUM
 42 Matrix 01 Mix A
 43 Matrix 01 Mix B
 44 Matrix 01 Mix C
 45 Matrix 01 Mix D
 46 Matrix 01 Mix E
 47 Matrix 01 Mix F
 48 Matrix 01 Mix G
 49 Matrix 01 Mix H
 50 Matrix 02 Input, ENUM
 51 Matrix 02 Mix A
 52 Matrix 02 Mix B
 53 Matrix 02 Mix C
 54 Matrix 02 Mix D
 55 Matrix 02 Mix E
 56 Matrix 02 Mix F
 57 Matrix 02 Mix G
 58 Matrix 02 Mix H
 59 Matrix 03 Input, ENUM
 60 Matrix 03 Mix A
 61 Matrix 03 Mix B
 62 Matrix 03 Mix C
 63 Matrix 03 Mix D
 64 Matrix 03 Mix E
 65 Matrix 03 Mix F
 66 Matrix 03 Mix G
 67 Matrix 03 Mix H
 68 Matrix 04 Input, ENUM
 69 Matrix 04 Mix A
 70 Matrix 04 Mix B
 71 Matrix 04 Mix C
 72 Matrix 04 Mix D
 73 Matrix 04 Mix E
 74 Matrix 04 Mix F
 75 Matrix 04 Mix G
 76 Matrix 04 Mix H
 77 Matrix 05 Input, ENUM
 78 Matrix 05 Mix A
 79 Matrix 05 Mix B
 80 Matrix 05 Mix C
 81 Matrix 05 Mix D
 82 Matrix 05 Mix E
 83 Matrix 05 Mix F
 84 Matrix 05 Mix G
 85 Matrix 05 Mix H
 86 Matrix 06 Input, ENUM
 87 Matrix 06 Mix A
 88 Matrix 06 Mix B
 89 Matrix 06 Mix C
 90 Matrix 06 Mix D
 91 Matrix 06 Mix E
 92 Matrix 06 Mix F
 93 Matrix 06 Mix G
 94 Matrix 06 Mix H
 95 Matrix 07 Input, ENUM
 96 Matrix 07 Mix A
 97 Matrix 07 Mix B
 98 Matrix 07 Mix C
 99 Matrix 07 Mix D
 100 Matrix 07 Mix E
 101 Matrix 07 Mix F
 102 Matrix 07 Mix G
 103 Matrix 07 Mix H
 104 Matrix 08 Input, ENUM
 105 Matrix 08 Mix A
 106 Matrix 08 Mix B
 107 Matrix 08 Mix C
 108 Matrix 08 Mix D
 109 Matrix 08 Mix E
 110 Matrix 08 Mix F
 111 Matrix 08 Mix G
 112 Matrix 08 Mix H
 113 Matrix 09 Input, ENUM
 114 Matrix 09 Mix A
 115 Matrix 09 Mix B
 116 Matrix 09 Mix C
 117 Matrix 09 Mix D
 118 Matrix 09 Mix E
 119 Matrix 09 Mix F
 120 Matrix 09 Mix G
 121 Matrix 09 Mix H
 122 Matrix 10 Input, ENUM
 123 Matrix 10 Mix A
 124 Matrix 10 Mix B
 125 Matrix 10 Mix C
 126 Matrix 10 Mix D
 127 Matrix 10 Mix E
 128 Matrix 10 Mix F
 129 Matrix 10 Mix G
 130 Matrix 10 Mix H
 131 Matrix 11 Input, ENUM
 132 Matrix 11 Mix A
 133 Matrix 11 Mix B
 134 Matrix 11 Mix C
 135 Matrix 11 Mix D
 136 Matrix 11 Mix E
 137 Matrix 11 Mix F
 138 Matrix 11 Mix G
 139 Matrix 11 Mix H
 140 Matrix 12 Input, ENUM
 141 Matrix 12 Mix A
 142 Matrix 12 Mix B
 143 Matrix 12 Mix C
 144 Matrix 12 Mix D
 145 Matrix 12 Mix E
 146 Matrix 12 Mix F
 147 Matrix 12 Mix G
 148 Matrix 12 Mix H
 149 Matrix 13 Input, ENUM
 150 Matrix 13 Mix A
 151 Matrix 13 Mix B
 152 Matrix 13 Mix C
 153 Matrix 13 Mix D
 154 Matrix 13 Mix E
 155 Matrix 13 Mix F
 156 Matrix 13 Mix G
 157 Matrix 13 Mix H
 158 Matrix 14 Input, ENUM
 159 Matrix 14 Mix A
 160 Matrix 14 Mix B
 161 Matrix 14 Mix C
 162 Matrix 14 Mix D
 163 Matrix 14 Mix E
 164 Matrix 14 Mix F
 165 Matrix 14 Mix G
 166 Matrix 14 Mix H
 167 Matrix 15 Input, ENUM
 168 Matrix 15 Mix A
 169 Matrix 15 Mix B
 170 Matrix 15 Mix C
 171 Matrix 15 Mix D
 172 Matrix 15 Mix E
 173 Matrix 15 Mix F
 174 Matrix 15 Mix G
 175 Matrix 15 Mix H
 176 Matrix 16 Input, ENUM
 177 Matrix 16 Mix A
 178 Matrix 16 Mix B
 179 Matrix 16 Mix C
 180 Matrix 16 Mix D
 181 Matrix 16 Mix E
 182 Matrix 16 Mix F
 183 Matrix 16 Mix G
 184 Matrix 16 Mix H
 185 Matrix 17 Input, ENUM
 186 Matrix 17 Mix A
 187 Matrix 17 Mix B
 188 Matrix 17 Mix C
 189 Matrix 17 Mix D
 190 Matrix 17 Mix E
 191 Matrix 17 Mix F
 192 Matrix 17 Mix G
 193 Matrix 17 Mix H
 194 Matrix 18 Input, ENUM
 195 Matrix 18 Mix A
 196 Matrix 18 Mix B
 197 Matrix 18 Mix C
 198 Matrix 18 Mix D
 199 Matrix 18 Mix E
 200 Matrix 18 Mix F
 201 Matrix 18 Mix G
 202 Matrix 18 Mix H
 203 S/PDIF Validity, PBS
 204 Sample Clock Source, ENUM
 205 Sample Clock Sync Status, ENUM
 206 Scarlett 18i8 USB-Sync Clock Source, ENUM
scarlett-mixer: ./src/scarlett_mixer.c:492: get_enum: Assertion `snd_mixer_selem_is_enumerated (c->elem)' failed.
Aborted (core dumped)```
x42 commented

This is crazy! if you compare the two 18i8 dumps above: #8 (comment) vs #8 (comment)

The first has impedance at pin 14, the latter at 16. Likewise other offsets are not consistent.

In any case for the latter the following should work (src/scarlett_mixer.c line 87..102). It's relatively easy to match the numbers with those from the -p dump as needed.

  {
    .name = "Scarlett 18i8 USB",
    .smi = 18, .smo = 8,
    .sin = 18, .sout = 8,
    .smst = 4,
    .num_hiz = 2,
    .num_pad = 4,
    .matrix_mix_offset = 42, .matrix_mix_stride = 9,
    .matrix_in_offset = 41, .matrix_in_stride = 9,
    .input_offset = 22,
    .out_gain_map = { 1 /* Monitor */, 4 /* Headphone 1 */, 7 /* Headphone 2 */, 10 /* SPDIF */, -1, -1 , -1, -1, -1, -1 },
    .out_gain_labels = { "Monitor", "Headphone 1", "Headphone 2", "SPDIF", "", "", "", "", "", "" },
    .out_bus_map = { 2, 3, 5, 6, 8, 9, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
    .hiz_map = { 16, 18 },
    .pad_map = { 17, 19, 20, 21 },
  },

Hi x42 and other people.
First, im totally newb in programming and compiling but...
Im succesfuly compiled and get work your mixer with scarlett 18i20 1st gen in AVLinux but i needed edit offsets in scarlett_mixer.c before compiling. I matched offsets from "-p" dump and matrix_mix_offset , matrix_in_offset , input_offset in source code.

Original code for 18i20 had:
line 126

.matrix_mix_offset= 50, .matrix_mix_stride = 9,
.matrix_in_offset = 49, .matrix_in_stride = 9,
.input_offset = 31,

i changed to:

.matrix_mix_offset = 54, .matrix_mix_stride = 9,
.matrix_in_offset = 53, .matrix_in_stride = 9,
.input_offset = 33,

becasue dump from "-p" is:

Device `Scarlett 18i20 USB' has 219 contols:
0 Master, PBS
1 Master 1 (Monitor), PBS
2 Master 10 (ADAT 7/8), PBS
3 Master 10L (ADAT 7/8) Source, ENUM
4 Master 10R (ADAT 7/8) Source, ENUM
5 Master 1L (Monitor) Source, ENUM
6 Master 1R (Monitor) Source, ENUM
7 Master 2 (Line 3/4), PBS
8 Master 2L (Line 3/4) Source, ENUM
9 Master 2R (Line 3/4) Source, ENUM
10 Master 3 (Line 5/6), PBS
11 Master 3L (Line 5/6) Source, ENUM
12 Master 3R (Line 5/6) Source, ENUM
13 Master 4 (Line 7/8), PBS
14 Master 4L (Line 7/8) Source, ENUM
15 Master 4R (Line 7/8) Source, ENUM
16 Master 5 (Line 9/10), PBS
17 Master 5L (Line 9/10) Source, ENUM
18 Master 5R (Line 9/10) Source, ENUM
19 Master 6 (SPDIF), PBS
20 Master 6L (SPDIF) Source, ENUM
21 Master 6R (SPDIF) Source, ENUM
22 Master 7 (ADAT 1/2), PBS
23 Master 7L (ADAT 1/2) Source, ENUM
24 Master 7R (ADAT 1/2) Source, ENUM
25 Master 8 (ADAT 3/4), PBS
26 Master 8L (ADAT 3/4) Source, ENUM
27 Master 8R (ADAT 3/4) Source, ENUM
28 Master 9 (ADAT 5/6), PBS
29 Master 9L (ADAT 5/6) Source, ENUM
30 Master 9R (ADAT 5/6) Source, ENUM
31 , PBS
32 ADAT Validity, PBS
33 Input Source 01, ENUM
34 Input Source 02, ENUM
35 Input Source 03, ENUM
36 Input Source 04, ENUM
37 Input Source 05, ENUM
38 Input Source 06, ENUM
39 Input Source 07, ENUM
40 Input Source 08, ENUM
41 Input Source 09, ENUM
42 Input Source 10, ENUM
43 Input Source 11, ENUM
44 Input Source 12, ENUM
45 Input Source 13, ENUM
46 Input Source 14, ENUM
47 Input Source 15, ENUM
48 Input Source 16, ENUM
49 Input Source 17, ENUM
50 Input Source 18, ENUM
51 Internal Validity, PBS
52 KKKKKKKKKKKKKKKKKÃÃÃÃÃÃÃÃÃÃÃ Swi, PBS
53 Matrix 01 Input, ENUM
54 Matrix 01 Mix A
55 Matrix 01 Mix B
56 Matrix 01 Mix C
57 Matrix 01 Mix D
58 Matrix 01 Mix E
59 Matrix 01 Mix F
60 Matrix 01 Mix G
61 Matrix 01 Mix H
62 Matrix 02 Input, ENUM
63 Matrix 02 Mix A
64 Matrix 02 Mix B
65 Matrix 02 Mix C
66 Matrix 02 Mix D
67 Matrix 02 Mix E
68 Matrix 02 Mix F
69 Matrix 02 Mix G
70 Matrix 02 Mix H
71 Matrix 03 Input, ENUM
72 Matrix 03 Mix A
73 Matrix 03 Mix B
74 Matrix 03 Mix C
75 Matrix 03 Mix D
76 Matrix 03 Mix E
77 Matrix 03 Mix F
78 Matrix 03 Mix G
79 Matrix 03 Mix H
80 Matrix 04 Input, ENUM
81 Matrix 04 Mix A
82 Matrix 04 Mix B
83 Matrix 04 Mix C
84 Matrix 04 Mix D
85 Matrix 04 Mix E
86 Matrix 04 Mix F
87 Matrix 04 Mix G
88 Matrix 04 Mix H
89 Matrix 05 Input, ENUM
90 Matrix 05 Mix A
91 Matrix 05 Mix B
92 Matrix 05 Mix C
93 Matrix 05 Mix D
94 Matrix 05 Mix E
95 Matrix 05 Mix F
96 Matrix 05 Mix G
97 Matrix 05 Mix H
98 Matrix 06 Input, ENUM
99 Matrix 06 Mix A
100 Matrix 06 Mix B
101 Matrix 06 Mix C
102 Matrix 06 Mix D
103 Matrix 06 Mix E
104 Matrix 06 Mix F
105 Matrix 06 Mix G
106 Matrix 06 Mix H
107 Matrix 07 Input, ENUM
108 Matrix 07 Mix A
109 Matrix 07 Mix B
110 Matrix 07 Mix C
111 Matrix 07 Mix D
112 Matrix 07 Mix E
113 Matrix 07 Mix F
114 Matrix 07 Mix G
115 Matrix 07 Mix H
116 Matrix 08 Input, ENUM
117 Matrix 08 Mix A
118 Matrix 08 Mix B
119 Matrix 08 Mix C
120 Matrix 08 Mix D
121 Matrix 08 Mix E
122 Matrix 08 Mix F
123 Matrix 08 Mix G
124 Matrix 08 Mix H
125 Matrix 09 Input, ENUM
126 Matrix 09 Mix A
127 Matrix 09 Mix B
128 Matrix 09 Mix C
129 Matrix 09 Mix D
130 Matrix 09 Mix E
131 Matrix 09 Mix F
132 Matrix 09 Mix G
133 Matrix 09 Mix H
134 Matrix 10 Input, ENUM
135 Matrix 10 Mix A
136 Matrix 10 Mix B
137 Matrix 10 Mix C
138 Matrix 10 Mix D
139 Matrix 10 Mix E
140 Matrix 10 Mix F
141 Matrix 10 Mix G
142 Matrix 10 Mix H
143 Matrix 11 Input, ENUM
144 Matrix 11 Mix A
145 Matrix 11 Mix B
146 Matrix 11 Mix C
147 Matrix 11 Mix D
148 Matrix 11 Mix E
149 Matrix 11 Mix F
150 Matrix 11 Mix G
151 Matrix 11 Mix H
152 Matrix 12 Input, ENUM
153 Matrix 12 Mix A
154 Matrix 12 Mix B
155 Matrix 12 Mix C
156 Matrix 12 Mix D
157 Matrix 12 Mix E
158 Matrix 12 Mix F
159 Matrix 12 Mix G
160 Matrix 12 Mix H
161 Matrix 13 Input, ENUM
162 Matrix 13 Mix A
163 Matrix 13 Mix B
164 Matrix 13 Mix C
165 Matrix 13 Mix D
166 Matrix 13 Mix E
167 Matrix 13 Mix F
168 Matrix 13 Mix G
169 Matrix 13 Mix H
170 Matrix 14 Input, ENUM
171 Matrix 14 Mix A
172 Matrix 14 Mix B
173 Matrix 14 Mix C
174 Matrix 14 Mix D
175 Matrix 14 Mix E
176 Matrix 14 Mix F
177 Matrix 14 Mix G
178 Matrix 14 Mix H
179 Matrix 15 Input, ENUM
180 Matrix 15 Mix A
181 Matrix 15 Mix B
182 Matrix 15 Mix C
183 Matrix 15 Mix D
184 Matrix 15 Mix E
185 Matrix 15 Mix F
186 Matrix 15 Mix G
187 Matrix 15 Mix H
188 Matrix 16 Input, ENUM
189 Matrix 16 Mix A
190 Matrix 16 Mix B
191 Matrix 16 Mix C
192 Matrix 16 Mix D
193 Matrix 16 Mix E
194 Matrix 16 Mix F
195 Matrix 16 Mix G
196 Matrix 16 Mix H
197 Matrix 17 Input, ENUM
198 Matrix 17 Mix A
199 Matrix 17 Mix B
200 Matrix 17 Mix C
201 Matrix 17 Mix D
202 Matrix 17 Mix E
203 Matrix 17 Mix F
204 Matrix 17 Mix G
205 Matrix 17 Mix H
206 Matrix 18 Input, ENUM
207 Matrix 18 Mix A
208 Matrix 18 Mix B
209 Matrix 18 Mix C
210 Matrix 18 Mix D
211 Matrix 18 Mix E
212 Matrix 18 Mix F
213 Matrix 18 Mix G
214 Matrix 18 Mix H
215 S/PDIF Validity, PBS
216 Sample Clock Source, ENUM
217 Sample Clock Sync Status, ENUM
218 Scarlett 18i20 USB-Sync Clock Source, ENUM

so i think
Matrix_mix_offset is a Matrix 01 Mix A,
Matrix_in_offset is Matrix 01 Input, ENUM
Input_offset is Input Source 01, ENUM .
I got this idea after comparing "-p" dumps from 18i8 where people posted here and the original code.

Im using latest AV Linux with kernel 4.16.12-rt5-avl1 and Alsa Mixer 1.1.8 and Scarlett 18i20 1st gen.

Anyway i have question to x42 ?
in Mixer on lowest right side is a button named "R" and he resets sound or clock source ? but after this i must open normal alsa mixer, pres f6 select 18i20 soundcard, then scroll to the right end and when i have Item :Scarlett 18i20 USB-Sync Clock Source change clock to SPDIF or ADAT and comeback to INTERNAL. After that sounds back. I had this issue before compiling your mixer, just random apps changed Sync Clock Source i think and i must do "terminal alsa things" ... It is possible to add a "switch listed button" to mixer for that ?

scarlettmixer18i20

alsamixer

Cheers

x42 commented

in Mixer on lowest right side is a button named "R" and he resets sound or clock source ?

Ignore that button. I've used it for development and will remove it. It short: it forces a change of every mixer-parameter and then re-sends the current settings.

in Mixer on lowest right side is a button named "R" and he resets sound or clock source ?

Ignore that button. I've used it for development and will remove it. It short: it forces a change of every mixer-parameter and then re-sends the current settings.

Okey. Thank you for fast reply :) good work with that mixer.
After some tests, i can write this.
Master knob is not working with 18i20 1st gen dont know why. You can mute, and change volume but its not changing sound at all.
Monitor Knob is working good and it is as a Main Output for my Speakers.
Line 3/4, Line 5/6 are as normal outputs.
Line 7/8 and Line 9/10 are a headphones outputs and working good, its like as in windows10.
Mix A is a Left channel, Mix B is a right channel. Ofcourse Mix, C,D (left,right) E,F (left, right) G,H (left, right)
Cant test ADAT and SPDIF in, out.
Analog Inputs working :)

In future if you can add Clock source buttons it will be awesome :)

x42 commented

Changing the clock-source is usually a one-time setup. It should not be exposed in a casual mixer-interface.

What was the solution for this? I changed .input_offset = 31 to 33 and it didn't change anything for me, still get the error listed above. I'm using the 6i6 so is it a different number I need to use?

x42 commented

The solution was to no longer use fixed numeric offsets, but instead rely on mixer-control names

Was this a merged fix or do I need to do something to the code?

msil commented

I'm having a bit of trouble getting this to work with my 18i20 2nd gen. I have the alsa driver working, and am able to do what i need from within alsamixer, though it is a bit frustrating :) I have noticed that my debug output from scarlett-mixer is quite different to the other generations, the mixing matrix is ordered by mix rather than by input:

Device `Scarlett 18i20 USB' has 260 contols: 
 0 'Master HW'
 1 'PCM 01', ENUM
 2 'PCM 02', ENUM
 3 'PCM 03', ENUM
 4 'PCM 04', ENUM
 5 'PCM 05', ENUM
 6 'PCM 06', ENUM
 7 'PCM 07', ENUM
 8 'PCM 08', ENUM
 9 'PCM 09', ENUM
 10 'PCM 10', ENUM
 11 'PCM 11', ENUM
 12 'PCM 12', ENUM
 13 'PCM 13', ENUM
 14 'PCM 14', ENUM
 15 'PCM 15', ENUM
 16 'PCM 16', ENUM
 17 'PCM 17', ENUM
 18 'PCM 18', ENUM
 19 'Line 01 (Monitor L)'
 20 'Line 02 (Monitor R)'
 21 'Line 03'
 22 'Line 04'
 23 'Line 05'
 24 'Line 06'
 25 'Line 07 (Headphones 1 L)'
 26 'Line 08 (Headphones 1 R)'
 27 'Line 09 (Headphones 2 L)'
 28 'Line 10 (Headphones 2 R)'
 29 'Line Out 01 Volume Control', ENUM
 30 'Line Out 02 Volume Control', ENUM
 31 'Line Out 03 Volume Control', ENUM
 32 'Line Out 04 Volume Control', ENUM
 33 'Line Out 05 Volume Control', ENUM
 34 'Line Out 06 Volume Control', ENUM
 35 'Line Out 07 Volume Control', ENUM
 36 'Line Out 08 Volume Control', ENUM
 37 'Line Out 09 Volume Control', ENUM
 38 'Line Out 10 Volume Control', ENUM
 39 'Mix A Input 01'
 40 'Mix A Input 02'
 41 'Mix A Input 03'
 42 'Mix A Input 04'
 43 'Mix A Input 05'
 44 'Mix A Input 06'
 45 'Mix A Input 07'
 46 'Mix A Input 08'
 47 'Mix A Input 09'
 48 'Mix A Input 10'
 49 'Mix A Input 11'
 50 'Mix A Input 12'
 51 'Mix A Input 13'
 52 'Mix A Input 14'
 53 'Mix A Input 15'
 54 'Mix A Input 16'
 55 'Mix A Input 17'
 56 'Mix A Input 18'
 57 'Mix B Input 01'
 58 'Mix B Input 02'
 59 'Mix B Input 03'
 60 'Mix B Input 04'
 61 'Mix B Input 05'
 62 'Mix B Input 06'
 63 'Mix B Input 07'
 64 'Mix B Input 08'
 65 'Mix B Input 09'
 66 'Mix B Input 10'
 67 'Mix B Input 11'
 68 'Mix B Input 12'
 69 'Mix B Input 13'
 70 'Mix B Input 14'
 71 'Mix B Input 15'
 72 'Mix B Input 16'
 73 'Mix B Input 17'
 74 'Mix B Input 18'
 75 'Mix C Input 01'
 76 'Mix C Input 02'
 77 'Mix C Input 03'
 78 'Mix C Input 04'
 79 'Mix C Input 05'
 80 'Mix C Input 06'
 81 'Mix C Input 07'
 82 'Mix C Input 08'
 83 'Mix C Input 09'
 84 'Mix C Input 10'
 85 'Mix C Input 11'
 86 'Mix C Input 12'
 87 'Mix C Input 13'
 88 'Mix C Input 14'
 89 'Mix C Input 15'
 90 'Mix C Input 16'
 91 'Mix C Input 17'
 92 'Mix C Input 18'
 93 'Mix D Input 01'
 94 'Mix D Input 02'
 95 'Mix D Input 03'
 96 'Mix D Input 04'
 97 'Mix D Input 05'
 98 'Mix D Input 06'
 99 'Mix D Input 07'
 100 'Mix D Input 08'
 101 'Mix D Input 09'
 102 'Mix D Input 10'
 103 'Mix D Input 11'
 104 'Mix D Input 12'
 105 'Mix D Input 13'
 106 'Mix D Input 14'
 107 'Mix D Input 15'
 108 'Mix D Input 16'
 109 'Mix D Input 17'
 110 'Mix D Input 18'
 111 'Mix E Input 01'
 112 'Mix E Input 02'
 113 'Mix E Input 03'
 114 'Mix E Input 04'
 115 'Mix E Input 05'
 116 'Mix E Input 06'
 117 'Mix E Input 07'
 118 'Mix E Input 08'
 119 'Mix E Input 09'
 120 'Mix E Input 10'
 121 'Mix E Input 11'
 122 'Mix E Input 12'
 123 'Mix E Input 13'
 124 'Mix E Input 14'
 125 'Mix E Input 15'
 126 'Mix E Input 16'
 127 'Mix E Input 17'
 128 'Mix E Input 18'
 129 'Mix F Input 01'
 130 'Mix F Input 02'
 131 'Mix F Input 03'
 132 'Mix F Input 04'
 133 'Mix F Input 05'
 134 'Mix F Input 06'
 135 'Mix F Input 07'
 136 'Mix F Input 08'
 137 'Mix F Input 09'
 138 'Mix F Input 10'
 139 'Mix F Input 11'
 140 'Mix F Input 12'
 141 'Mix F Input 13'
 142 'Mix F Input 14'
 143 'Mix F Input 15'
 144 'Mix F Input 16'
 145 'Mix F Input 17'
 146 'Mix F Input 18'
 147 'Mix G Input 01'
 148 'Mix G Input 02'
 149 'Mix G Input 03'
 150 'Mix G Input 04'
 151 'Mix G Input 05'
 152 'Mix G Input 06'
 153 'Mix G Input 07'
 154 'Mix G Input 08'
 155 'Mix G Input 09'
 156 'Mix G Input 10'
 157 'Mix G Input 11'
 158 'Mix G Input 12'
 159 'Mix G Input 13'
 160 'Mix G Input 14'
 161 'Mix G Input 15'
 162 'Mix G Input 16'
 163 'Mix G Input 17'
 164 'Mix G Input 18'
 165 'Mix H Input 01'
 166 'Mix H Input 02'
 167 'Mix H Input 03'
 168 'Mix H Input 04'
 169 'Mix H Input 05'
 170 'Mix H Input 06'
 171 'Mix H Input 07'
 172 'Mix H Input 08'
 173 'Mix H Input 09'
 174 'Mix H Input 10'
 175 'Mix H Input 11'
 176 'Mix H Input 12'
 177 'Mix H Input 13'
 178 'Mix H Input 14'
 179 'Mix H Input 15'
 180 'Mix H Input 16'
 181 'Mix H Input 17'
 182 'Mix H Input 18'
 183 'Mix I Input 01'
 184 'Mix I Input 02'
 185 'Mix I Input 03'
 186 'Mix I Input 04'
 187 'Mix I Input 05'
 188 'Mix I Input 06'
 189 'Mix I Input 07'
 190 'Mix I Input 08'
 191 'Mix I Input 09'
 192 'Mix I Input 10'
 193 'Mix I Input 11'
 194 'Mix I Input 12'
 195 'Mix I Input 13'
 196 'Mix I Input 14'
 197 'Mix I Input 15'
 198 'Mix I Input 16'
 199 'Mix I Input 17'
 200 'Mix I Input 18'
 201 'Mix J Input 01'
 202 'Mix J Input 02'
 203 'Mix J Input 03'
 204 'Mix J Input 04'
 205 'Mix J Input 05'
 206 'Mix J Input 06'
 207 'Mix J Input 07'
 208 'Mix J Input 08'
 209 'Mix J Input 09'
 210 'Mix J Input 10'
 211 'Mix J Input 11'
 212 'Mix J Input 12'
 213 'Mix J Input 13'
 214 'Mix J Input 14'
 215 'Mix J Input 15'
 216 'Mix J Input 16'
 217 'Mix J Input 17'
 218 'Mix J Input 18'
 219 'Mixer Input 01', ENUM
 220 'Mixer Input 02', ENUM
 221 'Mixer Input 03', ENUM
 222 'Mixer Input 04', ENUM
 223 'Mixer Input 05', ENUM
 224 'Mixer Input 06', ENUM
 225 'Mixer Input 07', ENUM
 226 'Mixer Input 08', ENUM
 227 'Mixer Input 09', ENUM
 228 'Mixer Input 10', ENUM
 229 'Mixer Input 11', ENUM
 230 'Mixer Input 12', ENUM
 231 'Mixer Input 13', ENUM
 232 'Mixer Input 14', ENUM
 233 'Mixer Input 15', ENUM
 234 'Mixer Input 16', ENUM
 235 'Mixer Input 17', ENUM
 236 'Mixer Input 18', ENUM
 237 'ADAT Output 1', ENUM
 238 'ADAT Output 2', ENUM
 239 'ADAT Output 3', ENUM
 240 'ADAT Output 4', ENUM
 241 'ADAT Output 5', ENUM
 242 'ADAT Output 6', ENUM
 243 'ADAT Output 7', ENUM
 244 'ADAT Output 8', ENUM
 245 'Analogue Output 01', ENUM
 246 'Analogue Output 02', ENUM
 247 'Analogue Output 03', ENUM
 248 'Analogue Output 04', ENUM
 249 'Analogue Output 05', ENUM
 250 'Analogue Output 06', ENUM
 251 'Analogue Output 07', ENUM
 252 'Analogue Output 08', ENUM
 253 'Analogue Output 09', ENUM
 254 'Analogue Output 10', ENUM
 255 'Clock Source Clock Source', ENUM
 256 'Dim', PBS
 257 'Mute', PBS
 258 'S/PDIF Output 1', ENUM
 259 'S/PDIF Output 2', ENUM

Can anyone point me in the direction I should be going to get a patch working for the 2nd gen? My C is a bit rusty but I reckon I could get something hacked together if someone can provide me with a bit of an intro with how the code here works...

Thanks!