LibreEcho — replacing Amazon's software on the full-size Echo Gen 2 with Linux 6.1

Hi all,

I’ve been working on a project called LibreEcho which aims to turn the full-size Amazon Echo 2nd Generation into a genuinely owner-controlled, local device.

Rather than building an Alexa skill or depending on Amazon’s cloud services, LibreEcho replaces the software stack and boots its own Linux 6.1-based system on the Echo’s MediaTek MT8163 hardware.

The long-term goal is to make these devices useful as open Home Assistant voice and media endpoints, rather than throwing perfectly capable hardware away.

What currently works

On real Echo Gen 2 hardware I currently have:

  • Linux 6.1 booting reliably
  • Boot/recovery and A/B slot handling
  • Wi-Fi
  • Bluetooth A2DP playback
  • AirPlay playback through the original Echo speakers
  • The original speaker/codec hardware under Linux
  • LED ring control
  • Microphone capture
  • Local wake-word detection
  • Local TTS
  • A local Web Control Centre
  • Signed A/B OTA update infrastructure
  • Local assistant/service integration experiments

The whole thing runs on the Echo itself rather than requiring an additional Raspberry Pi or external controller.

There is still a lot being hardened, particularly around microphone/audio processing, networking recovery, installation/recovery documentation and longer-term stability.

Home Assistant

Home Assistant is one of the main reasons I’m publishing this now.

I would ultimately like an Echo running LibreEcho to expose itself cleanly to HA as some combination of:

  • Assist voice satellite
  • media_player
  • microphone / mute state
  • physical buttons
  • LED controls
  • volume
  • device sensors and health information
  • possibly local intents for simple commands without requiring an LLM

I’m very interested in what the Home Assistant community would actually want the integration to look like rather than designing that part in isolation.

For example:

Would you rather see a LibreEcho device behave primarily as a Home Assistant Assist satellite, a media player with additional entities, or one integrated device exposing both?

Looking for early testers

I’m now looking for a small group of technically capable people with spare full-size Echo Gen 2 devices who would be interested in helping with a Developer Preview.

For clarity:

This currently targets the tall/full-size 2nd-generation Echo, not the Echo Dot 2.

I’m particularly interested in people who:

  • already use Home Assistant;
  • have a spare Echo Gen 2 they can recover if something goes wrong;
  • are comfortable with Linux, USB/ADB and command-line tools;
  • can test Wi-Fi, Bluetooth, AirPlay, microphone and audio behaviour;
  • are happy to report bugs and provide redacted diagnostics;
  • would be interested in helping shape the HA integration.

This is still experimental firmware, so I’m deliberately not presenting it as a polished consumer installation yet.

A note on AI-assisted development

This came up immediately when I shared the project elsewhere, so I’d rather be completely transparent about it.

Yes, I use AI development tools extensively. LibreEcho probably would not exist without them.

That said, this has involved a considerable amount of real hardware work as well: disassembling devices, soldering, repeatedly entering BROM by shorting test points, analysing the stock firmware, tracing hardware behaviour, debugging kernel drivers, audio clocks, codec behaviour and microphone paths, and repeatedly building, flashing and validating changes against physical devices.

AI output isn’t treated as proof that something works. Ultimately the Echo either boots, plays audio, captures microphones, survives an update and recovers correctly — or it doesn’t.

I’d much rather be open about how the project is being developed than pretend otherwise.

Why bother?

Mostly because I already owned the hardware.

The Echo Gen 2 is still a surprisingly capable little embedded system with decent speakers, a microphone array, Wi-Fi, Bluetooth and a useful LED/interface setup.

I didn’t particularly like the idea that the useful life of that hardware was entirely dictated by the original software stack.

Now mine can play AirPlay, run local services and increasingly integrate with infrastructure that I control.

Even if LibreEcho never becomes a huge project, that’s already been worthwhile.

Links

Project / source:

Website / current project status:

I’m particularly interested in feedback from people who have worked with Home Assistant Assist, Wyoming, ESPHome voice satellites or other local voice hardware.

And if you’ve got a full-size Echo Gen 2 gathering dust and are interested in testing, let me know.

Are you planning to extend this to Echo Dots? I have several at the back of a cupboard.

Yeah eventually, in theory these should be doable with a bit of work:
Echo Dot 2nd Gen
Echo Plus 1st Gen
Echo Spot 1st Gen
Echo Show 5 Gen 1/2
Echo Show 8 1st Gen

They share similar or the same SoC. I’d like to expand beyond that chipset though as well, but all time dependant :smiley:

Is this echo 2 also known as echo plus??

not sure what it was called outside of the UK but its the second gen Echo from around 2018 time, I can get the part No

edit: one of these

This is … awesome!

I am willing to destroy an echo gen 2 for even the hope of this. I haven’t bother tearing an echo apart the in the past but can do whatever. I see 6 pins on the bottom covered by a rubber cap on your currently supported model. Can I just use those to connect or are there uart/usb pins i need to soldier to? I’m still trying to figure out the initial flash after looking at all your stuff for an hour.

Ok, i think it is just a hidden usb port on the bottom now.

Nice! Yeah so those contacts on the bottom are the USB interface. I want to get to the point, if possible, where you dont have to disassemble and just need a jig of some kind so sit the echo on and you can install that way. At present the only validated way is to short a pin on the eMMC chip to force it to drop to BROM mode. Then you run the amonet based installer.