'Best' DIY whole home audio controller hardware?

Hi everyone,

I’ve been researching whole home audio hardware options all week, and I’m looking for recommendations on how to create the simplest quality DIY hardware solution for any speakers in the house.

It seems as if the ‘best’ (de-facto) solution for ‘whole home’ audio (where you can play different streams across speakers, or have a single stream of audio sync’d across multiple speakers - aka rooms or ‘zones’) for most people starting down this path is to go with a Logitech Media Server-based system (and many thanks to @bkprath for the very excellent overview here: How to: Build a LMS based whole house audio system)

I understand this system to work as follows (please feel free to clarify anything I might have missed or mistaken):

  1. A Logitech Media Server (LMS) server daemon in charge of all audio content runs somewhere in your home network - either running embedded/managed by Home Assistant, or on its own server (or even a Raspberry Pi), or in a virtual machine on Proxmox, etc.

  2. Multiple LMS clients on the network, aka ‘players’, connected to stereo audio-out hardware. Each player runs an LMS squeezelite client process to consume a digital audio stream from LMS, and sends that audio to the audio-out hardware where it can be heard. This is most commonly achieved (as far as I can tell) in one of two ways:

    a. The player itself is running on hardware that has a DAC, and sends the digital audio stream to the DAC and the DAC’s analog output is sent to on-board audio-out hardware, usually a 3.5mm audio jack or speaker wire terminals.

    b. The player might be associated with a bluetooth-connected speaker, and forwards its stream to the speaker, and the bluetooth speaker likely has its own DAC and does the DAC conversion there.

    It seems common enough for a player to have on-board hardware that allows both a and b.

I read about two common approaches for DIY hardware players:

  1. An ESP32 device paired with a DAC module and audio-out hardware. ESP32 devices are very low power, so they rarely have enough power to drive the speakers directly. Also, the ESP32 native DAC is only 8-bit and not sufficient for quality audio streams (e.g. 24-32 bit), so it must be paired with a higher quality DAC module.

    The Raspiaudio Muse Proto board seems to be referenced often enough for something like this, but even then its output appears to be only 3 Watts, not nearly enough to drive dedicated room speakers. Plus it appears that it’s mono (not stereo) output only. So while I’m sure it has great uses for low-power/less-expensive audio scenarios, quality stereo home audio doesn’t seem feasible. I’ve not attempted to build anything like this, so I could be quite wrong, please let me know otherwise.

  2. The much more common and simpler route, using a Raspberry Pi with hardware and power that meets the needs of the listener. Most using a Raspberry Pi don’t set-up/run a squeezelite client themselves, but instead install something that handles all of the heavy-lifting like piCorePlayer (which runs/manages the squeezelite client automatically).

Because the Raspberry Pi route seems much simpler, that’s probably the one I’d go with, unless there is a ‘slam dunk’ ESP32 solution that people have been happy with that I don’t know about. Anyone?

So, what I’m trying to understand now is, what is the simplest/best hardware option to get good stereo audio?

In my particular case, I have a new construction home, so I’ve hardwired speaker drops to each room in the house where I want audio, and I want wired network connectivity, so I’ve been thinking of using a RPi 4 with Ethernet (and disabling WiFi).

But I’ve heard that the RPi native DAC isn’t exactly great, so it seems pairing it with a dedicated DAC is the way to go, such as the HiFiBerry DAC+ or the better quality HiFiBerry DAC2 Pro.

I looked into that, but then realized that decent stereo speakers need power, so ideally you’d need to run the RPi audio output to an amplifier that then drives each speaker or set of speakers.

The first good out of the box solution for this seemed to be Monoprice’s 6-Zone Home Audio Multizone Controller and Amplifier Kit. Assuming this solution, I’d need to buy this kit plus for each stereo speaker pair:

  • One RPi 4
  • One HiFiBerry DAC+ or DAC2 Pro
  • DC power supply

