OTA 升级实例

最近更新时间:2025-12-29 15:26:13

我的收藏
本文以 MQTTX 工具模拟设备进行 OTA 升级实例,介绍 OTA 升级流程、数据流转使用的 Topic 以及数据格式。

准备工作

下载好 MQTTX 工具 来模拟设备端 OTA。
了解设备端 OTA 升级具体 Topic,可参见 OTA 升级协议

操作步骤

说明:
本文以产品 ID 为 D1S742XVM1,DeviceName 为123456的设备为例,来模拟设备 OTA 升级流程。您在订阅时,需更换成您自己账号所创建的产品 ID 与 DeviceName。

步骤1:设备上报当前版本

设备启动后,通过 MQTT 协议向 Topic: $ota/report/D1S742XVM1/123456 上报当前固件版本,这里需要同时订阅版本上报回复的 Topic:$ota/update/D1S742XVM1/123456。

如图上所示,上报后收到类似的消息回复则表明版本上报成功,若无回复则需确认当前设备是否有订阅 OTA 的Topic。
说明:
设备中的"fw_type"字段对应设备中的"lbs"升级包模块,一个设备可对应多个fw_type类型。

步骤2:验证设备版本号

登录 物联网开发平台控制台,进入目标实例,找到对应设备信息的固件版本,默认只有 mcu 固件版本的模块。下图展示的 Lbs、wifi 固件版本模块为自定义创建的模块,当前示例为上报 Lbs 固件版本。


步骤3:创建升级任务

在物联网开发平台控制台上,添加模块、添加升级包并发起批量升级任务,具体操作请参见 OTA 升级包

这里以静默升级模式来给设备1.1版本升级到1.2版本为例,若升级状态显示“升级失败”则需检查设备是否在线。排查故障后可取消后再重试,平台会再次推送。

步骤4:查看平台下发升级包任务

在 MQTTX 工具中可查到平台下发至设备的升级任务消息。

如上图所示,设备端拿到消息中的 url 地址即可进入 OTA 升级阶段。

步骤5:设备上报升级包升级进度

根据 OTA 升级协议,在 MQTTX 工具中模拟设备上报升级包进度。
上报格式如下图所示,version 和 fw_type 参数需要与当前升级任务一致,否则上报进度无效。

当 state 为“downloading”时升级状态显示为“下载中”,同时状态详情也会显示当前下载百分比。

当 state 为“burning”时升级状态显示为“烧录中”,同时状态详情也会显示当前烧录百分比。

当 state 为“updating”时升级状态显示为“更新中”,表明设备正在升级中。

当 state 为“fail”时升级状态显示为“升级失败”,这边根据状态详情中的错误码 -1,可查到失败原因为下载超时。

当 state 为“done”时升级状态显示为“升级成功”,说明该设备已经完成升级。

说明:
当升级任务显示“升级失败”时,设备根据错误码排除问题后,可在设备详情 > 升级失败中找到对应设备再操作重试。平台会继续给当前设备下发升级包,设备可继续走升级流程。

步骤6:设备升级成功上报最新版本

完成 OTA 升级后,设备端会自动推送最新的版本信息到平台。

回到 物联网开发平台控制台,进入对应实例,找到对应设备信息,验证固件版本是否为最新版本。

相关 API 能力