TECHO5 (upgraded fork): Echo Show 5 as an HA voice satellite, now with Xiaozhi voice, an Android cast app and a Stream Deck

Hi all,

I’d like to share what I’ve built on top of TECHO5. There are now three parts: the fork itself with a second voice assistant (Xiaozhi), TECHO5 Cast for Android, and TECHO5 Stream Deck for the desktop.

The parent project: TECHO5

TECHO5, by HuskerMinion, is open firmware for the Amazon Echo Show 5. It replaces Android and Alexa with a small Alpine Linux image and one Go daemon, which turns the Show into a Home Assistant voice satellite with its own touch screen. It talks to HA over the ESPHome native API, so there’s no Alexa, no Amazon account and no Amazon cloud.

  • On-device wake word (microWakeWord) with echo cancellation
  • A clock with weather, now playing with cover art (Music Assistant), alarms with a sunrise wake light, and cameras
  • HA dashboards on the screen, either drawn by the device or streamed with dashcast
  • A/B root slots with OTA updates from HA’s update card, so a bad update falls back on its own
  • It also runs on the Echo Show 5 1st gen, the Echo Show 8, the Echo Spot and the Echo Dot 2

TECHO5 itself started from EchoLocal by Yuri Gelfand. The unlock these devices need is amonet. Credit to all of them.

My fork is asmsaifs/techo5. It has its own signed OTA channel, and the latest release is v0.10.5.

1. Xiaozhi as a second voice assistant (in the fork)

Xiaozhi (小智) is a voice-assistant service with its own agents and streaming speech recognition. The Show now speaks its WebSocket protocol, and you choose which backend the wake word reaches. Home Assistant stays the default.

  • Opus uplink and downlink run in pure Go (no cgo), so the binary stays static. The encoder is about 3 % of one core on the Show’s two Cortex-A53s.
  • It works against the official cloud, with the on-screen activation code, or against a server of your own. A server of your own needs no activation, so it can run entirely in your house.
  • It is off until you turn it on. While it’s on, the microphone audio of each turn is sent to that server. On the official cloud that is a third party, and the docs say so plainly. The wake word is matched on the device and is not sent.
  • A voice_backend select and an xiaozhi switch show up in HA.
  • Recent fix (v0.10.5): a turn the cloud never closes now ends after 8 s of quiet. Before, it held the microphone for over a minute and the wake word stopped working.

I’m also testing it with a self-hosted relay, xiaozhi-server-nodejs, that bridges the Xiaozhi protocol to Gemini, Qwen or a local model.

2. TECHO5 Cast (Android), v0.1.0

TECHO5 Cast lets you cast to the Show from an Android phone. In YouTube, tap Share → TECHO5 Cast and it plays on the Show with picture and sound. You can also share a video file or mirror the whole screen.

  • No server in between. The phone decodes the video and sends small JPEG frames and audio over your Wi-Fi, encrypted (Noise protocol), and the Show only displays them.
  • Pairing is a QR code shown on the Show. It is off until you turn on Cast from a phone, and the Show asks you to Accept before a phone can cast.
  • No accounts, analytics or ads. It needs Android 10 or later.
  • I measured 30 fps at half scale on a real Echo Show 5, with clean audio.
  • It does not do DRM video (Netflix and similar), and it is not YouTube’s own Cast button, because that is Google’s protocol.
  • It is not on Google Play. It uses yt-dlp for YouTube links, which YouTube’s terms and Play policy don’t allow, so I publish signed APKs on GitHub instead. Please read the note in the README before using it.

The protocol and the castsend bench tool are MIT. The app is GPL-3.0.

3. NEW: TECHO5 Stream Deck (macOS, Windows, Linux), v1.0.0

TECHO5 Stream Deck is a desktop app that turns the Show into a Stream Deck. You get a grid of touch buttons that run actions on your computer, plus tiles that stream a website or a desktop app, with sound, onto the Show and take its touches back.

  • It speaks the same protocol as dashcast. A Show on the fork only needs its Dashboard server set to <computer-ip>:9555 with the deck’s key.
  • Since v0.10.5 the Show has a separate deck server setting. You open the deck with a swipe from the right edge, and the left edge asks dashboard or deck when both are set up. The deck’s sound plays on the Show.
  • Installers: .dmg (macOS), Setup.exe (Windows), .AppImage and .deb (Linux). Releases are signed, and the tray has a Check for updates.
  • MIT licensed. It is first-release software, so expect rough edges.

Status and feedback

Version
TECHO5 fork (with Xiaozhi and the deck server) v0.10.5, in daily use on my Show 5 (2nd gen)
TECHO5 Cast v0.1.0
TECHO5 Stream Deck v1.0.0

Xiaozhi support and the deck are new, and I’ve mostly tested them on my own setup. I’d love feedback, bug reports or testing on other devices.

Awesome additions!

Would it be possible to integrate this into a single repo which supports all these functionalities rather than multiple repos? Ideally PRs to the main repo would ensure there is a single source that’s well maintained.