EDIT: As it turns out, the Pi 3B will do DSD256 over Ethernet to a USB DAC, so none of this was necessary.
Here’s a plan I cooked up, and I’d love to get feedback from folks with more expertise than me:
To me, the “perfect” USB network bridge needs to reliably handle all the bandwidth that Roon can throw at it while generating no mechanical noise and as little electrical noise as possible. There are devices that do this for $250 and up, but I wanted to see what I could do for under $100.
By all accounts, the Raspberry Pi 3b is the almost perfect low-budget network bridge. However, it has one minor flaw when it comes to USB DACs The USB and ethernet ports are on the same bus, so the traffic to both share the same pipeline.This isn’t a problem for streaming Redbook or even MQA tracks. However, it can cause dropouts in higher-resolution PCM and DSD files (or when upsampling to DSD). Great, but not perfect.
There are a number of other inexpensive SBCs that don’t make the USB and Ethernet share a bus. I have two of the Allo Sparkys, and they work great for driving basic (class 1?) DACs. However, for hi-resolution DACs, Linux requires patching to enable the full feature set of each DAC, and these less popular boards don’t get nearly as much development attention as Raspberry Pis do.
Enter the Raspberry Pi 4b: It does not use the same bus for USB and Ethernet, and it has USB3 and true gigabit Ethernet, so bandwidth is not an issue. Plus it is the most popular SBC, so it gets all the updates and patches. However, when the Pi 4 was introduced, some audiophiles worried that the increased power requirements would result in more noise. Worse yet, the increased heat generation is such that most every case sold for it includes a fan, which would result in lots more mechanical and electrical noise.The theory was that all this extra noise would compromise sound quality compared to the Pi 3b.
But wait, DietPi has all kinds of configuration options, so maybe there is a way to make this work! What if I used the Pi 4, but underclocked it so that it would reduce PSU noise and generate less heat, so it wouldn’t require a fan?
I gathered up the following components to try it out:
- $41 - Raspberry Pi 4b - (I splurged and got the 2GB model for $45, but 1GB is plenty.)
- $16 - Flirc Pi 4 aluminum case
- $6 - Micro SD card - 16GB class 10
- $12 - Allo low-noise switching PSU
- $2 - Allo USB-C adapter
- $77 total (plus tax and shipping)!
Lets talk about these accessories a bit. The Flirc case is the easiest, most clever Pi case I’ve used. It’s made of cast aluminum, and the entire structure of the case acts as a massive heat sink. It’s also super-easy to assemble, and it looks great. The Allo PSU is not a fancy linear power supply, but it is a switching mode PSU that is specifically designed for low noise audio. I don’t have golden ears, but used with my other SBCs, it did seem to make an improvement in sound quality compared to the iPad chargers or whatever I was using before it. Paired with the Allo USB-C adapter, it provides 3A of “dumb” power–unaffected by the Pi 4’s USB-C power flaw.
I ordered and assembled the parts above, then I flashed the latest version of DietPi onto the Micro SD card and started my usual setup. I installed Roon Bridge and connected my new MSML m500 DAC. As expected with the Raspberry PI version of DietPi, Roon recognized the Native DSD capability of the DAC and PCM bandwidth capability up to 32bit / 768Khz.
Along with turning off the display output, the wifi, and the bluetooth, I normally turn on “PSU noise reduction” in the DietPi configuration.This time I took all these measures, then went further and started tinkering around with the Performance Settings.I chose the “energy saving” overclocking profile, labeled as “1500MHz ARM, 500 Mhz core, -2 overvolt.” I have no idea what any of this means, so I figured why stop there? I set the CPU governor to powersave (which I believe is the same as the “PSU Noise Reduction” setting), and I lowered the ARM idle frequency to 300 MHz (which DietPi showed as the recommended setting).
Heat-wise, it seems to be working great: It’s been on for a day or two, and it’s currently at 39C. And that’s in the closed drawer of my nightstand.
I only have a few super hi-resolution files, but it has handled them all great. DSD256 and 24bit/352.8KHz FLAC. Maybe a slight tick here and there, but in my limited listening time, it’s so seldom that I can’t even be sure it came from the streamer or the DAC. I just doesn’t happen often enough to see a pattern. Redbook and Tidal MQA sound great. I haven’t been able to tell if there is any difference in sound quality as compared to the Pi 3B or the Sparky.
Now, having read this really long post (thank you), is there anything you all would configure differently? Would you set the performance settings differently for more stability, better sound, or better performance? Are there any other setting you would tweak? Would you connect the DAC to USB2 or USB3? Has anyone else tried this and would care to share their experiences?