At this time of writing, the Monoprice amp/kit is $650.00. Assuming 6 zones, that’s $108.33 per zone just for the amp, not including the price of the RPi, DAC and power supply. Add those in and you’re approaching $200 per zone.

That’s pretty decent actually, all things considered, but then I noticed something on HiFiBerry’s site that seems like an even better solution:

The HiFiBerry Amp4 has enough power to drive two speakers (L and R channel) at 60 Watts and it already comes with their DAC+. This seems sweet!

So if I’ve got my data correct, that means, for each stereo speaker (pair), you only need to buy:

  • Any one of the RPis that work with the the HiFiBerry Amp4
  • One HiFiBerry AMP4
  • One 20-24V DC power supply.

All in, that’s pretty close to $100 per zone, basically half of the RPi solution with a Monoprice amp kit.

This also has the benefit of modularity - you only buy what you need for the number of ‘zones’ you need. With a 6 or 8-zone integrated piece of hardware, if you don’t need as many zones that are supported by the hardware, you’re paying extra for something you won’t use.

So that’s where I am with my research and what I think might be an ‘ideal’ hardware solutions for quality Home Assistant-controllable multi-zone audio.

Am I missing anything, or are any of my assumptions off? Is there anything that might be perceived as ‘better’ than this for a hardware controller + power required for speakers that I haven’t found yet?

Thanks!

In my build I used a number of old rasberry PI 3Bs and orange PI ones. I connected the audio output directly to a couple of old amps I had from years ago and a few TVs. I had heard the audio out of the PIs was a problem, but it worked good enough for me. One problem with this approach is some times you get a ground loop issue with the USB power supply that adds noise into the audio output. You can buy a audio cable with a ground loop isolator to help with this problem.

I actual bought a couple of HiFiBerry boards, with an intent to use them but never put them in play.

Using the PIs with the amps gave some flexiblity. One of the amps had RF control, so I used the PI to send RF signals to control the amp. The other was old enough it didn’t have any RF control, so I used it to control a servo connected to the volume knob so I could control the volume. To turn the that amp on and off I used a smart outlet.

I also put squeezelite on any computer in the house that had decent audio. The computers turned out to be a good way to go, as I will play music while working.

Finally I added an LG sound bar that had chromecast built in to our main TVs. LMS has a plugin to send audio to any chromecast device. This turns out to be the device I use most for audio. If I were starting over I might use a chromecast device on any TV in the house and then smart speakers with integrated chromecast or apple play for most other speakers. I’ve not used the LMS apple play plugin, but would expect it to work as well as the chromecast plugin. I’d use the computers as players, and I would probably still use the two old amps has it’s hard to beat their power output and clean sound. They were built to play music and they do it well.

1 Like

Have had pi’s with Hiberry dacs to powered speakers for yrs - no issues . LMS on HA . I use max2play as the easy burn sd card and go option ….
IPeng on phone etc to control audio .

1 Like

There are generic AMP Hats if you want to shave the costs further. I am using a TAS5713 AMP hat with a Pi Zero W. Been running great for 3 years.
Another possibility is USB DAC/amps [these won’t work with squeezelite-esp32 as that doesn’t have a USB stack]. The main advantage of these is a volume knob for local control.

1 Like

I use Raspberry Pi Zero W with a HiFiBerry DAC+ Zero and then a snapclient running on them.
I had some issues with ping times in them and it might have just been a setting in the Debian or my Cisco AP, but I had ethernet available close by almost all of my devices, so just bought an USB NIC for $5 each.
I think I would go with a Raspberry Pi Zero 2W next time, because ethe ping could be due to low ressources in the Raspi.

My server is a Debian running 3 instances of MPD that feeds a socket for SnapServer and a socket for IceCast2 each.
snapServer is for the SnaoClient devices to play in sync. IceCast2 is just an ordinary stream, so the devices that only support streaming can be used too, like the speaker in the bathroom, which will then not play in sync with the rest of the house.
The setup with 3 MPD instances means I can have 3 separate stream where ai can move speakers around as I like.

1 Like