Just posting a list of my DACs / USB sound cards that work on FreeBSD 12.x (recently tested on 12.2-RELEASE). These all work perfectly well for audio playback, and sound really good.
1.) M-Audio Fast Track (not the Pro model) [24bit up to 48kHz)
2.) Audient iD4 [32bit up to 96kHz]
3.) iFi Zen DAC Signature [32bit up to 384kHz]
2 and
3 I can confirm to work in bit-perfect mode, however
2 has serious caveat in full bit-perfect mode.
1 does not work in bit-perfect mode at all.
2 has an issue whereby the record (rec) vchan must be set to the same sample-rate (vchanrate) as the play channel, even in bitperfect mode, which is annoying and not realistically viable in full bit-perfect mode. I have yet to make a bug report for this. If the vchanrate of the rec channel does not match the vchanrate of the play channel, then the sound is distorted/garbled; the music can be heard, but sounds horrible. For bitperfect=0 this not a problem, just set the same vchanrate for both play and rec. But for bitperfect=1 on the play channel; I have to set bitperfect=0 on both channels, set the vchanrate of the rec channel to the same sample-rate that the play chanenel uses and change back to bitperfect=1. This workaround will only work in full bit-perfect mode if the PCM stream is the same samplerate as what we just set the vchanrate to. But in partial bit-perfect mode (vchans=1), whereby OSS is resampling to match the vchanrate and vchanformat, there is no problem as long as the rec vchanrate matches the play vchanrate. In short, if you want proper bit-perfect mode, it's best not buy this USB soundcard and instead buy a proper DAC which only has play channels and supports all the sample rates of your audio collection (I recommend 192kHz or above).
3 seems to work better using the older 5.20 firmware, which unfortunately I had to find a Windows machine to flash it from. MacOS can also be used to flash firmware to this device.
I highly recommend
2 and
3, depending on your budget. They are both available on the market as of the date of this post.
2 is an entry level proffessional grade audio production device (for a recording studio), which works well as DAC in no-bit-perfect mode.
3 is a high end DAC for Hi-Fi audiophiles, and one the best value for money DACs on the market as of writing. The original "Zen DAC" (not the Signature model) should also be good, and is about half the price of the Signature model that I have.
With the right settings in
musicpd (MPD server), the audio quality is amazing. I have posted below the relevant sections of my configs for non-bitperfect-mode (still sounds great for my 96kHz/24bit and 192kHz/24bit FLACs). Note that whether using bitperfect mode or not, do not set the
format variable in your
musicpd.conf audio_output section; it seems to make
musicpd use its own resampler, which is poor quality. FreeBSD's native OSS mixer / resampler (virtual channels) is far superior, especially if we set the sysctl
hw.snd.feeder_rate_quality=4.
I have only tested these using PCM (Pulse Code Modulation) and not DSD (Direct Stream Digital).
/etc/sysctl.conf for
2:
Code:
# AUDIO
hw.snd.default_auto=0
hw.snd.default_unit=0
hw.snd.feeder_rate_quality=4
#hw.snd.maxautovchans=16
hw.snd.verbose=2
#hw.snd.vpc_0db=45
hw.snd.vpc_autoreset=0
hw.snd.vpc_mixer_bypass=0
dev.pcm.0.bitperfect=0
dev.pcm.0.play.vchans=8
dev.pcm.0.rec.vchans=8
dev.pcm.0.play.vchanformat=s32le:2.0
dev.pcm.0.rec.vchanformat=s32le:2.0
dev.pcm.0.play.vchanmode=passthrough
dev.pcm.0.rec.vchanmode=passthrough
dev.pcm.0.play.vchanrate=96000
dev.pcm.0.rec.vchanrate=96000
/etc/sysctl.conf for
3:
Code:
# AUDIO
hw.snd.default_auto=0
hw.snd.default_unit=0
hw.snd.feeder_rate_quality=4
#hw.snd.maxautovchans=16
hw.snd.verbose=2
#hw.snd.vpc_0db=45
hw.snd.vpc_autoreset=0
hw.snd.vpc_mixer_bypass=0
dev.pcm.0.bitperfect=0
dev.pcm.0.play.vchans=8
dev.pcm.0.play.vchanformat=s32le:2.0
dev.pcm.0.play.vchanmode=passthrough
dev.pcm.0.play.vchanrate=384000
/usr/local/etc/musicpd.conf:
Code:
audio_output {
type "oss"
name "USB DAC"
#device "/dev/dsp0.0"
#format "*:*:*"
mixer_type "software"
}