源码编译教程
本教程介绍如何在 VS Code 中使用 ESP-IDF 编译 Otto Robot 固件 ,并通过 USB 将固件烧录到 ESP32-S3 主板。
如果你只想使用机器人、不需要修改源码,可以直接前往程序烧录页面在线烧录固件,无需安装开发环境。
准备工作
开始前请准备:
- VS Code 或 Cursor,并安装 Espressif 官方 ESP-IDF 扩展;
- ESP-IDF v6.0.2。项目主线建议使用 v6.0 或以上稳定版本,v6.0.2 为首选版本;
- Git 和一根可传输数据的 USB Type-C 线;
- 已安装电池的 Otto Robot 主板。
下载源码并用编辑器打开项目目录:
git clone https://github.com/txp666/xiaozhi-esp32.git
cd xiaozhi-esp32
code .
首次使用 ESP-IDF 扩展时,先按照扩展提示完成工具链安装,并确认编辑器底部显示正确的 ESP-IDF 版本。
1. 选择 ESP32-S3 芯片
点击编辑器底部状态栏中的目标芯片名称,在弹出的列表中选择 esp32s3。

第一次配置项目时,ESP-IDF 会下载依赖并生成构建文件,耗时可能较长。等待配置完成后,点击底部的齿轮按钮打开 SDK 配置编辑器(menuconfig)。

2. 选择 Otto Robot 开发板
在 SDK 配置编辑器中展开 Xiaozhi Assistant,找到 Target Board。

打开开发板列表并选择 Otto Robot。如果列表中没有该选项,请先确认第 1 步选择的是 esp32s3。

3. 启用 WebSocket 服务
在 SDK 配置编辑器顶部搜索 websocket,找到 Component config → HTTP Server → WebSocket server support 并勾选。某些源码版本会自动启用此选项;如果已经勾选,无需重复修改。

点击右上角的 保存,等待配置写入完成。

4. 编译固件
点击编辑器底部的 生成(Build) 按钮开始编译。首次编译需要下载组件,时间会比后续编译更长;终端出现构建成功提示后再继续烧录。

编译产物位于项目的 build/ 目录。VS Code 的 ESP-IDF 扩展会在烧录时自动写入引导程序、分区表、主程序和资源文件,不要只单独烧录 xiaozhi.bin。如需生成一个可分发的合并固件,请参考程序烧录页面的合并固件命令。
5. 连接设备并选择串口
确认电池已经安装,再使用 USB Type-C 数据线连接 Otto Robot 与电脑,然后从 ESP-IDF 扩展中选择新出现的串口。
- 第一次烧录或无法自动进入下载模式时,请按住主板上的 BOOT 按钮再打开电源,然后重新尝试烧录。
- 普通版与摄像头版使用同一个固件。摄像头版本应在开机前连接好摄像头,系统会在启动时检测摄像头是否存在。

6. 烧录并查看日志
点击编辑器底部的 烧录(Flash) 按钮。

出现烧录方式选择时,选择 UART。等待终端显示烧录完成;需要排查启动问题时,可再打开 ESP-IDF 串口监视器查看日志。

常见问题
找不到 Otto Robot
确认目标芯片是 esp32s3,然后关闭并重新打开 SDK 配置编辑器。
编译一直停在下载组件
首次构建需要联网下载依赖。检查网络后重试,并确认 ESP-IDF 扩展使用的是 v6.0 或以上的稳定版本。
找不到串口
换用确认支持数据传输的 USB 线和 USB 接口;首次烧录时按住 BOOT 再打开电源。Windows 用户还需要确认串口驱动已正确安装。
烧录后无法启动
先断电,检查摄像头和其他排线是否插好,再重新上电并查看串口日志。若只是想恢复官方固件,可返回程序烧录页面重新烧录最新版本。