Underclocked Pi 4: The perfect low-budget ($77) USB Bridge?

EDIT: As it turns out, the Pi 3B will do DSD256 over Ethernet to a USB DAC, so none of this was necessary. :weary:

================================

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. :poop:

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?

4 Likes

Assuming your Roon Core CPU is decent enough, turn on Parallelize Sigma Delta Modulator and test with setting Roon DSP Engine to upsample everything to DSD512.

1 Like

https://community.roonlabs.com/t/ropieee-on-raspberry-pi-4/91848?u=jim_f

Mine was $74

1 Like

I have the same setup as you have here, Pi4B 2Gb in a Flirc case, however i power mine with a different switched wall wart, not very audiophile at alll.
My various Pi’s have always been underclocked/powersave mode and i have NEVER EVER had any issues with the audio stream dropping out or any audible ticks or pops. My Pi4 is also always at 39°C!?
(First one, i fried due to heat)
While they all perform very good and to 90% satisfaction soundwise, they can quite easily be bettered, but at a cost.

I just wish @Dan_Knight would let us have a slightly more modern kernel in most distributions, but i respect his decision to support stability over features every day of the week! :slight_smile: Great distro!

Purely as a Roon Bridge, what new kernel features are needed for your Roon audio purpose?

Support for native DSD with various DACs primarily! But this is mostly cosmetics, i am really content with the DSD128 all of my DACs support over DoP.

1 Like

I have found using 25000ma battery pack has worked wonders for improving my pi’s that I use with headphones. I got a usb inline power switch so I don’t have to keep pulling out the cable and the battery outputs 3a so the pi’s running nice and smooth and as it’s not on all the time it lasts about a month between charges. Battery cost me 29.99 from Amazon and it sits under the pi. I have found my pi4 runs hot even with a heatsink attached but it does have a hifiberry DAC+ attached which I am not using so may look to get the flirc case instead.

1 Like

Here is what I run mine with (NAA renderer), very much underclocked. This is from config.txt

#Serious underclocking
force_turbo=1
arm_freq=600
arm_freq_min=600
gpu_freq=150
core_freq=200
core_freq_min=200
h264_freq=200
isp_freq=200
v3d_freq=200
sdram_freq=300
sdram_freq_min=300
avoid_pwm_pll=1
over_voltage=-8
over_voltage_min=-8
over_voltage_sdram=-8
over_voltage_sdram_c=-8
over_voltage_sdram_i=-8
over_voltage_sdram_p=-8

#Disable HDMI, WiFi and BT
hdmi_blanking=2
dtoverlay=disable-wifi
dtoverlay=disable-bt

#Disable LED
dtoverlay=act-led
dtparam=act_led_trigger=none
dtparam=act_led_activelow=off
dtparam=pwr_led_trigger=none
dtparam=pwr_led_activelow=off

#Turn off ethernet port LEDs
dtparam=eth_led0=4
dtparam=eth_led1=4

3 Likes

Any form of CPU throttling will likely cause hickups every now and then, which is why I use fixed frequency. From DietPi, I think you can set performance and then lower the normal and min frequency to achieve this. Or use config.txt like above

Any ideas if Ropieee is underclocked, I ditched dietpi as it’s too flakey when updating for my liking.

I don’t know about that, but RopieeeXL works great “out of the box.” I leave it on all the time.

3 Likes

Wow, that IS some serious underclocking. Is this DietPi, or something else? Can the config.txt be edited after first boot?

I plan to try this tonight!

Are you guys using USB2 or USB3 for your DAC? What was your rationale?

I’ve tried both and can’t tell any difference so I’m using 3.

I think config.txt is for all Linux versions, and you can access that file from PC if you put the SD card in an USB adapter and into PC.

Not sure if I could hear any difference though, I felt the sound more open but might be bias. But it seems fast enough for 768khz and batteries lasts longer to it seems to work.

1 Like

@spockfish is any of what @Magnus mentions here available in Ropieee for the Pi4?

I’m not sure what you mean with ‘any’, but I assume you mean under-clocking.

Not at this moment. I played around with it, but that’s about it. Never received a request for it, so maybe I should add it to the todo list and provide it as an ‘advanced’ option.

4 Likes

If there is an improvement in sound it would probably be worth it.
Also the LED section is interesting. I am finally getting some use on my 3b (waiting for a Pi 4 as I use a USB DAC). The red power LED and the blinking ethernet LED is quite annoying. I turn the Pi off for the night. With disabled LED’s I could leave it running (with the reboot schedule during the night)