Portable Raspberry Pi music player

On the road it’s nice to have your collection of music standing by to plug into your car.

For that I’ve typically relied on a 16GB iPhone 3GS. My vehicle is a 2011 Chevrolet Equinox. I can plug my iPhone into it and see at least the song title on the display, though I can’t control playback from the dash and steering wheel controls. But 16GB is not enough storage for my music collection anymore.

To pour salt into that wound, I’ve been re-ripping mine and my wife’s entire CD collection to the NAS as FLACs using Exact Audio Copy and the FLAC command-line utility. My CD collection has also expanded in recent months as I’ve decided to buy the physical CDs for any music I’ve previously bought and downloaded through iTunes or any other online service. I prefer having direct control over that where possible and typically have.

But even if I re-ripped the CDs to 320kbps MP3 for better audio quality (which I also considered but chose FLAC for being lossless), 16GB is still not enough room.

Thankfully storage options are very, very cheap right now. As in a 128GB USB 3.0 flash drive is around 40 USD depending on brand and seller. And the prices are similar for microSD cards as well — this 128GB Samsung EVO Select card is 45 USD as of when I write this.

And as you can tell from the article title, I didn’t just buy a microSD card, stick it into my phone, copy off all my music to it, and call it a day. So let’s get into what I actually did, starting with the parts.

The Raspberry Pi does not support the larger microSD cards, for those who might be wondering. The slot is microSDHC, which supports 32GB at most. And no, that’s not enough to hold my music collection, even without taking the operating system into account.

So I would need a USB drive for the audio tracks. And the Samsung Fit lineup is a very low-profile USB drive. It won’t stick out from the end of the Raspberry Pi, avoiding the risks thereof. Now while the RPi doesn’t support USB 3.0, it’s nice having that speed for the initial copy of the music to the drive from my NAS. Plus 128GB USB 2.0 low-profile flash drives don’t exist.

Now 128GB is overkill for my music collection, but 64GB would be cutting it close with everything encoded as FLACs and my desire to acquire still more CDs in the near future and prefer CDs down the road. Currently with still not everything yet ripped to files, my music collection has so far exceeded 52GB as of when I write this.

So now, what about the operating system? There are plenty of options available. Notice in the parts list above that I did not include a touchscreen. This means that any of the Kodi distributions are out of the question since the device will be run headless.

That leaves pretty much just one option: Volumio.

Volumio can run as a “hotspot” using the RPi3’s built-in wireless. This means you can control the music playback, volume, etc., with your phone’s browser by connecting to Volumio’s hotspot. Just make sure to change the default password and SSID.

For an enclosure, bear in mind the RPi3 is known to get warm under load, so consider an option that includes or supports a fan. You at least need one with ventilation.

I went with the Zebra Virtue Black Ice by C4Labs for it’s included 40mm 5V fan. It is also not any larger than the Pi, keeping everything compact. And the fan is LOUD. And it has a particular high pitch to its noise profile. I highly doubt that C4Labs searched high and low to find the quietest 40mm fan available as they claim. The fan included with mine is the Yofolon DC4010S05L, which according to one source is rated at ~24dB/A and ~5.5CFM.

However the noise can be alleviated quite easily by splitting the connector from the wires and plugging the red wire into Pin 1 and the black wire (ground) into Pin 6. This runs the fan at 3.3V, making it much quieter.

With everything assembled, it was a matter of loading up the music and making playlists. Then plugging it into my car’s stereo.

For power, you can use either a portable or a car charger. Just make sure to get one that supports at least the 2.5A the Raspberry Pi requires. And if you use a car charger, you will likely need to use an audio cable with a noise filter to prevent audio interference.

Now my one gripe with Volumio: embedded album art. Volumio will not display album art that is embedded into the FLAC and MP3 files. And the developers refuse to add (or add back in) support for that, citing performance. So for now I’m just can’t have album art displayed in the UI as I refuse to go through the convoluted steps to get that aspect working.

Otherwise, the way the setup works is simple:

  • Set the phone or tablet to connect to the Raspberry Pi’s wireless
  • Open the browser and connect to http://volumio.local/
  • Modify the playlist as desired
  • Disconnect Wi-Fi until needed again

Simple enough. Only downside is the need to shut it down before turning off your car if you’re running on a car charger. So that’s a reason to use a portable charger for this — not to mention how inexpensive they are.

Now if only the Volumio developers would consider adding a configuration option (disabled by default) to let us display embedded album art so we can decide for ourselves if any performance penalty is worth it.