DIY HiFi Audio Streamer

Raspberry Pi 2 with HiFiBerry DAC in 3D printed case

I wouldn’t call myself an audiophile but I do appreciate when great music comes in great quality. And there’s something that’s been bugging me for a while: finding the right steaming client for high fidelity audio can be quite challenge – at least it was to me. But being a fan of DIY solutions led me to a different approach. I mean, why would I spend a ton of money on some product if I can spend a ton of money on parts & tools and fail try building one myself?


I stumbled upon the HAT compatible boards of HiFiBerry a while back and have been eager to build something with one of those boards. Since I’ve had a Raspberry Pi 2B just idling in one of my drawers for ages, I knew this could be my chance. There’s actually a real life use-case for this project where I’d like to bring a well-aged Yamaha RX-E100 stereo receiver & amplifier into the modern ages. Since this amp does not have a digital input I needed a DAC so I opted for the well established HiFiBerry DAC+ Pro. Personally I don’t think the fairly new DAC2 Pro or DAC2 HD would have improved the sound that comes out of the Yamaha speaker pair that much.


While I was waiting for the DAC to arrive I set up the RPI. I looked at piCorePlayer, Volumio, and moOde audio. In the end I opted for moOde audio, because it offers what I have in mind, it was straightforward setting it up and tweaking it to my needs. My requirements, that moOde audio checks, are:

  • streaming lossless tunes from a NAS
  • streaming via Spotify connect
  • hopefully streaming via Tidal connect in the near future
  • streaming from mobile device via Bluetooth (with USB dongle)
moOde audio UI on smartphone


There are a couple of cases in HiFiBerry’s shop – and other well-known places – that house a RPI and one of their boards. But I recently grabbed an Original Prusa Mini, so.. obviously I had to complicate this project a bit. I found the step files of both the RPI and the DAC and modeled my case around them in Fusion 360. After a lot of swearing (in Italian, so you know it must have been serious), because I’m an absolute Fusion 360 noob, I managed to pull something together that looked alright. I wanted to create a minimalistic case with as few parts as possible and ended up with two. I’ve read somewhere that the DAC might run a little hot under load, which is why I added some ventilation to the lid. The fact that it’s in the shape of my soon to come new logo is pure coincidence.

Snug fit for the components inside the case

After slicing the STL in Prusa Slicer it was time to load the beautifully azure Prusament PLA and give it a go. I chose to print it in rather low quality because it was intended to be a proof-of-concept. But the print came out rather fine so I decided to keep it and so it was time to assemble.

There were a couple of things to file away around the USB ports but it was way less than I had anticipated. With a bit of delicate bending (the case) the RPI slid right in and I screwed it in place with the 12mm plastic-spacers (come with the DAC). I fiddled the RCA connectors through their holes first and connected the GPIO afterwards, which worked way better than expected. The lid snapped in place without a hiccup and it was time to hook it up.

Finished, 3D printed, case for the audio streamer


So far I am really happy with the outcome of this project. I like the fact that it’s a DIY solution that taught me something. I like that I put an old RPI to good use. I like that I got the chance to experiment with additional hardware. I like the software. I like my first self-printed case. But most of all, most importantly, I like the sound that comes out of this combination.

I haven’t hooked it up to the Yamaha receiver yet, but to me it sounds really good on a Marantz SR6007 and a pair of Canton Vento loudspeakers. The first thing that I absolutely had to blast through the speakers was Vulfpeck’s 3 on E featuring Antwaun Stanley (16/44.1 flac), followed by Royal Republic’s Flower Power Madness (16/44.1 flac). Then from Queen to Two Steps From Hell over to Danko Jones, The Police, and Electric Guest, and I am completely sold on this petite fella.

A little anecdote: while I was waiting for the DAC I hooked the RPI up via HDMI but somehow that did not sound so good. Not as good as with the DAC obviously but not even as good as an OSMC RPI 3 over HDMI on the same AV-receiver.


I’ll probably experiment with other solutions in the future, but for now I’m very happy with moOde audio. Or maybe I’ll mess around with a fork (moOde audio is open source and actively developed on GitHub), waste a ton of time, eventually f*** it up completely, and come back to the original moOde audio distro. That absolutely does sound like something I would do.

What I’d like to have is the possibility to change the volume of my amplifier. There are some DIY solutions that use IR diodes to achieve that. I haven’t looked into this yet or if that is something that’s achievable with moOde audio, but with the software being open source, I’m sure there’d be a way.

Something that’d be feasible in a simpler manner, very much so, seems to be a custom button for play/pause, so that I don’t have to fiddle around with my mobile device if time is of the essence. It’s actually possible to map GPIO pins to certain actions. The only thing’s the DAC already sitting on top of that. However, the DAC seems to have a copy of the GPIO contacts on its PCB so maybe some warranty-voiding soldering could do the trick.


The STL files are available via download from here as well:


I was inspired by and got a ton of information from different sources on the web, the most important/used ones are already linked in the post. I found and continue to find additional inspiration in the audio-DIY context in John Darko’s informative, amusing, (almost) no-bullshit YouTube videos as well as Tech Ingredients’ well made, extensive, entertaining documentaries.

The audio streamer in its natural habitat (temporary test-scenario)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.