mrkeyoor.com_
Thu 17 Sept 03:59 UTC
AI Toolsevaluationupdated 26 Aug 2026

xiaozhi-esp32 review

XiaoZhi ESP32 is firmware for building a voice assistant on ESP32 boards, with audio, displays, cameras, networking, and device control handled on the microcontroller. It connects the device to speech and language-model services, while MCP lets the assistant operate hardware such as speakers, LEDs, servos, and GPIO pins.

+144stars / 7d
Verdict

Our XiaoZhi ESP32 setup failed in 1 second because plain CMake could not load the ESP-IDF project file or recognize an ESP-IDF command. Use the prepared firmware if your board appears in the matrix and you want a quick route to a capable voice gadget. Choose the source build only if ESP-IDF, board revisions, and a separate voice backend are familiar territory.

We ran it

Lab card: what happened when we ran xiaozhi-esp32Screenshot of xiaozhi-esp32 (xiaozhi.me)
Install✗ · 1s
Build
Repo1658 files~122,960 lines of source · 9.1 MB · 1 CI workflows

Answers from our run

Does xiaozhi-esp32 build from source?

The dependency install failed, and the project has no separate build step. We cloned commit bb9122a into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use xiaozhi-esp32?

Developers expecting a normal desktop CMake project: our plain CMake run failed because ESP-IDF's project file and commands were unavailable.

What are the alternatives to xiaozhi-esp32?

ESPHome, Wyoming Satellite, ESP-BOX. Our XiaoZhi ESP32 setup failed in 1 second because plain CMake could not load the ESP-IDF project file or recognize an ESP-IDF command.

Setup2/5Plain CMake failed; prepared firmware is the easier route
Docs4/5English setup, board, protocol, and migration guides are linked
Community5/529,178 stars and active board-specific issue traffic
Maturity4/5v2.4.2 and a wide board matrix, with revision-specific reports

Who it’s for

Embedded developers building a voice assistant around an ESP32 board, microphone, speaker, and optional screen or camera.
Makers who own one of the documented boards and prefer flashing prepared firmware before changing C++ code.
Teams that want an ESP32 voice endpoint for their own WebSocket or MQTT plus UDP service.
MCP builders who want spoken requests to control device-side hardware or reach cloud-side tools.

Who it’s NOT for

Developers expecting a normal desktop CMake project: our plain CMake run failed because ESP-IDF's project file and commands were unavailable.
Buyers who need one binary guaranteed across every listed board: the README separates 171 release variants and reserves ESP-IDF 5.5 for documented legacy boards.
Teams unwilling to operate or trust a remote voice backend: the beginner firmware connects to xiaozhi.me by default, while self-hosting requires a separate server project.
Windows-only firmware teams seeking the easiest supported build path: the README recommends Linux for faster compilation and fewer driver problems.
Products that cannot validate their exact board revision: current open reports describe boot, display, and power behavior on specific ESP32-P4 and ESP32-S3 combinations.

Setup reality

Our sandbox checkout at commit bb9122a failed its install step in 1 second. The 1,658-file, 9.1 MB repository had about 122,960 source lines. CMake could not find /tools/cmake/project.cmake, then reported that idf_build_set_property was unknown. No build or tests followed.

The documented developer route needs VS Code or Cursor, the ESP-IDF plugin, and preferably ESP-IDF 6.0.2. A real device also needs compatible board hardware and either the default xiaozhi.me service or a separately deployed backend.

Board choice changes the work. The README lists 171 release variants across several ESP32 families, keeps ESP-IDF 5.5.2 only for legacy compatibility, and says Linux is the better compilation host. Beginners can avoid the toolchain by flashing prepared firmware.

The firmware targets 171 board variants, not one reference device

XiaoZhi ESP32 is the device half of a voice assistant. It captures audio, streams it to speech and language-model services, plays the reply, and can add a display, camera, battery reporting, or physical controls. The README lists 171 release variants in 138 board directories across ESP32, C3, C5, C6, S3, and P4 chips. That breadth is the attraction, but it also means the board name and revision are part of the software decision.

The checkout makes the scale visible: our commit bb9122a clone contained 1,658 files and about 122,960 lines of source in 9.1 MB. Networking can use Wi-Fi, Ethernet, USB RNDIS, or named 4G modules. Audio travels over WebSocket or MQTT plus UDP, with Opus, wake-word support, and full-duplex interaction on hardware that supplies acoustic echo cancellation. Displays can show expressions, and supported boards can send camera input.

MCP controls GPIO while the voice model stays elsewhere

MCP is used on both sides of the device boundary. Device-side tools expose hardware such as the speaker, LED, servo, and GPIO. Cloud-side tools can reach services such as smart-home controls, desktop operations, search, or email. XiaoZhi is therefore useful when spoken interaction must end in a physical action, not just another text response. The microcontroller remains an endpoint; the language model and most speech processing live behind the selected service.

