V4 - DIY $125 Home Assistant bookshelf speaker with ESPHome SendSpin, Snapcast, AirPlay 2, Squeezelite for whole-home music and notifications.

 

Quickly modify an off-the-shelf, dual-driver passive speaker using open-source hardware and pre-configured open-source firmware (ESPHome with SendSpin and many other options) for multi-room synchronized audio and TTS notifications using Music Assistant and Home Assistant. Automatically connects to Home Assistant at bootup. No coding, no cloud, no subscriptions, no integrations.

 

Build or Buy ?

This project is very simple and fast to build. But not everyone has the time or desire for a DIY project. If that's you, please check out the section below Option to Purchase - Ready to Connect

 

 

Completed HouseWaves-Three passive speaker modified for streaming with ESPHome, SendSpin and Home Assistant — composite photo Completed modification of a passive speaker for fast and easy streaming with ESPHome, SendSpin and Home Assistant.

 

See and Hear it

 


Table of Contents


What This Is

This is NOT:


Motivation

There are no commercially available speakers specifically for use in the Home Assistant platform. Sure, you can find WiFi and BT speakers that can be integrated into HA, but they are either expensive, proprietary, complicated to integrate, etc., etc.

I want to change that.

My first project, really more of a proof-of-concept, started with a high end speaker kit. It was expensive.
DIY WiFi & BT audio speaker for Home Assistant, modify prebuilt 3D printed speaker

It sounded great! But $250 / speaker was not what people wanted.

My second project was a much lower cost version based on a commonly available single-driver speaker available on Amazon.
A desktop-sized solution, with limited power and frequency range, but ideal for replicating in multiple rooms primarily for notifications and occasionally listening to music (or secondary rooms as part of a whole home, multi-room system).
V2 - $60 DIY WiFi & BT audio speaker for Home Assistant, with ESP32 - Squeezelite or SendSpin : r/homeassistant

My third project was a dual-driver, compact bookshelf speaker capable of providing quality audio with 15W to adequately fill small rooms of your home in a cabinet slightly larger than a desktop speaker. V3 - $90 DIY Home Assistant bookshelf speaker for Home Assistant


This is my fourth project (V4)

A larger dual-driver speaker capable of providing decent bass in a bookshelf form factor with significant amplification from 30W of power. This is getting very close to a substitute for home audio systems.

Unlike the past projects, you will not need to remove a driver in the cabinet. This speaker has a very large wire terminal plate that easily fits the ESP32 board in an RPi case. So the process is even easier than in the past.

For clarification - we're still at the lower end of the audiophile spectrum. I'm nowhere near trying to make a claim this competes with high-end gear, but we're just getting warmed up...

 


Option to Purchase - Assembled, Tested, Ready to Connect

My motivation is not completely altruistic.

I've started a company - with a commitment to prioritize and provide DIY open-source audio options to Home Assistant enthusiasts. These guides are part of that commitment.

For individuals who prefer to purchase a speaker fully assembled, tested and updated, well...that's the market I'd like to help with...I want to be the RATGDO for music enthusiasts looking for options that do not require subscriptions or proprietary applications.

Please check out my site, GetHouseWaves.com to view available models - all using the same open-source controllers and firmware you'll find in my DIY guides.

Whether you build it or buy it, your speakers will always be yours to do with as you please.

You will never be locked-in or bricked-out.

Finished HouseWaves bookshelf speaker, assembled and ready to connect to Home Assistant

 


Caveats & Limitations


Parts & Materials


Prices shown are approximate USD and include shipping, taxes and customs fees (to someone in California).

Speakers are sold in pairs, but other parts are sold individually. Adjust quantities if you plan to build both.

Links are for the actual products I purchased for building the POC.


#ComponentQtyPriceNotes
1Riowois Passive Bookshelf Speakers with 4" woofer2 cabinets$67$38/speaker;
GET THE 4" WOOFER - the other model is for V3 tutorial!!!
need to buy outside the US? search for Riowois DS6800M
2Sonocotta LOUDER PLUS ESP32 - Sold by Elecrow

