Gen 2 Progress
There was no progress on my end for a long time due to lack of time and hardware, but now I have development hardware again I'm back working on it, and if you have a 6i6/18i8/18i20 Gen 2 device I'd really like your help now with testing, regardless of whether it worked for you before or not or if you haven't tried it before. With enough success reports I hope that we can get to a point soon where the stable kernel has the mixer driver enabled by default and we don't need the "device_setup=1" option to enable it.
The current v5 longterm, stable, and mainline kernels (v5.4.121, v5.10.39, v5.12.6, v5.13-rc3) all support the Gen 2 devices only on USB 3 ports (xHCI host driver) and for the longest time I had no idea why (it took a while to even figure out that the problem was only happening on USB 2 ports with the EHCI host driver). I finally realised last week after many hours & days of head-scratching and hair-pulling that "snd" doesn't always mean "sound" and sometimes it means "send", and if you're trying to receive data, it's not a good idea to ask for a "usb_sndctrlpipe". So, the next release of those kernels should have a Gen 2 mixer driver that works for everyone! (fingers crossed, please test and advise!)
I've added two new features to the Gen 2 driver since then:
1. Restore all settings during startup. While I figured out how to load most of the settings from the hardware while writing the driver, I never figured out how to load the mixer volumes and the mux configuration, and if you wanted to edit your settings after reloading the driver (reboot or plug/unplug) you needed to have saved the configuration yourself beforehand even though the hardware remembered it. Many thanks to @sadko4u who figured out how to do this, as this makes the mixer driver far more usable now.
2. Add "Sync Status" control. I think(!) that this is the final Gen 2 mixer hardware feature that wasn't implemented in my kernel driver. This is a read-only control that displays either "Locked" or "Unlocked" indicating whether or not the interface is locked to a valid clock source.
If you can help test this, that would be great, and please report back here how it goes! You can find the code, RPMs, and debs here: https://github.com/geoffreybennett/scar ... /v5.12.5s3
Once I get some success reports on those new features I will send them to be included in the mainline kernel.
To test:
Besides using a kernel with the new version of the driver, you need enable the module by passing the "device_setup=1" option to it. If you've got more than one USB audio device, you need to make sure that option goes to the Scarlett interface; you can do that with a line like this in /etc/modprobe.d/scarlett.conf:
6i6 2nd Gen:
Code: Select all
options snd_usb_audio vid=0x1235 pid=0x8203 device_setup=1
Code: Select all
options snd_usb_audio vid=0x1235 pid=0x8204 device_setup=1
Code: Select all
options snd_usb_audio vid=0x1235 pid=0x8201 device_setup=1
Code: Select all
dmesg|grep -A 5 -B 5 Scarlett
Code: Select all
alsamixer -cUSB
After testing, please reply here with the output of "uname -a", "dmesg|grep -A 5 -B 5 Scarlett", the features you tested, and the results.
Gen 3 Progress
The last release I did at https://github.com/geoffreybennett/scar ... g/v5.8.8s1 has reasonable support for the 4i4 (as good as Gen 2 had before my recent updates), and I had success reports for the 8i6, 18i8, and 18i20 but especially the 18i20 had troubles I couldn't fix without the hardware.
@sadko4u took my driver and greatly improved the 18i20 support and also added Solo and 2i2 support; you can find his work at https://github.com/sadko4u/scarlett-gen ... rlett-gen3 and https://github.com/sadko4u/focusrite-scarlett-backports
None of the Gen 3 changes are in a state suitable for submission to the kernel yet though. What's there needs to be rebased to the current development kernel version and squashed and pulled apart so that each patch is a logical change as per https://www.kernel.org/doc/html/v5.12/p ... ur-changes. I've started on this process already and snuck some of the work from the Gen 3 driver into the Gen 2 code mentioned above (because we need to test and make sure that none of the Gen 3 changes affect Gen 2 functionality of course).
I should have some more Scarlett Gen 3 hardware arriving next week and then I'll be able to be a lot more confident as I put the patches into a suitable form for submission when I can test and develop with hardware in front of me. In the meantime I'll see about getting at least the 4i4 parts from the v5.8.8s1 release rebased onto v5.12.5s3.
Whew! And thanks for your patience. I think we're almost there!