本教程将指导你如何在**单模块部署**场景下配置固件OTA自动升级功能,实现设备固件的自动更新。
如果你已经使用**全模块部署**,请忽略本教程。
在单模块部署中,xiaozhi-server内置了OTA固件管理功能,可以自动检测设备版本并下发升级固件。系统会根据设备型号和当前版本,自动匹配并推送最新的固件版本。
固件文件需要放在data/bin/目录下。如果该目录不存在,请手动创建:
mkdir -p data/bin
固件文件必须遵循以下命名格式:
{设备型号}_{版本号}.bin
命名规则说明:
- 设备型号:设备的型号名称,例如 lichuang-dev、bread-compact-wifi 等
- 版本号:固件版本号,必须以数字开头,支持数字、字母、点号、下划线和短横线,例如 1.6.6、2.0.0 等
- 文件扩展名必须是 .bin
命名示例: bread-compact-wifi_1.6.6.bin lichuang-dev_2.0.0.bin
将准备好的固件文件(.bin文件)复制到data/bin/目录下:
重要的事情说三遍:升级的bin文件是xiaozhi.bin,不是全量固件文件merged-binary.bin!
重要的事情说三遍:升级的bin文件是xiaozhi.bin,不是全量固件文件merged-binary.bin!
重要的事情说三遍:升级的bin文件是xiaozhi.bin,不是全量固件文件merged-binary.bin!
cp xiaozhi.bin data/bin/设备型号_版本号.bin
例如:bash cp xiaozhi.bin data/bin/bread-compact-wifi_1.6.6.bin
注意:此步骤仅适用于单模块公网部署的场景。
如果你的xiaozhi-server是公网部署(使用公网IP或域名),**必须**配置server.vision_explain参数,因为OTA固件下载地址会使用该配置的域名和端口。
如果你是局域网部署,可以跳过此步骤。
在单模块部署中,系统生成固件下载地址时,会使用vision_explain配置的域名和端口作为基础地址。如果不配置或配置错误,设备将无法访问固件下载地址。
打开data/.config.yaml文件,找到server配置段,设置vision_explain参数:
server:
vision_explain: http://你的域名或IP:端口号/mcp/vision/explain
配置示例:
局域网部署(默认):yaml server: vision_explain: http://192.168.1.100:8003/mcp/vision/explain
公网域名部署:yaml server: vision_explain: http://yourdomain.com:8003/mcp/vision/explain
可能原因和解决方法:
{型号}_{版本号}.bindata/bin/目录可能原因和解决方法:
server.vision_explain配置的域名或IP是否正确查看OTA请求日志,日志中会显示设备上报的版本号:
[ota_handler] - 设备 AA:BB:CC:DD:EE:FF 固件已是最新: 1.6.6
系统有30秒的缓存时间(默认),可以:
- 等待30秒后再让设备发起OTA请求
- 重启xiaozhi-server服务
- 调整firmware_cache_ttl配置为更短的时间