ESP-IDF 5.x 已不再支持,最低需 v6.0.1;应使用 release/v6.1 分支而非 v6.1 发布标签,否则 ESP32-C3 可能出现 Wi-Fi 初始化失败;固件默认连接官方 xiaozhi.me 服务器,自建服务需另找第三方服务端项目。

安装 ESP-IDF v6.0.1 及以上(推荐 release/v6.1 分支),在 ESP-IDF 目录执行 git submodule update --init --recursive 并 source export.sh,再在项目目录运行 idf.py fullclean 后重新构建面向 ESP32、ESP32-C3、ESP32-C5、ESP32-C6、ESP32-S3、ESP32-P4 芯片平台,支持 138 个开发板目录、171 个发布变体,含 ESP32-S3-BOX-3、M5Stack CoreS3、SenseCAP Watcher 等;README 未提及显存或 GPU 要求。
基于 ESP32 的 MCP 语音聊天机器人固件,把大模型语音交互落到硬件上
基于 MCP 协议、跑在 ESP32 上的聊天机器人固件,让单片机也能接入大模型对话与工具调用。
核心能力
- 用 ESP-SR 实现离线语音唤醒,唤醒词可自定义
- 支持 WebSocket 与 MQTT+UDP 两种通信传输
- Opus 音频流配 ASR+LLM+TTS 管线与实时端到端语音模型
- 设备端 MCP 控制扬声器、LED、舵机、GPIO 等外设
- 云端 MCP 扩展智能家居、桌面操作、知识搜索等能力
容易踩的坑
- v2.5.2最新正式版2026-10-11 · 2026-10-11 20:49 UTC
188 firmware variants for 154 board directories, built with ESP-IDF 6.1.0.
Source:
49b4380b3faa0ceadd28a3e78aaf0f311c46c57e. Build and validation.Each firmware ZIP contains
merged-binary.bin. SHA-256 checksums and the complete variant manifest are attached. Builds and package checks do not replace physical hardware validation.What's Changed
- fix(websocket): guard transport field before strcmp in server hello by @WODE25500 in https://github.com/78/xiaozhi-esp32/pull/2247
- fix(ota): parse versions without throwing by @WODE25500 in https://github.com/78/xiaozhi-esp32/pull/2248
- fix(esp-vocat): stabilize PCB version detection across soft resets by @StanleyChanH in https://github.com/78/xiaozhi-esp32/pull/2249
- fix(mqtt): do not hold channel_mutex_ while sending UDP audio by @78 in https://github.com/78/xiaozhi-esp32/pull/2254
- fix(display): do not abort on short theme colors in assets skin by @Dev-next-gen in https://github.com/78/xiaozhi-esp32/pull/2256
- fix: free cJSON strings printed for custom messages by @Dev-next-gen in https://github.com/78/xiaozhi-esp32/pull/2257
- feat: add ESP-Mosaico by @laride in https://github.com/78/xiaozhi-esp32/pull/2259
- Move epaper display as common class by @epaper1 in https://github.com/78/xiaozhi-esp32/pull/2261
- fix(ogg): emit packets ending in a zero-length lace at end of input by @anxkhn in https://github.com/78/xiaozhi-esp32/pull/2267
- fix(waveshare 3.5b): index source buffer relative to flushed area in software rotation by @wrgrant in https://github.com/78/xiaozhi-esp32/pull/2268
- fix(esp-vocat): map the robot_2 emote so activation does not log "Not found" by @lv70 in https://github.com/78/xiaozhi-esp32/pull/2273
- Fix GC0308 Kconfig typo that disabled the BOX3 camera driver by @78 with @Copilot in https://github.com/78/xiaozhi-esp32/pull/2277
- feat(board): add Guition JC4827W543 (4.3" 480x272 ESP32-S3) by @gunhanmehmetakif in https://github.com/78/xiaozhi-esp32/pull/2272
- Add a staged idle power policy to the FoloToy AI Passport board by @Shinku-Chen in https://github.com/78/xiaozhi-esp32/pull/2283
- feat(lilygo): add T-Circle-S3 V1.1 board by @talofer99 in https://github.com/78/xiaozhi-esp32/pull/2286
- feat(board): add LC-S3-WIFI 1.54-inch TFT (ESP32-S3) by @aredridel in https://github.com/78/xiaozhi-esp32/pull/2293
- fix(esp-vocat): tolerate peripheral I2C read failures by @weilinear in https://github.com/78/xiaozhi-esp32/pull/2287
- add chd borads by @taonsh in https://github.com/78/xiaozhi-esp32/pull/2270
- ci: add manual full-matrix firmware releases by @78 in https://github.com/78/xiaozhi-esp32/pull/2302
New Contributors
- @WODE25500 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2247
- @StanleyChanH made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2249
- @Dev-next-gen made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2256
- @anxkhn made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2267
- @wrgrant made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2268
- @lv70 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2273
- @gunhanmehmetakif made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2272
- @talofer99 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2286
- @aredridel made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2293
- @weilinear made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2287
- @taonsh made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2270
Full Changelog: https://github.com/78/xiaozhi-esp32/compare/v2.5.0...v2.5.2
All 188 firmware builds succeeded in the linked workflow run. Its final publication step was recovered manually after separately verifying the SHA-256 digests of all 190 uploaded attachments.
- v2.5.02026-09-10 · 2026-09-10 18:38 UTC
查看更新说明
What's Changed
- feat: add wk esp32s3 dev board by @Father001 in https://github.com/78/xiaozhi-esp32/pull/2030
- fix: restore WDMomo CGC LCD selection by @78 in https://github.com/78/xiaozhi-esp32/pull/2175
- content : add waveshare esp32-c6-epaper-1.54 by @shunian11 in https://github.com/78/xiaozhi-esp32/pull/2174
- Add Marathi (mr-IN) Indian Language Support by @ChanchalSakardeQH in https://github.com/78/xiaozhi-esp32/pull/2180
- feat(m5stack-stopwatch): support display brightness control by @suflanker in https://github.com/78/xiaozhi-esp32/pull/2189
- fix(lichuang-dev): don't crash when the FT5x06 touch controller is absent by @sebastjanb in https://github.com/78/xiaozhi-esp32/pull/2204
- Add streamed notify playback by @78 in https://github.com/78/xiaozhi-esp32/pull/2191
- fix(otto): detect camera board from GPIO straps by @txp666 in https://github.com/78/xiaozhi-esp32/pull/2219
- fix(df-k10): clamp self.led_strip.scroll length to the actual LED count by @max-power in https://github.com/78/xiaozhi-esp32/pull/2222
- Fix camera format negotiation for big-endian RGB565 sensors (RGB565X) by @max-power in https://github.com/78/xiaozhi-esp32/pull/2225
- fix(led): scope CircularStrip effect state to the instance by @max-power in https://github.com/78/xiaozhi-esp32/pull/2221
- fix(display): redraw idle clock on minute change, not a shared timestamp by @max-power in https://github.com/78/xiaozhi-esp32/pull/2224
- fix(build): invoke ESP-IDF idf.py correctly on Windows by @zfkun in https://github.com/78/xiaozhi-esp32/pull/2211
- xpowers: add generic PMU wrapper over I2cDevice by @JackHuang021 in https://github.com/78/xiaozhi-esp32/pull/2237
- feat(board): 新增 FoloToy AI Passport (ESP32-C3) 板卡支持 by @Shinku-Chen in https://github.com/78/xiaozhi-esp32/pull/2236
- fix(esp-hi): fit 4MB assets and restore ST7735 bring-up by @78 with @Copilot in https://github.com/78/xiaozhi-esp32/pull/2238
- Add Maza AI boards for xiaozhi by @epaper1 in https://github.com/78/xiaozhi-esp32/pull/2185
- Add pt-BR (Brazilian Portuguese) locale by @mederix in https://github.com/78/xiaozhi-esp32/pull/2243
- fix(build): reject mismatched board configuration by @QiuLsG in https://github.com/78/xiaozhi-esp32/pull/2240
- Fix M5Stack Tab5 ST7121/ST7123 display detection by @78 in https://github.com/78/xiaozhi-esp32/pull/2227
- Bind Otto MCP responses to originating WebSocket client by @3em0 in https://github.com/78/xiaozhi-esp32/pull/2021
- feat(display): turn off OLED panel in power save mode by @Vitalymt in https://github.com/78/xiaozhi-esp32/pull/2195
- feat: add string max_length validation and JSON-RPC error codes to MCP server by @quantumnic in https://github.com/78/xiaozhi-esp32/pull/1847
- Disable C++ exceptions and keep ESP32-S31 firmware in the 4MB OTA slot by @78 in https://github.com/78/xiaozhi-esp32/pull/2246
New Contributors
- @Father001 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2030
- @ChanchalSakardeQH made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2180
- @suflanker made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2189
- @sebastjanb made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2204
- @max-power made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2222
- @zfkun made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2211
- @Shinku-Chen made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2236
- @epaper1 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2185
- @mederix made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2243
- @QiuLsG made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2240
- @Vitalymt made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2195
Full Changelog: https://github.com/78/xiaozhi-esp32/compare/v2.4.2...v2.5.0
- v2.4.22026-08-06 · 2026-08-06 01:03 UTC
查看更新说明
Firmware Builder (New)
A new firmware builder is available at: https://xiaozhi.me/console/firmware-builder
What's Changed
- Add support for LCD Wiki ES3C35P board configuration and files by @Eivs in https://github.com/78/xiaozhi-esp32/pull/2112
- fix(taiji-pi-s3): keep round-screen text in safe area by @sinco-z in https://github.com/78/xiaozhi-esp32/pull/2136
- Update ESP-SR/P4 support and fix LCDWiki IDF 6 build by @78 in https://github.com/78/xiaozhi-esp32/pull/2142
- feat: add Waveshare ESP32-S3-Touch-LCD-3.49 V2 by @javen13 in https://github.com/78/xiaozhi-esp32/pull/2143
- feat: add ESP32-S31 Function CoreBoard support by @78 in https://github.com/78/xiaozhi-esp32/pull/2151
- refactor: remove unreliable acoustic provisioning by @78 in https://github.com/78/xiaozhi-esp32/pull/2152
- refactor: organize boards by manufacturer by @78 in https://github.com/78/xiaozhi-esp32/pull/2153
- fix: correct the battery level calculation for esp32-s3-korvo2 by @cyberxnomad in https://github.com/78/xiaozhi-esp32/pull/2156
- Zectrix by @cattei in https://github.com/78/xiaozhi-esp32/pull/2154
- Decouple P4 Function EV Board from BSP by @78 in https://github.com/78/xiaozhi-esp32/pull/2159
- Fix mirrored camera image on AtomS3R-M12 (OV3660) by @78 with @Copilot in https://github.com/78/xiaozhi-esp32/pull/2155
- Fix Zectrix ESP32-S3 build by @78 in https://github.com/78/xiaozhi-esp32/pull/2160
- feat: add ESP32-S31-Korvo-1 Board support by @HonestQiao in https://github.com/78/xiaozhi-esp32/pull/2158
- Add M5Stack CoreP4 board support. by @hlym123 in https://github.com/78/xiaozhi-esp32/pull/2061
New Contributors
- @Eivs made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2112
- @sinco-z made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2136
- @javen13 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2143
- @cyberxnomad made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2156
- @cattei made their first contribution in https://github.com/78/xiaozhi-esp32/pull/2154
Full Changelog: https://github.com/78/xiaozhi-esp32/compare/v2.4.0...v2.4.2
- v2.4.02026-07-19 · 2026-07-19 11:44 UTC
查看更新说明
What's Changed
- chore: temporarily disable touch sensor for ESP-VoCat on IDF v6 by @laride in https://github.com/78/xiaozhi-esp32/pull/2118
- feat(otto): update GIF emoji component to v1.3.0 by @txp666 in https://github.com/78/xiaozhi-esp32/pull/2119
- v2.4.0: Migrate to IDF 6.0 by @78 in https://github.com/78/xiaozhi-esp32/pull/2120
- Complete ESP-IDF 6 migration hardening by @78 in https://github.com/78/xiaozhi-esp32/pull/2123
- Migrate firmware to Noto font and document project architecture by @78 in https://github.com/78/xiaozhi-esp32/pull/2125
- Refine GitHub issue forms by @78 in https://github.com/78/xiaozhi-esp32/pull/2128
Full Changelog: https://github.com/78/xiaozhi-esp32/compare/v2.3.0...v2.4.0
- v2.2.62026-04-19 · 2026-04-19 19:32 UTC
查看更新说明
What's Changed
- Rename EchoEar to ESP-VoCat by @laride in https://github.com/78/xiaozhi-esp32/pull/1827
- Add support for waveshare ESP32-S3-ePaper-3.97 by @DrayxR3X in https://github.com/78/xiaozhi-esp32/pull/1808
- fix: add explicit UTF-8 encoding to Python file operations for Windows build compatibility by @quantumnic in https://github.com/78/xiaozhi-esp32/pull/1845
- Fix race condition in GIF emotion switching causing crash by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1848
- feat: Add Waevshare Product ESP32-P4-WIFI6-Touch-LCD-4.3 Support by @Y1hsiaochunnn in https://github.com/78/xiaozhi-esp32/pull/1858
- Restore README.md and update Discord links to https://discord.gg/C759fGMBcZ in all language versions by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1862
- Fix crash when LAMP_GPIO or BUILTIN_LED_GPIO is GPIO_NUM_NC by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1853
- add waveshare esp32-s3-touch-lcd-1.54 and waveshare esp32-s3-lcd-0.85 by @shunian11 in https://github.com/78/xiaozhi-esp32/pull/1868
- Assets 资源管理支持更多的场景 by @hushi55 in https://github.com/78/xiaozhi-esp32/pull/1865
- fix(eda-robot-pro): Optimize gait algorithm by @JasonYANG170 in https://github.com/78/xiaozhi-esp32/pull/1871
- Update dependencies in idf_component.yml to latest versions: esp-ml30… by @78 in https://github.com/78/xiaozhi-esp32/pull/1867
- fix json parse StoreProhibited crash issue by @hushi55 in https://github.com/78/xiaozhi-esp32/pull/1873
- Fix GIF emoji flickering by merging lock scopes in SetEmotion() by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1880
- Remove unused flag for playing popup sound on listening state in Cont… by @78 in https://github.com/78/xiaozhi-esp32/pull/1881
- Bump version to 2.2.5 by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1882
- feat: adapt to esp_codec_dev>=1.5.5 by @laride in https://github.com/78/xiaozhi-esp32/pull/1878
- fix: Compilation errors caused by default configuration changes of the touch chip by @Y1hsiaochunnn in https://github.com/78/xiaozhi-esp32/pull/1891
- add waveshare esp32-c6-touch-amoled-2.16 by @DrayxR3X in https://github.com/78/xiaozhi-esp32/pull/1892
- fix: Default configuration of GT911 by @Y1hsiaochunnn in https://github.com/78/xiaozhi-esp32/pull/1895
- Add freenove-esp32s3-display-2.8-lcd by @mrrdmr in https://github.com/78/xiaozhi-esp32/pull/1876
- content: add ESP32-P4-WIFI6-Touch-LCD-3.5 by @CQ793 in https://github.com/78/xiaozhi-esp32/pull/1885
- add esp32-s3-cam-xxxx by @ggc121238 in https://github.com/78/xiaozhi-esp32/pull/1821
- Add touch screen support to freenove 2.8 by @mrrdmr in https://github.com/78/xiaozhi-esp32/pull/1901
- Fix crash when adjusting volume via button while Es8311 audio device is disabled by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1917
- ESP-VoCat: BMI270 motion feedback, capacitive slider (v1.2), and single-pad button (v1.0) by @almirus in https://github.com/78/xiaozhi-esp32/pull/1902
- fix: remove submodule by @laride in https://github.com/78/xiaozhi-esp32/pull/1925
- feat:添加正点原子DNESP32S3B3开发板的小智AI例程 by @Almost-LoverY in https://github.com/78/xiaozhi-esp32/pull/1931
- feat(cardputer-adv): add TCA8418 keyboard and WiFi config UI by @tkpdx01 in https://github.com/78/xiaozhi-esp32/pull/1929
- Add NULLLAB-AI-VOX-V3 Board by @kankungyip in https://github.com/78/xiaozhi-esp32/pull/1900
- add waveshare esp32-s3-touch-amoled-1.43c by @DrayxR3X in https://github.com/78/xiaozhi-esp32/pull/1937
- chore: upgrade version to 2.2.6 by @Copilot in https://github.com/78/xiaozhi-esp32/pull/1944
New Contributors
- @quantumnic made their first contribution in https://github.com/78/xiaozhi-esp32/pull/1845
- @shunian11 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/1868
- @hushi55 made their first contribution in https://github.com/78/xiaozhi-esp32/pull/1865
- @mrrdmr made their first contribution in https://github.com/78/xiaozhi-esp32/pull/1876
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
An MCP-based Chatbot
Introduction
👉 Handcraft your AI girlfriend, beginner's guide【bilibili】
As a voice interaction entry, the XiaoZhi AI chatbot leverages the AI capabilities of large models like Qwen / DeepSeek, and achieves multi-terminal control via the MCP protocol.
Recent Updates
- The project now requires ESP-IDF v6.0.1 or later. ESP-IDF
release/v6.1is the recommended SDK branch. ESP-IDF 5.x is no longer supported. The current matrix contains 171 variants; ESP32-S31 builds require IDF 6.1 or later. - MQTT and BluFi cryptographic code has migrated to PSA Crypto. IDF 6 component splits and third-party dependency compatibility have also been addressed.
- Audio pipeline concurrency, MQTT/UDP packet validation, and release-matrix selection have been hardened.
- ESP32-P4 Rev1 and Rev3 are both supported on IDF 6 with ESP-SR 2.4.7.
Features Implemented
- Wi-Fi, wired Ethernet, USB RNDIS, and ML307/EC801E or NT26 Cat.1 4G networking; supported boards can switch between Wi-Fi and 4G
- Offline voice wake-up with ESP-SR, including customizable wake words
- Two communication transports: WebSocket and MQTT + UDP
- Opus audio streaming with conventional streaming ASR + LLM + TTS pipelines and Realtime end-to-end voice models; AEC-capable hardware supports realtime full-duplex interaction
- Speaker recognition, identifies the current speaker 3D Speaker
- OLED / LCD displays with emoji and rich expression support, plus camera vision input on supported boards
- Battery display and power management
- 39 interface languages, with localized voice prompts where available and English fallback
- ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S3, and ESP32-P4 chip platforms
- Wi-Fi provisioning through hotspot or BluFi
- Device-side MCP for device control (Speaker, LED, Servo, GPIO, etc.)
- Cloud-side MCP to extend large model capabilities (smart home control, PC desktop operation, knowledge search, email, etc.)
- Customizable wake words, fonts, emojis, and chat backgrounds with online web-based editing (Custom Assets Generator)
Hardware
Breadboard DIY Practice
See the Feishu document tutorial:
👉 "XiaoZhi AI Chatbot Encyclopedia"
Breadboard demo:

Supports 138 Board Directories and 171 Release Variants (Partial List)
- LiChuang ESP32-S3 Development Board
- Espressif ESP32-S3-BOX-3
- M5Stack CoreS3
- M5Stack AtomS3R + Echo Base
- Magic Button 2.4
- Waveshare ESP32-S3-Touch-AMOLED-1.8
- LILYGO T-Circle-S3
- XiaGe Mini C3
- CuiCan AI Pendant
- WMnologo-Xingzhi-1.54TFT
- SenseCAP Watcher
- ESP-HI Low Cost Robot Dog
Software
Firmware Flashing
For beginners, it is recommended to use the firmware that can be flashed without setting up a development environment.
The firmware connects to the official xiaozhi.me server by default. Personal users can register an account to use the Qwen real-time model for free.
👉 Beginner's Firmware Flashing Guide
Development Environment
- Cursor or VSCode
- Install the ESP-IDF plugin. The minimum SDK is ESP-IDF v6.0.1; ESP-IDF
release/v6.1is recommended. ESP-IDF 5.x is not supported. - Linux is better than Windows for faster compilation and fewer driver issues
- This project uses Google C++ code style, please ensure compliance when submitting code
Use the release/v6.1 branch rather than the v6.1 release tag: an ESP32-C3 Wi-Fi initialization failure with that tag is reported in #2344. After switching SDK revisions, run git submodule update --init --recursive in the ESP-IDF directory, source its export.sh, and run idf.py fullclean in this project before rebuilding.
Developer Documentation
- Custom Board Guide - Learn how to create custom boards for XiaoZhi AI
- MCP Protocol IoT Control Usage - Learn how to control IoT devices via MCP protocol
- MCP Protocol Interaction Flow - Device-side MCP protocol implementation
- MQTT + UDP Hybrid Communication Protocol Document
- A detailed WebSocket communication protocol document
Large Model Configuration
If you already have a XiaoZhi AI chatbot device and have connected to the official server, you can log in to the xiaozhi.me console for configuration.
👉 Backend Operation Video Tutorial (Old Interface)
Related Open Source Projects
For server deployment on personal computers, refer to the following open-source projects:
- xinnan-tech/xiaozhi-esp32-server Python server
- joey-zhou/xiaozhi-esp32-server-java Java server
- AnimeAIChat/xiaozhi-server-go Golang server
- hackers365/xiaozhi-esp32-server-golang Golang server
Other client projects using the XiaoZhi communication protocol:
- huangjunsen0406/py-xiaozhi Python client
- TOM88812/xiaozhi-android-client Android client
- 100askTeam/xiaozhi-linux Linux client by 100ask
- 78/xiaozhi-sf32 Bluetooth chip firmware by Sichuan
- QuecPython/solution-xiaozhiAI QuecPython firmware by Quectel
Custom Assets Tools:
- 78/xiaozhi-assets-generator Custom Assets Generator (Wake words, fonts, emojis, backgrounds)
About the Project
This is an open-source ESP32 project, released under the MIT license, allowing anyone to use it for free, including for commercial purposes.
We hope this project helps everyone understand AI hardware development and apply rapidly evolving large language models to real hardware devices.
If you have any ideas or suggestions, please feel free to raise Issues or join our Discord or QQ group: 1095994019