A complete guide to configuring FreeBSD as an audiophile audio server: setting up system and audio subsystem parameters, real-time operation, bit-perfect signal processing, and the best methods for enabling and parameterising the system graphic equalizer (equalizer) and high-quality audio equalization with FFmpeg filters. Linux users will also find useful information, especially in the context of configuring and personalising the MPD player and filters.
↫ Marcin Szewczyk-Wilgan
FreeBSD is a much more capable desktop and workstation operating system than it gets credit for, especially with the Linux world sucking all the air out of the room, but you do often need to do a little more and dive a little deeper into the operating system to get it to do what you want. In the case of audio, Szewczyk-Wilgan explains that he thinks it’s even ahead of Linux, due to being able to “precisely track the parameters of the audio device along with the system kernel parameters and modify them”, as well as FreeBSD having better support for real-time operation.
This guide is an incredibly detailed explanation of which options and configurations you should use in FreeBSD to turn it into an audio server. This clearly isn’t for everyone, and I assume most audio experts won’t be considering FreeBSD, but what this article demonstrates is that it’s very, very much possible to do so.
This reminded me of post of twitter user MostlyBSD from some time ago https://x.com/mostly_bsd/status/1377082599852630019
“One unexpected benefit of switching from Linux to FreeBSD is my khadas_official
tone board USB DAC sounds leaps and bounds better. Audiophile folks should definitely give FreeBSD a shot.”
I think anyone who enjoys FOSS UNIX should give FreeBSD a go. My main gripe with Linux distros is the sheer variety and inconsistency between all of them. Sometimes you can have too much choice. With BSD, the whole kernel side and basic userland is just standard, which allows all the components to integrate more smoothly, and weird outlier cases where x subsystem won’t talk to y driver to be fewer and far between. I ran PC BSD as a daily driver for many months (a long time ago, mind you. I am talking PC BSD here…) and it was by far the best experience i had with a FOSS *NIX. Stable as a rock, well documented, all my peripherals worked. Linux OTOH (and yes, i get that Linux is much better now) was flakey and suffered unending issues, from graphics driver crashes, to installation corruption. And i was largely using things like Linux Mint and Ubuntu distros.
FreeBSD needs more love than it gets. I’ll never run a Linux as a daily driver again, but if i need that kind of *NIXy environment, i’d jump at FreeBSD
That page is not found.
Why would an USB DAC sound differently depending on the type of OS it is being used with?
Xanady Asem,
I think this has to do with drivers that alter the audio streams in software versus playing it in “bit perfect” mode using the author’s terminology.
Like anything there are pros and cons. Doing effects in software, like resampling and scaling, allows drivers to mix an arbitrary number of streams and control stream volumes independently. A driver that programs hardware registers to do this might have different “quality”, at least in theory.
Consider that changing the volume by multiplying each waveform sample by 1/2 will obviously decrease the waveform bit depth by 1, whereas a hardware register may control the volume while retaining the full bit depth. So it’s plausible that different kinds of drivers have different audio qualities, Then the question becomes whether the changes are within the range of human hearing. There is where double blind A/B testing is helpful to determine whether audiophile claims are credible versus bias.
Personally I don’t think I could hear a difference given the low quality of my audio setup.
AFAIK USB jitter is a thing. Then it depends on how the device and drivers handle it. You may have a bit stream of encoded audio that would, in theory, resist jitter fine. Perhaps at the cost of latency?
But if you are sending a stream of decoded audio, then I suppose you are more at risk, especially if you force a very short buffer to reduce latency.
Back in the day, FireWire audio cards were preferable due to DMA, supporting shorter buffers and lower CPU utilization.
Please anyone correct me if I am speaking BS – it’s been many years.
We have advanced quite a bit in the past couple of decades. 😉
Modern USB stacks have more than enough BW/latency for audio use cases.
Similarly. Assuming they are using the same application and media files, there should be nothing the Linux or FreeBSD sound stacks are doing to make the same USB/DAC HW sound “different” Which is why I felt it was a weird thing to note by the author. Unless they set some key configuration flag somewhere differently between systems.
It was a good write up on setting the audio subsystem in FreeBSD (which is still not a trivial task).
However, it wouldn’t be a FreeBSD article without some uninformed nonsense about linux:
“An additional advantage of using FreeBSD is the fact that it provides better support for real-time operating system (hereafter: RTOS) and real-time programs. Better does not mean perfect, but Linux is much further behind in this respect. It is only since 2024 that Real-Time Linux (PREEMPT_RT) has become an equal part of the kernel and its main software line.”
For how much people praise FreeBSD for being an integrated full OS, and seeing how almost all of this is modifying the system config, it’s a shame that there is no graphical way to tune this. The kind of person this post is targeted to would probably appreciate a YAST-like application.