Reverse-engineered protocol and a small Python library for driving the Amazon Echo Wall Clock from anything that speaks Bluetooth Classic: set the time, show timers on the LED ring, pulse for timers/alarms/reminders, and light the notification LED. No Echo required. It runs locally and never touches Amazon's servers.
Try the clock simulator in your browser.
| Thing | Version |
|---|---|
| Echo Wall Clock | FCC ID UUU-8459, firmware 102 |
| Controller | Raspberry Pi 3B, Raspberry Pi OS, BlueZ 5.82, Wi-Fi off |
| Reference Echo | Echo Dot, 3rd gen (model C78MP8), used only to capture real Echo traffic |
Other firmware versions are untested; see CONTRIBUTING.md.
PROTOCOL.md: pairing quirks, framing, messages, and observed display behavior.agt.py: transport-independent framing, checksum, protobuf codec and message builders.pi_echo.py: the Echo side on Linux/BlueZ (tested on a Raspberry Pi 3B). Pairs, handshakes, syncs time, starts and cancels timers;--control FIFOfor interactive sessions.fake_clock.py: the clock side on Linux/BlueZ, for capturing what a real Echo sends.clocksim.py: face simulator. Draws the 60-LED ring and hands as SVG from a list of timers (idle, one, several, paused, done); stdlib only.python3 clocksim.py --out docs/simwrites the example scenes, andrender_svg()can be called on every timer change for a live preview.web/: interactive simulator page (try it live) and a JS port of the renderer (clocksim.js);python3 tests/test_parity.pychecks it matchesclocksim.py. To run it locally, serve the folder (python3 -m http.server -d web).examples/set_timer.py: smallest use ofagt.py; builds the frames, no Bluetooth needed.tools/:extract_response.py, plus early macOS recon scripts intools/macos/.scripts/: Pi helper scripts (install dir is$CLOCK_DIR, default~/clock).docs/: quick start, troubleshooting, controller mapping (timer events to messages), capturing your own.
# clock flashing amber (hold its button); run as root on the Pi, with Wi-Fi off on a Pi 3
sudo python3 pi_echo.py --address CC:9E:A2:xx:xx:xx --fresh --timer 3 --listen 200Requires python3-dbus and python3-gi. Writing to the clock's OTA channel (RFCOMM 2) is never
needed and not supported.
Unofficial, not affiliated with or endorsed by Amazon. Alexa and Echo are Amazon trademarks. The
code was written from observed behavior and Amazon's public protocol documentation; no Amazon sample
code is included. Use at your own risk; this talks to your own device only. Do not publish your
clock's serial number or device token (they appear in its Discover.Response).