# Muse gadget firmware on three Waveshare ESP32-S3 boards

A fork of Meta's Muse Gadget SDK that runs the Muse avatar UI on three Waveshare ESP32-S3 touch boards, with spoken replies through ElevenLabs streaming TTS and a dizzy, sleepy and tickle animation set.

- Category: Interface (mod)
- Made by: [wupsbr](https://github.com/wupsbr) on GitHub
- Original: https://github.com/wupsbr/waveshare-muse-gadget-sdk
- On Afterware: https://afterware.xyz/p/muse-gadget-firmware-on-three-waveshare-esp32-s3-boards

## Can I build this?

- Difficulty: Beginner
- AI-buildability: 4/5 (Nearly all the work is ESP-IDF firmware that AI tools can write and adapt, with off-the-shelf Waveshare boards that need no soldering, though ESP-IDF setup and board quirks still need hands-on debugging.)
- Time: A weekend
- Cost: $25–50
- Parts: ESP32-S3, 1.3in SH1106 128x64 OLED
- Tools: USB-C cable, computer with ESP-IDF installed, Muse account and SDK token

Estimates based on the original write-up. How the AI-buildability score works: https://afterware.xyz/ai-buildability

## Build sheet

- Boards: Waveshare ESP32-S3 x3
- Display: Round LCD and AMOLED
- Framework: ESP-IDF, LVGL
- Base: Meta Muse Gadget SDK fork

## Starter prompt

```
Based on "Muse gadget firmware on three Waveshare ESP32-S3 boards" on Afterware: https://afterware.xyz/p/muse-gadget-firmware-on-three-waveshare-esp32-s3-boards

Set up an ESP-IDF project for an ESP32-S3 board with a round 1.85in ST77916 QSPI display and CST816 touch. Use LVGL to draw a simple animated avatar screen, and add a horizontal swipe that opens a settings page and a vertical drag that changes a volume ring on the edge. Keep the display driver and touch driver in separate files so the board definition can be swapped.
```

## Story

This fork of Meta's Muse Gadget SDK adds support for three Waveshare ESP32-S3 boards: the ESP32-S3-Touch-LCD-1.85C in a round speaker enclosure, the round ESP32-S3-Touch-AMOLED-1.43C, and the square ESP32-S3-Touch-AMOLED-1.8. All three run the full Muse UI with an animated avatar, push-to-talk on the BOOT button, touch settings and OTA updates. The boards are community ports and are marked experimental.

The fork adds spoken replies through ElevenLabs streaming text-to-speech, optional pushed messages, touch volume by dragging on the avatar screen, and battery percentage with a time-left estimate. It also includes a display freeze fix cherry-picked from upstream and watchdogs turned back on so a stuck task reboots the board.

The avatar gets a set of reactions: shaking the board makes it dizzy on boards with a QMI8658 accelerometer, it dozes with a snore before the screen sleeps, wakes when the screen returns, and giggles when its face is rubbed or tapped quickly. The repository notes that the code was written with AI coding tools, and the character art belongs to Meta.

## Resources

- [Repository](https://github.com/wupsbr/waveshare-muse-gadget-sdk)
- [Upstream Muse Gadget SDK](https://github.com/facebookincubator/muse-gadget-sdk)
- [Upstream PR #34](https://github.com/facebookincubator/muse-gadget-sdk/pull/34)

Tags: esp32-s3, lvgl, amoled, round display, elevenlabs, touch ui, esp-idf, vibe-coded

AI assistants can search all Afterware builds through the MCP server at https://afterware.xyz/mcp (setup: https://afterware.xyz/agents).
