Hacking an Amazon Echo and integrating it with Sonos

…or any other external speaker

Mathias Hansen
5 min readFeb 24, 2016

Ever since we got an Amazon Echo, I’ve been wishing that it integrated with our Sonos system.

I did some experiments with a custom Alexa Skill, but ultimately the solution was sub-optimal. In part because Alexa had a hard time picking up arbitrary commands such as artist or song names for the custom skill’s utterances (the built in Prime Music support is great, though). But also because it isn’t possible to automatically lower the Sonos volume while speaking to Alexa, causing the Echo to pick up part of the playing song and interpret it as a command.

Our Sonos speakers really started to collect dust after Amazon’s recent Spotify integration announcement. Now we were suddenly no longer limited to the songs available on Amazon Prime, but we were still only able to use the built-in Amazon Echo speaker.

I started a more serious research project to figure out ways to connect external speakers to the Echo. Sadly, the Bluetooth features do not allow for external speakers, but a couple of comments on various forums hinted that there might be a way to bypass the internal speakers and hook up your own.

Warning: While this a relatively easy modification, it involves taking your Amazon Echo apart and doing something that’s definitely not intended. You are fully responsible if your break your Echo or external speakers.

Preparation

You’ll need:

You’ll also need a T10 Torx Screwdriver to open up the Echo, but no soldering is needed!

Opening up the Echo

Start by peeling off the rubber foot in the bottom of the device.

This will expose the four T10 Torx screws that you would need to remove.

After the Torx screws have been removed, you will get to a circuit board that contains the internal amplifier and some other nifty things.

See the black and white JST connectors? One of them goes up to the internal tweeter and the other goes up to the internal subwoofer.

We’re going to hijack these connectors and have them output to our own speaker instead.

Now, I will straight up admit that this is a dirty dirty hack, but all we’re going to do now is to connect our own JST 2-pin connectors to these and wire them out to our stereo 3.5mm audio jack, with one channel getting the pre-mixed tweeter output and the other channel getting the pre-mixed subwoofer output.

Make sure to check the polarity on the existing connectors so you don’t get ground and L/R mixed up. Unfortunately the color coding of the cables won’t match exactly when we insert our own JST connectors.

Here’s what it looks like:

Now, wire up the 3.5mm jack terminal block using the diagram above, and the nifty icons on top of the terminal block itself.

All we have left now is to pack it all up, wrap it in a nice package, and test it out with some simple external speakers.

I put together a simple 3D-printed stand, with a built-in slot for the audio-out connector. You can download the design on GitHub.

Connecting with Sonos

The last step for my project was to use the Sonos speakers as external speakers. I did this with a Sonos Connect (on a related note, why on earth is that device so expensive?).

The Connect allows me to stream any physical audio-in source to the Sonos network — it could just as well have been a record or CD player.

Conclusion

I can now say “Alexa, play Daft Punk on Spotify” and enjoy French electronic music throughout the entire house instead of just the kitchen where the Amazon Echo is located.

We’ve been running with this setup for about a week now, and everything seems to be running smoothly. The only issue is that the audio will start tearing up if we turn the Alexa volume past 5 — but this is easily resolved by adjusting the volume on the Sonos system rather than the Amazon Echo device itself. I think that this might be happening because the output from the Amazon Echo is pre-amplified.

In the future, it could be neat to pair this with an Amazon Echo Remote, which would allow us to not only listen to the Echo anywhere, but also control it from anywhere.

--

--

Mathias Hansen

Father & married to the lovely @mjwhansen. Lead Software Engineer at Storyblocks. Co-founded Geocodio, Pixelbug, and Capital Laravel Group