Help us shape the future of Go! Take the 2026 Go Developer Survey

techo5

module
v0.2.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2026 License: MIT

README

TECHO5

Buy Me a Coffee

Tech Echo 5 — an open, local-only firmware project for the Amazon Echo Show 5 (2nd generation, 2021, codename cronos).

The goal is a leaner and more capable replacement for the stock Alexa software: a Home Assistant voice satellite with an on-device wake word, a native media_player, and a dashboard display, with nothing leaving the house.

Why

The Echo Show 5 is a 5.5-inch touchscreen, a far-field microphone array, a speaker and a MediaTek MT8163 in a nice enclosure. Once the bootloader is unlocked it is a small Linux computer that only needs three jobs done well:

  1. hear a wake word and stream audio to Home Assistant Assist,
  2. play speech and music,
  3. show a dashboard.

Android is a lot of machinery for that. TECHO5 aims to do those jobs with a small daemon and a kiosk, keep the hardware fully local, and stay easy to update.

Status

In daily use on a Show, with no Android at all: the unit boots its own Alpine Linux image and one daemon (echod/) does everything. It is a Home Assistant voice satellite with an on-device wake word and echo cancellation, a media player with radio and Bluetooth earbuds, a clock with weather, timers and alarms, a camera entity, and a touch settings sheet; it updates itself over the air from these releases into A/B slots with automatic fallback. docs/overview.md is the one-page description; docs/porting-plan.md is how it got here.

Getting there still takes an unlocked bootloader (amonet-cronos) and the first-install steps in tools/linux/README.md. A step-by-step guide for a new unit is being written from a first install on a second Show.

Screenshots

Taken from the device's own screen (/screen.png, with placeholders for names and addresses).

Clock with weather and the next alarm An alarm ringing, with Stop and Snooze
Clock, weather and the next alarm A ringing alarm
Settings: Device Settings: Alarms
Alarm editor
Setting an alarm Settings: Security
Settings: Theme

Running the daemon beside LineageOS (the older route)

Before the Linux image, the daemon ran as an init service on LineageOS 18.1. That still works, on a unit with USB debugging and rooted debugging enabled:

cd echod
$env:GOOS='linux'; $env:GOARCH='arm'; $env:GOARM='7'; $env:CGO_ENABLED='0'
go build -trimpath -ldflags '-s -w' -o ../bin/echod-arm ./cmd/echod
cd ..
.\tools\install-cronos.ps1 -Serial <adb serial> -Name "Kitchen" -KeyFile .\kitchen.psk

The installer puts the daemon in place as an init service, switches Android to its null audio HAL (the daemon owns the microphone and speaker), provisions the name, API key and wake word models, and reboots. Home Assistant then discovers the device as an ESPHome node; paste the key when asked. Android and any app on the screen keep running, silently.

Approach

EchoLocal (MIT) already turns the Echo Dot 2 (biscuit, the same MT8163 family) into an ESPHome-native Home Assistant satellite with a single static Go daemon that drives the hardware directly. TECHO5 brought that daemon to cronos, added the display, camera, Bluetooth and update layers it did not have, and put it on a minimal Alpine root filesystem in place of Android.

See:

Name

TECHO5 reads as "Tech Echo 5": the Echo hardware lineage and the 5.5-inch form factor. Style it TECHO5 or tEcho5.

License

MIT. See LICENSE.

TECHO5 is not affiliated with Amazon. Echo and Alexa are trademarks of Amazon.com, Inc.

Directories

Path Synopsis
cmd
audioprobe command
audioprobe proves raw capture and playback on the Echo Show 5 (cronos) without the vendor audio HAL: it records from the TLV320AIC3101 capture device, reports per-channel levels, writes a WAV, and plays a tone (or the recording) through the MAX98396 playback device.
audioprobe proves raw capture and playback on the Echo Show 5 (cronos) without the vendor audio HAL: it records from the TLV320AIC3101 capture device, reports per-channel levels, writes a WAV, and plays a tone (or the recording) through the MAX98396 playback device.
btbridge command
btbridge makes the MediaTek Bluetooth driver's raw H4 channel (/dev/stpbt, from the vendor mt76x8_bt module) look like a Linux HCI device by copying packets both ways through the kernel's virtual HCI driver (/dev/vhci, CONFIG_BT_HCIVHCI).
btbridge makes the MediaTek Bluetooth driver's raw H4 channel (/dev/stpbt, from the vendor mt76x8_bt module) look like a Linux HCI device by copying packets both ways through the kernel's virtual HCI driver (/dev/vhci, CONFIG_BT_HCIVHCI).
dispprobe command
dispprobe paints a test picture on the Echo Show 5's panel through the MediaTek display controller (see internal/mtkdisp).
dispprobe paints a test picture on the Echo Show 5's panel through the MediaTek display controller (see internal/mtkdisp).
fbprobe command
fbprobe draws straight to the Echo Show 5's framebuffer: a background, colour bars and large text, rotated for the landscape orientation the device is used in.
fbprobe draws straight to the Echo Show 5's framebuffer: a background, colour bars and large text, rotated for the landscape orientation the device is used in.
rebootto command
rebootto reboots with a MediaTek boot-mode argument, the way Android's `reboot bootloader` / `reboot recovery` do: the kernel's arch_reset marks the target mode in the RTC spare register so LK boots into it.
rebootto reboots with a MediaTek boot-mode argument, the way Android's `reboot bootloader` / `reboot recovery` do: the kernel's arch_reset marks the target mode in the RTC spare register so LK boots into it.
echod module
internal
alsa
Package alsa captures PCM audio by driving the /dev/snd ioctl interface directly.
Package alsa captures PCM audio by driving the /dev/snd ioctl interface directly.
mtkdisp
Package mtkdisp drives the MediaTek display controller on the Echo Show 5 (MT8163, "cronos") the way Android's hardware composer does: a display session on /dev/mtk_disp_mgr, pixel buffers from the ION multimedia heap, and one overlay layer pointed at a buffer per frame.
Package mtkdisp drives the MediaTek display controller on the Echo Show 5 (MT8163, "cronos") the way Android's hardware composer does: a display session on /dev/mtk_disp_mgr, pixel buffers from the ION multimedia heap, and one overlay layer pointed at a buffer per frame.
tools
wavstats command
wavstats reports per-channel levels and how alike channels are, for the multichannel WAVs that audioprobe writes.
wavstats reports per-channel levels and how alike channels are, for the multichannel WAVs that audioprobe writes.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL