小智 ESP32 固件 v2.5 解读:ESP-IDF 6、全矩阵发布与安全加固

小智 ESP32 固件 v2.5 解读:ESP-IDF 6、全矩阵发布与安全加固

October 23, 2026

上游固件仓库 78/xiaozhi-esp32 在 2026 年 7 月到 10 月之间连续发布了 v2.4.x 和 v2.5.x。这一轮变化里,真正会影响你操作的只有三件事:自行编译必须换到 ESP-IDF 6、预编译固件的发布方式变了、协议实现补了一批校验。本文按版本梳理,每一条都标注了来源提交或文档,方便你自己核对。

本文的版本归属按“提交首次出现在哪个标签”判断,数字取自 v2.5.2 标签与该版本的发布清单。上游继续演进,请以官方发布页为准。

一、先看结论

你是谁需要做什么
只想烧录现成固件到固件下载页选择自己的开发板变体,不需要安装开发环境
自己编译固件安装 ESP-IDF v6.0.1 或更高版本(推荐 release/v6.1 分支),不再支持 ESP-IDF 5.x,见开发环境搭建
维护自定义开发板板级代码要跟随 ESP-IDF 6 调整,见自定义开发板迁移到 ESP-IDF 6
自建服务端或写客户端协议文档已更新,见 WebSocket 与 MQTT + UDP

二、版本脉络

版本主要变化来源
v2.4.0迁移到 ESP-IDF 6.0,随后补充迁移加固3e78cd7(#2120)、0f6c435(#2123)
v2.4.2新增 ESP32-S31 板卡支持3e86f0a(#2151)
v2.5.0移除 ESP-IDF 5.x 支持;新增流式 notify 播放;MCP 增加字符串长度校验与 JSON-RPC 错误码;新增巴西葡萄牙语界面4a5d446、bb9122a(#2191)、acb2fc7(#1847)、d68505f(#2243)
v2.5.2新增手动触发的全矩阵固件发布工作流;WebSocket 与 OTA 安全修复;以太网 IP101 驱动迁移到 ESP-IDF 649b4380(#2302)、d436097、f05adce、d395220

v2.5.2 的 PROJECT_VER 为 2.5.2。

三、构建:迁移到 ESP-IDF 6

  • 一次大迁移:3e78cd7 一个提交改动了 119 个文件,涉及各板卡的驱动头文件、依赖版本与音频编解码器;板级写法的变化见迁移文章。
  • 版本要求:main/idf_component.yml 中写明 idf: '>=6.0.1';上游 README 推荐使用 release/v6.1 分支,不再支持 ESP-IDF 5.x。
  • 一个已知问题:README 提醒避免使用 v6.1 发布标签,该标签在 ESP32-C3 上有 Wi-Fi 初始化失败的报告(issue #2344)。
  • 切换 SDK 的步骤:执行 git submodule update --init --recursive,重新加载 export.sh,再执行 idf.py fullclean,详见开发环境搭建。
  • ESP32-S31:该芯片的变体需要 ESP-IDF 6.1 或以上。

四、发布:全矩阵固件工作流

49b4380 新增了手动触发的 Release Firmware 工作流,规则写在上游 docs/releasing.md:

  • 用 scripts/build.py <board> --name <variant> --zip 构建 ESP-IDF 6.1 支持的全部发布变体;
  • 每个变体产出 v<version>_<variant>.zip,里面是一个 merged-binary.bin;
  • 另附完整变体清单 release-manifest.json 和所有压缩包的 SHA256SUMS。

v2.5.2 的发布清单记录了 154 个板目录、188 个固件变体,由 ESP-IDF 6.1.0 构建,完整名单见支持的开发板。

上游 README 里“支持 138 个板卡目录、171 个固件发布变体”的数字比发布清单旧,本站以发布清单为准。下载后建议用 SHA256SUMS 校验压缩包。

五、功能与协议

  • 流式 notify:bb9122a 增加流式播放,设备可以在对话之外异步播放服务端推送的语音通知,说明见异步语音通知。
  • Glyph Push:服务端可以下发本地字体缺失的字形,说明见Glyph Push 扩展。
  • MCP 校验:设备端 MCP 对字符串参数增加 max_length 校验,并返回 JSON-RPC 错误码,见 MCP 协议。
  • ESP32-P4:每个 P4 构建拆成 rev < 3 与 -p4x 两个变体(b7dc88f)。
  • 界面语言:新增 pt-BR 界面语言(d68505f)。

六、安全加固

下面是上游提交说明中明确写出的加固点:

位置变化来源
MQTT校验 goodbye 消息的 session ide182471(#2023)
WebSocket服务端 hello 的 transport 不是字符串时,旧实现会对空指针调用 strcmp 导致设备崩溃;现在先检查类型d436097(#2247)
OTA拒绝不安全的 eFuse 序列号f05adce
加密MQTT 与 BluFi 加密迁移到 PSA Crypto上游 README“近期更新”

这些修复在 v2.5.2 中都已包含。

七、文档变化

上游 docs/ 现在以英文为主,中文版以 *_zh.md 命名。新增或大改的文档包括 custom-board、websocket、mqtt-udp、mcp-protocol、mcp-usage、blufi、glyph-push、notify 与 releasing。本站对应页面已按 v2.5.2 重写:

对照来源

  • 上游标签 v2.5.2、v2.5.0 的提交历史、README_zh.md、docs/releasing.md 与 main/idf_component.yml;
  • 核对日期:2026-10-23。更正或补充请发邮件到 [email protected]。