I'm working on a Focusrite Scarlett 18i20 2nd Gen mixer driver (update to the snd-usb-audio kernel module). So far I can:
- set analogue output volumes
- switch between analogue output volumes controlled by software or the hardware front panel knob
- set the volumes of the 18 inputs for each of the 10 mixes (180 faders!)
- set the sources for the 20 analogue outputs
- set the sources for the 18 PCM inputs
- set the sources for the 18 mixer inputs

Currently lacking at least:
- load/save of mixer state
- reading of current state (volume knob, mute and dim buttons, levels)

If there's anyone with one of these devices (must be an 18i20 2nd gen, USB ID 1235:8201) who is comfortable with make, rmmod, and insmod and wants to try this (alpha-quality) driver out and give me feedback, please send me a PM. Even better if you are familiar with kernel USB and/or ALSA development (I'm not, and I have some questions!).

Thanks,
Geoffrey.

Screenshot from 2018-08-11 00-01-25.png

You do not have the required permissions to view the files attached to this post.

trrichard wrote:Looks like I can't send PM's yet, I have and 18i8 and I'd be happy to help.

Here's my current code: https://nofile.io/f/v7e9Vxf6GbO/scarlett-gen2.tar.gz
Inside you'll find a tiny patch to a few files in sound/usb plus a new file to go in the same directory. What is working for me to build and test it is:
- make M=sound/usb
- "autospawn = no" in .config/pulse/client.conf
- pulseaudio -k
- killall pulseaudio alsactl
- rmmod snd_usb_audio
- insmod sound/usb/snd-usb-audio.ko

trrichard wrote:Should be pretty similar with limited dimensionality on the output matrix.

Yes, hopefully! There's changes that'd need to be made for the front panel buttons too, e.g. inst/pad are software controlled on the 18i8 vs. hardware buttons on the 18i20.

Since my previous post, I added support for reading the current state (volume knob, mute and dim buttons, levels) from the interface. Feedback from people who manage to get it working would be appreciated.

I have a 18i20 2nd Generation, running on Linux (Debian stretch, kernel 4.9.47). I've patched the kernel, so the 18i20 is recognized.
Can you give me a link to the patch from august-29. ?
If you need more testing to be done, i'm willing to participate.

I've just purchased a 2nd generation 6i6 and would love to help (assuming the 2nd generation 6i6 behaves similarly to the 2nd generation 18i20). I've got a fair amount of Linux kernel experience (but never in ALSA) as well as access to a USB analyzer.

It appears the link to the source above is broken. Would it be possible to get an updated link?

I just bought and hooked up an 18i8 2nd gen (used a Mac to run the Focusrite mixer/config software), so I was really pleased to find this discussion. Is this driver still under development and is the source available?

Hi all, I'm so sorry for the delay! I thought no-one was interested because I logged in LinuxMusicians occasionally and there was never a notification that someone had posted to the thread. Is there a better platform that we can do this on?

I've been using it for the past few months, to configure the zero-latency monitoring and it's also neat to be able to control the capture mux which I don't think the Focusrite Control software lets you do. This means that the ALSA PCM inputs can be assigned to the internal mixer outputs so then you can do a mix in hardware and the ALSA application only has to capture 2 channels.

I should mention that I have a problem where my interface stops outputting audio after long time of inactivity (like if I leave it on overnight). Not sure if that's a hardware fault, a Linux USB audio fault, or a fault caused by my patch. I haven't been motivated enough to investigate it yet, as it hasn't stopped working when I've actually been using it.

Since you will be doing collaboartive software development, you could create a Github repository for[1] those files (along with a LICENSE, README, etc.) Folks who want to collaborate with you on the drive can then create their own forks, submit pull requests to you, etc. Folks who just want the latest-and-greatest can download the zipfile from Github, along with downloading zipfiles for any tagged releases you make[2].