Okay, here's a big one:
I've been a bit of a pro audio enthusiast for most of my adult life, but as a Linux user, one of my biggest disappointments has been the lack of any Thunderbolt (i.e., ultra-low latency) audio interfaces on the market that work with Linux.
For those unaware, most USB-powered audio devices play well with Linux out-of-the-box because they comply with the USB Audio Class specification. Thanks to Apple's history of stressing "class compliance" to pro audio hardware vendors, a single USB Audio Class-compatible ALSA driver (snd-usb-audio) allows most USB audio interfaces on the market to provide basic functionality out-of-the-box on Linux.
Unfortunately, however, there's no such thing as a "Thunderbolt Audio Class" specification. In fact, to this day the Linux kernel doesn't contain a single upstreamed ALSA driver for a pro audio Thunderbolt audio interface. And to that end, I present you with my project:
A Linux audio (ALSA) driver for the Focusrite Clarett (Thunderbolt 2) line of audio interfaces!
The Focusrite Clarett Thunderbolt line includes the following devices, though most of these devices are also available in USB variants:
- Clarett 2Pre
- Clarett 4Pre
- Clarett 8Pre
- Clarett 8PreX
For the last couple years—and the last couple months in earnest—I've been working on a clean-room reverse-engineered ALSA driver to allow a Thunderbolt-capable Linux host to communicate with the Clarett Thunderbolt line of products. And, as of a week ago, I've finally managed to make enough progress to establish basic functionality across the control plane. No PCM functionality yet though, unfortunately.
Because Focusrite provides USB-equivalent versions of most of their Clarett Thunderbolt devices—and because the Linux community already provides an upstream driver and user-space CLI/GUI tools for those devices—I've recently managed to "vibe code" some basic integration between my own ALSA driver and the already-available user-space tools for the Clarett USB line of devices.
As I stated earlier, my driver unfortunately doesn't support PCM streams yet, which means there's currently no way to stream audio between the Linux host and the Clarett devices (via the Thunderbolt cable) yet. Things are to the point, however, where I'm able to route S/PDIF (optical) input from my Linux host to the Clarett analog output channels and play music through a pair of studio monitors (i.e., audio speakers).
There's still so much to do, of course! At this point, though, things are in a good enough place that I'm ready to share my development progress with the community. I hope to release the source code to the public soon. Hope you like it!
alsa-scarlett-gui