That split matters before buying parts. The beginner firmware connects to xiaozhi.me by default, where a personal account configures the model. The README also points to separate Python, Java, and Go server repositories for personal deployment. Our 3-CPU, 8 GB sandbox did not exercise any of those backends, because the supplied measurement covered this firmware repository only. A private deployment requires choosing, securing, and maintaining another project alongside the board.

What happened when we ran it

Our sandbox install failed in 1 second at commit bb9122a. CMake reached CMakeLists.txt, then could not find /tools/cmake/project.cmake. It next reported idf_build_set_property as an unknown command and stopped configuration. Those messages establish that the plain CMake environment could not configure this checkout. They do not show a compiler failure, a faulty board target, or a problem in the firmware itself.

No build or test step followed the failed install. The repository scan found 1 CI workflow file, no Dockerfile, and no tests directory. That result is useful because XiaoZhi is easy to mistake for an ordinary C++ checkout. Its documented source path starts with ESP-IDF and its editor plugin, so a fresh Debian container with CMake alone does not reproduce the expected development environment.

The README currently prefers ESP-IDF 6.0.2 and a stable 6.0 or later release. ESP-IDF 5.5.2 remains only for documented legacy boards, while the ESP32-S31 variant needs 6.1 or later. Those version boundaries should be pinned per product. Upgrading the SDK because another board needs it can change the component and driver behavior of a device that already works.

Flashing prepared firmware avoids the failed source path

Beginners do not have to compile. XiaoZhi links to a firmware builder and a flashing guide, and the prepared image connects to the official service. That is the sensible first trial for a listed board: confirm its microphone, speaker, display, network, and provisioning behavior before installing a 6.0.2 toolchain. A successful flash still tests only that exact hardware combination, not all 171 variants.

Source work is a different commitment. The documented setup uses Cursor or VS Code with the ESP-IDF plugin, and the project says Linux gives faster compilation with fewer driver issues than Windows. Custom boards need their own board definition and hardware choices. Wake words, fonts, emoji, and backgrounds have a separate web asset generator. Each extra layer is documented, but none is part of the 1-second CMake command our sandbox attempted.

Specific board revisions still produce specific failures

GitHub listed 673 combined issues and pull requests when fetched, so that number must not be read as 673 bugs. Recent reports are still instructive. Issue 2178 describes an M5Stack Tab5 with ESP32-P4 revision 1.3 rebooting before app_main; issue 2186 reports a black panel after display initialization on that device family. Issue 2213 covers another ESP32-P4 revision 1.3 board that crashes before app_main.

The activity is current rather than abandoned. The repository was last pushed on August 21, 2026, after release v2.4.2 arrived on August 6. That release added or repaired several board definitions, including LCD Wiki, Waveshare, M5Stack, and ESP32-S31 entries. Board work is clearly moving. It also shows why a product team should freeze the exact board, SDK, firmware commit, and service endpoint after validation instead of treating the compatibility list as interchangeable hardware.

XiaoZhi is strongest as a supported-board shortcut

A maker with a listed board can get an unusually complete device experience from one firmware family: 39 interface languages, several network paths, wake words, display expressions, camera input, and MCP hardware control. The prepared-image route is the best way to learn whether that combination fits. It avoids interpreting our failed CMake configuration as a verdict on hardware we did not run.

For a commercial device, the wide matrix cuts both ways. Release v2.4.2 shows active maintenance, while the open revision-specific reports show the validation burden does not disappear. XiaoZhi is a good shortcut when its assumptions match your board and backend. It is a poor foundation for a team that expects generic CMake, a single self-contained server, or proof that every advertised board behaves alike.

Alternatives

ProjectWhat it isPick it when
ESPHomeFirmware tooling for describing ESP devices and connecting them to home automation systems.pick this instead when sensors, switches, and Home Assistant integration matter more than a character-driven chatbot.
Wyoming SatelliteA voice satellite service for Linux devices using the Wyoming protocol.pick this instead when a Raspberry Pi or Linux box is acceptable and local voice-assistant integration is the main job.
ESP-BOXEspressif's reference applications and SDK support for its ESP-BOX hardware.pick this instead when you want vendor examples for ESP-BOX hardware rather than XiaoZhi's service and board matrix.

Sources

  1. XiaoZhi ESP32 README
  2. XiaoZhi ESP32 v2.4.2 release
  3. M5Stack Tab5 reboot report
  4. M5Stack Tab5 black-panel report
  5. ESP32-P4 revision 1.3 boot report

More ai tools reviews

yolov5 · eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · the whole board →