Focusrite Scarlett 18i8 and Linux

The as of this writing, this device only works for sound output with the kernel snd_usb_audio driver because it does not expose any mixer controls to ALSA, so all the software mixing and toggles are stuck at the defaults. They could also be stuck at the last settings written from the Focusrite Control desktop app on operating systems other than Ubuntu.

Alright, let's get that ALSA mixer to work. Find the card number with aplay -l and locate the device with Focusrite in the output. Determine if yours is exposing the mixer settings with amixer -c <card number> controls. The output should have hundreds of lines. If there are less than 10 lines with the type iface=MIXER then the driver isn't loaded with the correct options.

To load the correct options, find the USB vendor and product id with lsusb | grep Focusrite which should output something like Bus 004 Device 010: ID 1235:8204 Focusrite-Novation Scarlett 18i8 2nd Gen but with different device index numbers and possibly a different device name. The values after the ID are the vendor and product id

We need to tell the driver to send the option device_setup=1 to this device, which when loaded will call a bunch of code to expose the mixer controls to ALSA. Create file named /etc/modprobe.d/scarlett.conf, with the contents options snd_usb_audio vid=0x1235 pid=0x8204 device_setup=1 substituting the values for vid and pid to match your lsusb output.

Reboot, or reload the module if you know how to do that. Repeat these steps to confirm the mixer controls are loaded. If they are not, check the output of dmesg while powering the device on and off. You should now have a pro quality multichannel digital audio interface for your DAW or whatever.

Two unexpected side effects from my journey

First, alsamixer has a terribly confusing mapping of mixer names to GUI controls. The Focusrite Control desktop app has a decent UI because it limits the exposed options for common use cases. It looks like the following. A discussion of the ALSA mixer deserves its own post.

Second, I have a novel hardware setup that caused a weird driver bug when configured with the correct mixer options. My primary monitor is an Apple Thunderbolt 2 display with an internal USB hub exposing three physical connectors, though there are more devices on the bus, namely the built in speakers/microphone (another USB audio device) and the built in camera. The connector looks like a Mini Display Port but has a different wire protocol so it won't work when connected to a display port input.

My display is connected to a Thunderbolt 3 adapter which uses the same connector as USB-C on the output end. The computer in question is a Thinkpad P1 with two USB-C connectors which also seem to support Thunderbolt 3. So that's good. Ubuntu has software device authorization settings so this display works quite well by default on 20.04...until I connect the Focusrite device to the USB hub! It doesn't work at all. No sound. My debug log is on a github issue for a mixer GUI project but that issue is closed as not relevant. It's a mystery when it doesn't work on this bus.

The solution was to connect the Focusrite to a USB hub on the Thinkpad. It just worked 🤷

Hardware features list, as promised

Front panel

  • 4 analog inputs with the XLR and 1/4" hybrid connector
  • hardware gain knobs on inputs
  • 1-2 software toggle between line/instrument and mic voltage level
     * software toggle between a few -db padding and a low-pass filter
     * hardware toggle between 48v phantom power for 1-2 and 3-4
  • big alumnium monitor output volume knob
  • hardware toggle to mute monitor output
  • 2 aluminum headphone monitor knobs
  • 2 stereo 1/4" headphone outputs

Rear panel

  • 4 analog 1/4" line level inputs
  • 2 analog 1/4" monitor outputs
  • 1 RCA S/PDIF digital input
  • 1 RCA S/PDIF digital output
  • 1 ADAT optical digital input connector with 8 channels

Debugging links for driver

Link to kernel source code
Link to scarlett-mixer source code