I learned recently that you can turn a Raspberry Pi into a networked DAC which can act as a Roon endpoint. I’ve always wanted to play with a Raspberry Pi so it seemed an ideal easy project to try it out, and also to replace the ageing Squeezebox player which I currently use as a Roon endpoint. I ordered all the bits and put it together on Sunday — it was fun and successful (the best kind of project)!
I’ve been a Roon user for quite a while now and love it. It is a great way to play high resolution audio files and streams, and it constantly makes interesting connections within my own collection, but also suggests new artists and albums that I end up enjoying. I run the core server on a small Intel NUC computer (you can read more about that here), which is connected to my main hifi in the living room. I can play the music in my collection via the Roon iOS app on my phone, but to play through decent speakers, I need another Roon endpoint which connects wirelessly with the core. I listen most often in my office, and was using an old Squeezebox attached to my powered speakers on the desk.
Since the speakers only have RCA inputs, I needed to build a DAC with the Raspberry Pi, running a specially-created operating system called RoPieee. This would enable the Pi to appear to Roon as an endpoint. There are quite a few boards available for the Raspberry Pi in ‘HAT’ form: these are boards which push onto the Pi’s GPIO pins so that no soldering is needed, and sit — like a hat — on top of the Pi. You can get DACs, digital boards that give you S/PDIF outputs or even amplifiers (if you have passive speakers). I went for a DAC that has some good reviews, and wasn’t too expensive: the HiFiBerry DAC+ Pro. Here’s the full list of components I used:
- Raspberry Pi 4 Model B, 2GB RAM
- HiFiBerry DAC+ Pro
- HiFiBerry steel case which holds the Pi and the DAC
- Micro SD card (I used a 64GB one, but I think 8GB would be plenty)
- Flirc USB dongle. This enables you to use any old remote control for basic control of music on the DAC.
- Power supply for the Pi. This model uses USB C for power. I just bought the official Raspberry Pi power adapter, plus a little inline switch which is handy to power up/down the unit without grovelling around for the socket.
Putting it all together using the instructions on the RoPieee site was pretty easy.
- Download the RoPieee image and use Etcher to put it on to the micro SD card.
- Insert the card in the Raspberry Pi, then put the Pi and DAC HAT together and put them in the case. I mistakenly used instructions for another (very similar looking) version of the case, so could only use two of the standoffs and screws. Nevertheless, it all holds together well, so I’m not sure that I care much. At some point I may take it apart and build it properly, but there’s no rush.
- Plug the Raspberry Pi into a router using an Ethernet cable and plug in. This is temporary until we’ve configured wifi later. Turn it on.
- Once the blinkenlights have settled down, you open a web page generated by RoPieee, which enables you to configure the unit. During this process you can set up the wireless connection and a few other options. You need to reboot a few times during the setup, but it doesn’t take long. Once that is done, you can power it down, disconnect the Ethernet cable and move it to its final spot and power back up. If you are using the Flirc, you also need to set that up and enable it in the RoPieee configuration (and within the Roon settings).
- The final step is to configure the Roon software to enable the new Rasberry Pi/DAC combo as an endpoint.
It all works amazingly well. I think that sound is somewhat better quality than the old Squeezebox, and the unit is so tiny that it takes up barely any space on the desk. I also enabled the ‘XL’ version of RoPieee, which means I can use it for Airplay too, which is a bonus. There’s a slight annoyance involved in this which is that the current volume within the Roon player sets the upper limit for Airplay playback. In practice, this means that Airplay is far too quiet unless you go into Roon, set the volume to max, then go back into whatever you were playing in Airplay (remembering to set the Roon volume back to sane levels afterwards!) Since I don’t use this much, but it is handy on occasion, this is a reasonable work-around for me.
The Raspberry Pi is a beautiful, cheap, deceptively powerful and eminently hackable thing. I’ve got the bug now, and am thinking about adding a 7" touch screen to this setup for control and also display of the currently playing track (which is supported by RoPieee).