[Project] ostb-xiaozhi-3st ESP32-S3 AI toy — native ESPHome/Home Assistant voice satellite (unofficial board, NV3023 display)

If you ended up with one of the cheap unofficial ESP32-S3 “xiaozhi”-style AI toy boxes (sold on Alibaba/AliExpress under SKU ostb-xiaozhi-3st) and want to run it as a native ESPHome voice assistant instead of the stock xiaozhi.me cloud firmware — I just published a full writeup + working config.

This board isn’t in the official xiaozhi-esp32 supported list, so the stock firmware builder can’t target it, and there was no existing ESPHome config for it. Pinout was originally reverse-engineered by Stanley00; I confirmed it on real hardware and got the full pipeline working: touch-to-talk, mic/speaker, HA Assist voice control, and a working display driver for its NV3023 LCD controller (not ST7789V, as you might assume).

Covers five real gotchas with root causes and fixes:

  • micro_wake_word ring-buffer overflow (fixed by switching to push-to-talk)
  • STT silently failing — shared I2S clock between mic/speaker needing to be “primed”
  • Display showing a different garbled pattern on every reset (marginal RESET pulse timing)
  • Wrong display driver entirely (NV3023, not ST7789V) — real register init sequence
  • Fine graphics/animations still corrupted (open issue, ili9xxx → mipi_spi/LVGL migration is the likely fix)

Full writeup + working YAML: GitHub - MKtuzi/ostb-xiaozhi-3st-esphome: ESPHome/Home Assistant native voice assistant config for the unofficial ostb-xiaozhi-3st ESP32-S3 AI toy board · GitHub

Hope it saves someone else the couple of long evenings this took to figure out.