Echo Dot 3rd gen (2018) as a fully local Assist satellite, keeping Amazon's mic array and wake word engine

After I saw that my Echo Dot got rooted I could not resist throwing my clanker at the problem and turning the paperweight into a usable HA voice satellite, while keeping as much of the original audio stack as possible. It has since grown to three Echo models.

Major thanks to @Alessandro_Alfonzett and their work (Re-Using an Echo Dot 3rd gen with Voice Assistant) for inspiring me and for making me aware this was possible.

Which Echos

  • Echo Dot 3rd gen (only 2018): you need to open it and attach wires inside
  • Echo Dot 2nd gen: just a micro-USB cable, no soldering, the easiest one
  • Echo 2nd gen (the tall one): you need to open it and solder a USB cable inside

What you get

  • A voice assistant for Home Assistant that HA finds by itself. You click “add” and it’s there, no YAML.
  • It still hears you like the old Echo did: across the room and over its own music, because Amazon’s microphone processing stays in place.
  • Say “Alexa” like before, or switch it to “Echo”, “Computer”, “Amazon” or “Ziggy” and pick the wake word in HA.
  • Several Echos in the house? Only the one closest to you answers. The others stay quiet.
  • Timers, announcements, follow-up questions. Say “Alexa, stop” to cut off a reply.
  • Works as a media player in HA and as a Music Assistant speaker, including synced multiroom.
  • Bluetooth speaker for your phone (pairing is switched on from HA), and a Bluetooth proxy for your HA devices.
  • Do not disturb, an equalizer and the mic sensitivity are all settings in HA.
  • Buttons, light ring and the mute button behave like you’re used to.
  • It never talks to Amazon: Alexa is switched off and the Echo is blocked from the internet.
  • A guided setup walks you through the install step by step and only stops when you have to do something by hand.
  • Updates come over Wi-Fi after that, and you can go back to stock Alexa.

The catch

  • Unlocking the Echo can brick it, and it needs to be on the exact firmware version the instructions name
  • On the Dot 3 and the Echo 2 you have to open the case and solder or clip wires
  • You need a Linux PC
  • Honest disclaimer: the whole project was written with an AI (Claude), reverse engineering included. It has been tested on exactly one unit of each model: mine. Read what you run.

Repo with full install instructions:

Happy to hear whether it works on your unit, and bug reports are welcome.

I flashed one of my D9N29T with your guide and had almost complete success.

The Echo Dot is showing up in HA and can be configured as a voice assistant.
It reacts to the Alexa wake-word and my LLM gets the text from SST, reacts and returns the text to the TTS.

I can also see all of these through the run.sh when opening a shell through adb.

The only thing that isn’t working is audio output.
TTS, music, nothing is coming through to the speaker.

It’s not muted, I can also see this in run.sh which reports the current volume back when using the vol. buttons.

Do you have any idea what could cause this?

I think I know the reason. I deliberately disabled network access to WAN.

Is your HA on the local network? Can you check if in the system → network settings in HA the proper local IP is configured for local network?
I will see to making this work regardless later today.

Yes, HA is on the local network.

I also did some more testing.
Test sounds also didn’t play through the speaker.

At the end it turned out, that global mute was activated, even that the single mixer settings was activated and volume was up.

The fix was running this once:
adb shell '/system/bin/audio_manager_set_prop Mute 0'
The un-muted state survived a restart, so looks like this has to be done only once.

But after the reboot Wake-Word isn’t detected anymore.
Will investigate further …

Thanks for the feedback. I just pushed a few improvements, including fixing the global mute problem.
They should however not have any impact on wake word behavior. One thing, there is only feedback for for the wake word when HA reacts to it. So it needs to be connected and discovered properly.
/data/local/hassmic/boot.log should tell you if the wake word was detected anyways.

Yes, I’ve seen that the device disabled the Wifi connection on reboot and that was the cause.
At that moment the mute wasn’t reactivated.

Then I enabled Wifi again and WakeWord worked again but Mute kicked in.
After un-muting again, everything worked fine.

Will pull your changes and see if this already fixes everything.
Otherwise will try to debug what’s going wrong. :slightly_smiling_face:

Edit:
Just for the record what happened before pulling your updates.

After reboot:

Sound seems to be active (I get audio feedback on the “+” and “-” buttons).
But no wakeword.

When I checked wifi it’s inactive and connects once I activate it:

$ adb shell '/system/bin/wpa_cli -i wlan0 -p /data/misc/wifi/sockets status'
  wpa_state=INACTIVE
  ...

$ adb shell '/system/bin/wpa_cli -i wlan0 -p /data/misc/wifi/sockets enable_network 0'
$ adb shell '/system/bin/wpa_cli -i wlan0 -p /data/misc/wifi/sockets status'
  wpa_state=COMPLETED
  ip_address=<my_ip>
  ssid=<my_ssid>
  ...

Starting service manually, as I’m still testing:

adb shell /data/local/hassmic/run.sh

After that the device was muted again.

adb shell '/system/bin/audio_manager_set_prop Mute 0'

Btw. I just ordered a few used devices of this model from Ebay now.
(Grab them while they’re available :face_with_tongue:)
I can already see that this is a game changer.

Amazon’s wakeword engine is superior to whatever open source wakeword I tried,
and the used echos are far cheaper than a VPE while having a way better sound quality.

Thank you so much for joining the pieces together so quickly after the device got rooted. :upside_down_face:

Ok, the Wifi problem happens when you’re in the “Try it” phase and restart it.
At that point the Alexa initialization process will kick in (the voice telling you how to on-board the echo dot).

This seems to disable existing Wifi connections, as the connection was active on boot-up until that time.
When I start hassmic manually after that, it kills the onboarding process, but Wifi doesn’t get re-enabled, so this has to be done manually.

Once you “Make it permanent”, this won’t happen anymore, as the onboarding assistant doesn’t get started anymore.

edit:

And I also updated to your latest commits.
Impressive new feature set with the equalizer, bluetooth proxy, cancelation of multiple devices reacting at the same wake-word simultaneously.

:+1:

edit2:

Ah, forgot about that one:

What settings do you use for autogain and mic?

I have the feeling, that the current setup is kind of weak in speech recognition.
If I speak very silently to my Voice PE in a quiet room from a close distance, it will catch up everything very well.

This was also the case with the original Echo Dot firmware.
With this release here, I have to talk very loud.
Otherwise it will detect wrong words, or even stop listening while I still talk.

The voice assist pipeline is the same as on my Voice PE (STT is Nabu Casa cloud, but I also tried others like Elevenlabs).
Played around with the mic settings that you provide in HA, but it didn’t seem to help.

Do you have the same problem?

If this can be solved, this is most likely the best voice satellite you can currently get for HA. :upside_down_face:

Hey, nice to hear that it works in general, and thanks for the high praise.
I just pushed an update that makes this also work on the Echo 2 (XC56PY / radar) and the Echo Dot 2 (RS03QR / biscuit).

Also you are right…
The three mic settings in HA (noise suppression, auto gain, volume multiplier) are currently not functional. HA voice pipeline allows these as inputs from a satellite, but does not actually use them. My clanker confused that and I didn’t catch it in testing.
I only ever used a fully local voice pipeline. Specifically at the moment I use canary for speech to text, Granite 4.2 in llama.cpp as the LLM, and OmniVoice as the text to speech engine. This setup works really well for me, but I have to agree, sometimes it gets some word wrong.

I just checked the gain and have to agree, that depending on speaker position and orientation the signal can be really weak. Given this I just pushed a fix for that. All three previous settings should be gone and replaced by a single Mic Level setting that drives the now internal AGC target gain. The default -26 dBFS should be fine.
Please check if this new version helps. Just from a quick test I felt that it definitely improved speech to text perfomance.

I also noticed the same when I did some tests with different gains after my last reply and the recorded test files from the devices have all been the same. :slightly_smiling_face:

Will test the new version and report back. :+1:

This is better now, but even with max mic level at -15db, this is what I get when sitting next to the Echo Dot and speaking in a quiet room in a low, but comfortable level.

Recording is done by adding this to configuration.yaml:

assist_pipeline:
  debug_recording_dir: /share/assist_pipeline

So the level is higher than with the default setting of -26db, but still very low.

Will try to root another Echo Dot in the next days to see if it behaves similar.

Ok, so I did some more testing and it turns out that for some reason the spoken audio gets treated as background noise and thus is massively reduced in the output signal by the original audio processing logic, before even reaching hassmic.
When speaking from ~ 3 meters quietly with some background noise the current setup has a signal to noise ratio of only around 2 dB. With my crude changes to the ARA config (most likely something like Adaptive Reference Attenuation, their background noise filter) I got the signal to noise ratio to about 9 dB.
I still need to do a lot more testing, especially in different noise environments. But do expect a commit addressing this at the latest in a few days.

I am also thinking about adding optional RNNoise just before the amplification step to further increase the SNR, but this may backfire, given most STT models are trained on noisy data.

Can the needed firmware be flashed or must it notbe updated to a newer one?

How can i find out, which is installed?

The required firmware gets flashed during the installation. You need to download it from https://ftvdb.com/ but the setup should guide you to the correct specific links.
At the moment the exact firmware is required as the patches are quite static for specific binaries.

So it dont matter which is installed if i look for a used one. Thanks.

Are there TTS quality differences between gen2 and gen3 devices?

Tbh, I have not tested this extensively, but I assume that there are some hardware improvements per generation resulting in overall better performance.
While just testing if everything worked on the Dot 2, I just noticed it’s internal speaker is way worse than that of the Dot 3.

Can you say something about the big gen2 one?

I have also not really tested that one much. I know it works and that it was released a year after the echo dot 2 and a year before the echo dot 3, so the hardware could be somewhere in between, maybe still on par or better than the dot 3, given its the higher-end model.
I just know that the built-in speaker is a lot better than that of the dots, but this should not be a surprise given the size difference.

@Thyraz Hey. I just pushed a few changes today. This includes a fix for the noise cancellation ducking the speech itself, some major security improvements, and toggleable rnnoise.
I would suggest keeping noise reduction off, as STT models expect some noise, but in some cases it might help.

Great job!

I just ordered 4 of the D9N29T variants specifically for this project. I recently received the new sat 1.1 (pre-assembled) from future proof homes and am not impressed with the performance (plus, the power cable positioning is horrific). I also have the sat 1 dev kit and printed my own enclosure, reSpeaker lite and the xvf3800 version, all of which I am also unimpressed with.

I always based my expectations for voice assistants off of using Alexa. So using an actual echo dot and getting that performance is going to be amazing and hopefully delivers exactly what I’ve been dreaming of for years now. Also, the wife will be able to keep using Alexa as the wake word (the sat 1.1 doesn’t respond to her for some reason, works flawlessly with me though).

Appreciate your work on this, AI assisted or not.