or

Sonocotta LOUDER PLUS ESP32 - Sold by Lectronz
1$37ESP32 with integrated DAC & AMP;
- no Ethernet module;
- optional $5 RPi case to protect the circuit board

Elecrow based in China but delivers to US with much lower shipping & customs fees.

Lectronz is based in EU for purchasing directly from Andriy at Sonocotta

There are currently no US based suppliers for these boards

buy two if modifying both speakers.
3USB-C Panel Mount Cable1$15improved version since v2; the threaded portion is hidden inside the cabinet along with the retaining nut
buy two if modifying both speakers.
4Optional back plate1$9If you have access to a 3D printer, print the 80mm square plate to replace the speaker wire connection plate and secure the new connectors in the back (STL file included).
Another option is to order custom 3D printing from Elecrow or similar DIY service company. They are as cheap as $2 plus shipping (which was $7 for me)
Otherwise, you can just drill a small hole in the back of the cabinet for the cable.

print two if modifying both speakers.
     

 

ESP32 board connector cables and 3D-printed back plate laid out for the build

 


Tools Required

 


Build Time

 


Step-by-Step Build Guide

Step 1 — Remove the existing terminal plate on the back

  1. Remove the 4 screws from the wire connector plate ("speaker terminal plate")

  2. Pull out the wire connector plate and cut the speaker wires as close to the connector tabs as possible. In my speaker, these were white (positive) and black (negative). You will strip the ends of these wires so keep them as long as possible.

  3. Keep the plate if you are not going to use the optional 3D printed plate. You will need it to seal the speaker cabinet as the last step.

  4. DO NOT CUT other wires inside the cabinet! The tweeter and woofer drivers are also connected by wires - these need to remain connected!

     

    Closeup of the original speaker wire terminal plate on the back of the cabinet Closeup of the wire connector plate in the back of the speaker.

 

Terminal plate removed showing the tweeter and woofer driver wires still connected inside the cabinet Closeup of the wire connector plate before cutting the attached speaker wires. Cut right next to the solder connections.

 


Step 2 — Install USB-C and power connectors

  1. TWO OPTIONS:

    ONE -- If you have access to a 3D printer, you can print the 80mm square plate with holes that fit the USB-C cable and DC power connector as shown in the photo shown below. This plate is the same size and shape as the speaker connector plate you just removed. An STL file has been provided for this part.

    Insert the threaded USB-C connector inside the hole of the plate, securing in place with the plastic nut. Insert the USB-C cable into the ESP32 board.

    Insert the threaded DC power connector inside the hole of the plate, securing in place with the metal nut. Connect the red and black wires to the ESP32 board as shown in the photo. The connection polarity is also printed on the back of the ESP32 board for reference.

    OR

    TWO -- you can drill a 5/8" hole in the back of the speaker cabinet or the existing plate. I did not attempt this, but one of our readers and contributors drilled a hole into the original wire connector plate. See the photo here.

    OPTIONAL - if you decide to drill the original connector plate - you could power two speakers on one ESP32 board. Another reader/contributor connected the wire terminals to the LEFT side of the ESP32 board. By connecting the two speakers together with speaker wire, he now has a stereo pair - one speaker has the ESP32 board inside and the other is connected using the speaker wire - both powered by a single board.

     

Assembled LOUDER PLUS ESP32 controller board mounted to the 3D-printed back plate with USB-C and DC connectors Closeup of the USB-C connector cable and the 3D printed plate that replaces the original speaker wire plate.

 


Step 3 — Attach speaker driver wires to the ESP32 board

  1. OPTIONAL - if you are using an RPi case for protection, attach the LOUDER PLUS ESP32 board to the base of the RPi case (as shown in the photo below). I recommend not enclosing the board with the top half; this allows air flow to keep the ESP32 amplifier cool at loud volumes.

  2. Gently strip approx 1/4" on the ends of the white and black driver wires.

  3. Attach the wires to the speaker terminals of the board, paying attention to the driver polarity. The white wire was "+" and should be connected to the outermost terminal on the ESP32 board. The connectors near the corner are for the RIGHT channel. You can choose either LEFT or RIGHT - as the Music Assistant will let you change whether it streams LEFT, RIGHT or MONO to the board - so it does not matter which side you choose. OPTIONALLY, you may also wire for PBTL, a slightly advanced topic that will require ESPHome/SendSpin and some additional coding changes. You can find more information about the advantages and changes needed here

     

