How I Turned Raspberry Pi 2 into an Audiophile Music Streamer

By Patrick Norton

I wasn’t sure where my Raspberry Pi Model 2 was going to end up till I started experimenting with a pile of DACs.

I was all set for for a Raspberry Pi Model 2 server experiment until somebody asked me if HRT's dSp would work with a Raspberry Pi. Good question. The dSp is a DAC: a Digital to Analog converter. It turns the zeros and ones that make up a digital audio file into the analog signal a pair of headphones or speakers pump into your ears. A good DAC is a critical step in making your audio files sound amazing, and some third-party DACs are much better than the ones built into your smartphone or even your PC.

That's when I remembered the cable hanging off the back of the amp and speakers in the warehouse. Nothing wrong with plugging that ⅛" jack from the amp directly into a phone or audio player, especially if it meant not using the cheap Bluetooth adapter that's usually plugged in there. But hey, what about turning the Pi 2 into a badass audio box that anybody on the network could use to stream their tune to the big speakers?

Suddenly, I had a project! A D-I-Y SONOS, if you will. (I love the SONOS system, we run three of 'em at home, I'm just not ready to buy one for the office speakers!)

And I have DAC issues. Or at least I could spare a DAC for a while. Within arms reach I've got a HeadRoom Micro DAC and Amp ($650) I used for headphone testing for several years, a Focusrite Scarlett 2i2 for recording podcasts, the AudioQuest DragonFly 1.2 ($150) that replaced the HeadRoom DAC for testing, along with the headphone jack on my laptop. I've also, as of late, received that HRT dSp for testing, and, because I was curious, ordered a $42 HiFiMeDIY Sabre USB DAC to see how it compared to the DragonFly, which, rumor has it, features a Saber DAC.

The differences from a the headphone jack on your PC and one of these USB DACs can be subtle. Beat-up earbuds that came with your phone, low quality streaming audio (or those 128 Kbps MP3s you got off your uncle's old laptop), the sound of the bus engine coming through your feet--all of these things make it difficult to hear the goodness that an excellent DAC can bring. But when you can actually hear it, it's like being in the room where the recording engineer placed the microphones. That's a good thing.

The audio built into the Raspberry Pi model 2 (or 1) is not that impressive. The hot ticket for serious Pi audio geeks is an i2s card that plugs into the pins on the Pi, but I figured USB DACs I already had (and could use for something other than a Pi) would have to work.

Right about here is where I hit the wall.

In hindsight, the Raspberry Pi Model 2 might not have been the best choice. Not because of the USB DACs, but because most of the Pi audio distros have yet to be compiled for the new CPU in the Model 2 yet.

I figured that out after a half dozen failed attempts to boot RuneAudio. ("Take a cheap, silent and low-consumption mini-PC and make it perform as an high fidelity digital source.") If I was a Linux mavin, I would have recompiled the kernel in RuneAudio, but, frankly, I wanted something simpler than re-learning how to compile a kernel.

About the time I was getting ready to tear up my garage looking for my Pi Model 1 (and its broken SD Card holder), I found Volumio. Much like RuneAudio (or Pi Musicbox) it's "an operating system for embedded computers," with one simple goal, turn them into an Audiophile Music Player. Unlike RuneAudio, the Volumio team had released a Raspberry Pi 2 version in February. (Volumio also offers downloads for CUBOX, BeagleBone, UDOO, and several other low power embedded computers.)

Installing it was as simple as any other Pi OS. First download the (294 MB) ZIP file that contains the distro. Extract it. Open up the resulting .img file with Win32DiskImager and write it to a MicroSD. Plug that MicroSD card into the Pi, along with an Ethernet cable and Wi-Fi adapter, a USB drive full of music if you want to stream from a local drive. If you're an audio geek, plug in a DAC. Then power the box up. You'll only need the Ethernet cable once to configure the WiFi. You won't need a monitor at all.

The first thing I did after the box booted was to fire up AirPlay on my iPhone. I selected the Volumio, launched Spotify, and, duh, heard GreenDay streaming from my phone to the amp and speakers across the room. Launching HBO NOW was a mistake… the audio sounded fine, but there was some serious lag between the video on my screen and the audio coming from across the room.

Type http://volumio or volumio.local/ in the address bar on a browser and you get the Playback window. It's understated. The title of the track is across the top, along with informatino on its encoding and playlist position. A circle on the left for counts up the time the song has been playing and offers buttons for repeat, random, and single A circle on the right controls volume, tabs across the bottom let you choose windows for Browsing (music can come from a local USB drive, a NAS, Webradio, or premium Spotify accounts), or the Playlist.

Playback was flawless, though I did end up installing Bonjour for Windows on my Desktop to make finding volumio.local/ a bit less frustrating. You could also assign the Volumio a static IP address by selecting Network from the Menu in the upper right hand corner.

I was delighted with the result: remote streaming of high quality audio for under $100 including the DAC, WiFi adapter and board, at least if you rolled with the HiFiMeDIY option.

The lack of hardware volume control in the HeadRoom DAC meant it wasn't a good choice for a remote location, but all the USB DACs worked with Volumio. Though, oddly enough, the dSp had some occasional 'robot voice' distortion that the other two DACs didn't display. I'm ready to build another one for the house. And the folks I share the office with? Completely stoked. The blown out Bluetooth setup got stuffed in a drawer, where, I hope, it will be forgotten.

Patrick Norton is a veteran technology journalist and the co-host of TekThing. You can find him online at @patricknorton.