Most any USB Class Compliant audio device can get sound in and out of your OS, but if the hardware requires special control software to access some of its settings or features, that software rarely functions on Linux...with a few exceptions. There is control software that is accessed via a web browser for some Behringer and MOTU devices, and Focusrite Scarlett and Clarett devices have a native control software application written by an individual on this forum that is polished and feature-complete https://github.com/geoffreybennett/alsa-scarlett-gui.
Personally, I prefer audio interfaces that require no software to ensure they are as future-proof as possible. Some examples of these types of interfaces are the UMC204HD, UMC404HD, and UMC1820 by Behringer, but there are many others. I have owned a UMC1820 for 6+ years that I use as the main sound card on my desktop machine, and it is operating as well today as the day I bought it. I also have a Tascam DR-40X that I mostly use as a field recorder, but it also functions perfectly well as a 2-in/2-out USB audio interface.
In my experience, the most significant audio configuration steps for low-latency performance are: 1) setting up realtime scheduling https://jackaudio.org/faq/linux_rt_config.html, 2) adding "threadirqs" to the kernel boot parameters line in GRUB https://wiki.linuxaudio.org/wiki/system ... the_kernel, and 3) installing the rtirq script and configuring it to prioritize your sound card https://www.rncbc.org/drupal/node/2638. Whether or not I see notable improvements disabling networking or using the performance governor seems to depend on the machine. The three steps I most recommend only need to be completed once and will persist across reboots.
Disabling networking is typically easy to do via the network settings GUI in most distributions, and often worth doing in my opinion, but that can simply be toggled on and off as needed. Adjusting the frequency scaling governor to "performance" was a notable improvement on my Raspberry Pi 5 during some tests, but on other modern machines I have not seen much difference in the number of xruns produced whether it was set to "performance" or "ondemand". I have noticed no difference whatsoever with some longtime standard recommendations, such as adjusting the level of swappiness. This was probably useful 15-20 years ago, but I do not think it is relevant today. Linux OSes had been using tickless timers for over a decade before the defunct recommendation of setting the kernel frequency to 1000Hz was finally dropped as standard advice.
A step I find to be crucial that seems often overlooked in forum threads and setup guides is configuring the rtirq script to prioritize your particular sound card. By default, it prioritizes a computer's internal sound card over a USB device, so merely installing it will not provide the best results if you are using a USB audio interface. The simplest way to configure this is to follow the steps below. Using the name "snd-usb" has not worked properly for me in a couple situations, but "usb" has always worked, so I consider it a better default name when using a USB audio interface. Another name I have used in place of "snd-usb" is "xhci_hcd", but it takes a bit of investigation to understand if using "usb" has any drawbacks and whether or not another name provides any benefits. The commands "lsusb -t" and "cat /proc/interrupts" are good places to look for potential naming options, and "sudo systemctl status rtirq" can provide some insight on whether or not a particular name works after it is saved and the script is restarted. Keep in mind, this configuration is useless if "threadirqs" is not added to the kernel's boot parameters.
Open a terminal and type:
Change this line:
Code: Select all
RTIRQ_NAME_LIST="snd snd-usb i8042"
To look like this:
Restart the rtirq script: