Raspberry Pi 3 + DietPi: let’s share our optimisations

Hi there,

I started my DietPi on Raspberry Pi 3 optimisation. This device is used as a Roon Bridge and Apple Airplay end point. Apple Airplay is being used to stream Qobuz from my iPad until Roon includes this service + various other services occasionally. I use the Allo Digione Signature hat cause the USB output SQ of the Raspberry Pi is low.

This topic is to share optimizations that may improve the overall SQ of this cheap but quite good device. So feel free to share your learnings.

My setup is as following:

  • HDMI is off
  • Ethernet is off, only WiFi
  • Bluetooth is off
  • CPU is in powersave mode
  • CPU is in fixed frequency (600 MHz)
  • All Linux processes are running on core 0
  • All Roon Bridge processes are running on cores 1 & 2 in SCHED_RR schedule policy (real time) and priority 99 (maximum). Nice is also set to -20, may be redundant or of no use.
  • All Shairport processes are running on core 3 with similar options than Roon.

Overall SQ has been improved, especially dynamics and bass.

I used to use additional ALSA settings with Daphile (buffer time and period count). Those settings were having huge impact on SQ. But my knowledge in ALSA is not good enough to find where those settings were located. If one can help.

----- Edit 16th of december 2018 : CPU fixed frequency added

How do you select the cores for different processes?

Use DietPi-Process_tool menu and select, for each process, the according Affinity.
Affinity is for processor’s cores.
Simply unselect the core(s) you don’t want to be used by one process, and apply by clicking OK.

Thanks, though I just changed over to volumio

Not sure you can change Alsa for Roon as it ignores the configs and has low level access. I asked a question in another thread about being able to use Alsa to mono my output as I have done this and it works for mod but not Roon.

I run my USBridge on fixed CPU frequency (720 Mhz), not sure if it improved the sound (if it did, it was minimal), but the reason is I read that CPU switching frequency was noisy.

Indeed Magnus, this was a best practice with Daphile and, I suppose, all computer based network source. I add it to the initial list.
I had set it at 600 MHz on my device. Average load is less than 5% for the 2 Roon Bridge cores, and less than 10% for Linux processes core.

Do you know how to make changes to process Affinity so they don’t reset after reboot. When I use dietpi_process-tool I can make changes, but once I reboot they are gone.

Hi Magnus,

Settings are saved after reboot, in our local testing:

Might be an issue with DietPi-RAMdisk not saving during shutdown.

Please apply your process_tool settings, then run following to force a ramdisk sync to disk:

systemctl restart dietpi-ramdisk

Reboot, and verify settings are as set.

Thanks, that did the trick. But even with RoonBridge set to affinity 3, htop shows 2 cores (the top ones, 0 and 1 I would guess) working at around 4% when RoonBridge works at 8%.