Connecting the speaker driver wires to the RIGHT channel terminals of the LOUDER PLUS ESP32 board Connecting the speaker driver wires to one (RIGHT) channel of the LOUDER PLUS ESP32 circuit board.

 

Step 4 — Flash the ESP32 controller

You have several options for firmware, including ESPHome with SendSpin or Snapcast, Squeezelite, custom and even using AirPlay 2. You may use any of them.

There are matrices that discuss the pros and cons of each option. This is a good starting point to review.

I have found both Squeezelite and now SendSpin, to be very good options for quickly and easily connecting devices to Home Assistant (Music Assistant will auto-discover either one). The process to help you install either Squeezelite or SendSpin are included in Readme docs linked below.

1 - Install Squeezelite Firmware

2 - Install SendSpin Firmware

 


Step 5 — Test before closing up

I recommend checking the board has been discovered by Music Assistant and streams music before closing it up.

 


Step 6 — Final Assembly

  1. Carefully slide the ESP32 board inside the connector plate hole. If you insert the speaker wires/connections in first, you should be able to carefully rotate the board as you slide it through the hole - this will allow you to keep the USB-C cable connected to the ESP32 (it's tricky to reconnect it inside the cabinet.)

  2. Continue to slide the board towards the back of the cabinet. OPTIONALLY, you may want to place 1-2 pieces of double-sided foam tape under the RPi case to attach it to the bottom of the speaker cabinet. This will both hold it in place and keep the speaker vibrations at loud volumes from vibrating/rattling the case and board.

  3. Insert your new connector plate (or the old wire connector plate if using that one) and replace the screws.

     

    Rear view of the finished HouseWaves-Three Wi-Fi bookshelf speaker with new connector plate installed

    Closeup of the back of the speaker with the new printed plate and connectors in place.

 


What's Next

This is Build #5 in a planned series of passive-to-active speaker conversions for multi-room audio with Home Assistant.

 

BuildSpeakerStatus
#1HouseWaves POC - Tozzi One High Fidelity Speaker Kit for Home Assistant✅ Complete
#2HouseWaves-One: Low-cost (sub $50) single driver speaker✅ Complete
#3HouseWaves-Two: Mid-range, mid-cost (sub$100), dual driver speaker✅ Complete
#4SendSpin firmware for use with HW-One and HW-Two speakers✅ Complete
#5HouseWaves-Three: Higher fidelity speaker option for Home Assistant✅ Complete
#6HouseWaves-Legacy: Connect any passive speaker to Home Assistant in 3 minutes🔜 July 2026
#7smart speaker option, compatible with Home Assistant Voice Preview🔜 August 2026

 

Preview of HouseWaves-Legacy
Connect ANY old (or new) passive speakers to Home Assistant in three minutes.

HouseWaves-Legacy proof-of-concept: passive speaker before and after conversion for Home Assistant

 

 


Non-Commercial Use Only

SUMMARY (For details, please read LICENSE.md)

I developed this speaker modification to be accessible to everyone for learning and enjoyment. To keep the project's spirit alive and ensure it remains open for the Home Assistant and Music Assistant community, here is how I define the boundaries of the CC BY-NC 4.0 license:

✅ What is Encouraged (Personal & Academic)

❌ What is Prohibited (Commercial)

The "Materials Fee" Exception: If you are organizing a community build or a school workshop, charging a "at-cost" fee to cover the raw price of components (drivers, filament, boards) is perfectly fine. As long as you aren't making a profit on my engineering and documentation, you are within the spirit of the license.

 


Credits & References


Build #2026-06-15 | HouseWaves, Copyright, 2026.