OTA 升级实例

最近更新时间:2025-10-11 15:44:42

我的收藏

操作场景

OTA 升级与管理服务,本文以 MQTTX 工具来模拟设备进行 OTA 升级实例,介绍 OTA 升级流程、数据流转使用的 Topic 和数据格式。

准备工作

1. 下载好 MQTTX 工具 来模拟设备端 OTA。
2. 了解设备端 OTA 升级具体 Topic 可参见 OTA 升级协议
3. 本文以产品 ID 为 D1S742XVM1,DeviceName为123456 的设备为例来模拟设备 OTA 升级流程。
4. 订阅时,需更换成您自己账号所创建的产品 ID 与 DeviceName。

操作步骤

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

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

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

步骤2:验证设备版本号

登录 物联网开发平台控制台,进入公共实例,找到对应设备信息的固件版本,默认只有 mcu 固件版本的模块。


步骤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 能力