EchoMuse gives one old Echo model a useful second job
A used second-generation Echo Dot costs about $10 by the README's estimate, and it is the one model EchoMuse supports. The project replaces Alexa's role with a local Go service on the Dot and a Python controller on your network. Home Assistant sees the result as an ESPHome voice satellite and media player, so wake words, Assist conversations, music, buttons, light readings, and Bluetooth advertisements can feed an existing home setup.
The hardware reuse is unusually complete. The 7-microphone array, LED ring, speaker, action button, mute control, and 3.5 mm jack all have jobs. Wake detection stays on the controller by default, where models and sensitivity can change without reflashing the Dot. An experimental device-side scorer can observe the same audio without deciding when to wake. That gives the project a way to compare placements before moving responsibility onto old hardware.
Rooting and FireOS 5 are the real installation cost
A compatible Dot needs FireOS 5, persistent root, and Magisk 17.3 before the controller can provision it. The controller itself has a simpler path: a published Docker image or a Home Assistant add-on. Its dashboard then guides USB provisioning, Wi-Fi, firmware, TLS credentials, and wake-word assets. Approved devices appear through Home Assistant's built-in ESPHome integration.
The README is blunt about amonet-biscuit versions. Use 1.1.0. Version 2.0.0 replaces bootloaders and moves the hardware onto FireOS 6, which EchoMuse does not support today. It also warns against manually flashing older components after that upgrade because doing so can hard-brick the Dot. This is hardware modification with a real failure boundary.
What happened when we ran it
Our sandbox cloned commit f884d40 with 3 CPUs and 8 GB of RAM. The 6.1 MB checkout contained 393 files and about 94,455 source lines. In the GoTinyAlsa project, installation succeeded in 8 seconds and added 14 packages. The build completed successfully in 4 seconds.
The test step failed with exit code 1 after 21 seconds. go test reported 0 passed and 11 failed of 11. The supplied tail labels the example package as a setup failure and lists build failures for internal/tinyapi, internal/tinypcm, pkg/pcm, and pkg/tinyalsa. It does not include the earlier compiler message, so assigning a cause would be guesswork. The scanned target had 7 CI workflow files, no Dockerfile, and no tests directory.
GoTinyAlsa keeps the clean build from being a clean checkout
All 11 reported test targets failed in our lab run, including packages close to capture and playback. EchoMuse includes the maintainer's GoTinyAlsa fork as a Git submodule and says it carries a leak fix. That library binds Go code to TinyAlsa for Android audio. Its own documentation mentions native library linking and deprecated TinyAlsa calls retained for Android compatibility, both reasonable concerns for software aimed at a 2016 device.
Our 4-second build proves that the selected build target compiled in the stated container. The log excerpt is too short to separate a missing system component from a source problem, and we will not invent that diagnosis. Before flashing a device, reproduce the suite with the project's intended toolchain and retain the first error, not only the summary.
Local control includes fleet operations, not just voice turns
The controller pools detections when 2 Dots hear the same utterance, then lets the better-placed device answer once. Music ducks under spoken replies instead of pausing, which protects progress on a live radio stream. The dashboard can push EQ, microphone, and LED settings across devices, show wake scores and playback underruns, and deliver A/B-slot updates with fallback.
Security is handled with a controller-created certificate authority and per-device tokens. The README says there is no usage telemetry or install counter. Its stated outbound contact is an hourly GitHub release check, with timing under the operator's control. Optional recent microphone recordings can help tune capture by ear, but operators should decide deliberately whether keeping those clips fits the household's privacy rules.
Two open jack faults limit where the Dot belongs
Issue 117 records a microphone stall of roughly 30 seconds after unplugging headphones, followed by a controller disconnect and automatic recovery. Issue 141 reports repeated reconnects and unstable music while an aux cable is attached. The README calls out both faults rather than hiding them, which is good documentation and still a reason to avoid this setup where the jack changes often.
Hardware support is just as narrow. Open issue 527 asks about the full-size Echo 2 and Echo Dot 3; it does not establish support for either. GitHub recorded the last push on September 17, 2026, one day after the emOS v0.7 release. The repository had 786 stars and 122 combined issues and pull requests. That is current activity, although the open count is not a defect count.
Pick EchoMuse when the spare Dot is part of the appeal
For a compatible second-generation Dot, the choice is between a $10 hardware rescue and a simpler voice-satellite build on supported Linux hardware. EchoGo is closer to the metal for developers who want to write their own Dot software. EchoMuse makes sense when the original microphones, speaker, and controls are part of what you want to keep.
The 11 failed Go test targets prevent an unqualified recommendation. So do the FireOS 5 dependency and open jack faults. For the exact owner who accepts the rooting procedure and will verify the device build before flashing, the payoff is concrete: old Amazon hardware becomes a local Home Assistant endpoint instead of electronic waste.

