华为云IoT 物联网平台 :固件(Firmware)一般是指设备硬件的底层“驱动程序”,承担着一个系统最基础最底层工作的软件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System)。
固件升级又称为FOTA(Firmware Over The Air),是指用户可以通过OTA的方式对支持LwM2M协议和MQTT协议的设备进行固件升级。
LwM2M协议设备固件升级流程
LwM2M协议FOTA升级流程的详细说明:
1~2. 用户在 设备接入服务 的控制台上传固件包,并在控制台或者应用服务器上创建固件升级任务。
3. LwM2M设备上报数据,平台感知设备上线,触发升级协商流程。(超时时间为24小时)
- 如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理。
- 如果返回的固件版本信息与升级的目标版本信息不同,则继续进行下一步的升级处理。
- 查询成功:则根据如下方式计算可同时升级的并发数计算,并按照步骤9进行处理。
- 如下图所示,如果设备的RSRP强度和SINR强度均落在等级“0”中,则同时可以对该小区的50个相同信号覆盖区间的设备进行同时升级。
- 如果设备的RSRP强度和SINR强度分别落在等级“0”和“1”中,则以信号较弱的等级“1”为准,则只能同时对该小区的10个设备进行升级。
-
如果设备的RSRP强度和SINR强度分别落在等级“1”和“2”中,则以信号较弱的等级“2”为准,则只能同时对该小区的1个设备进行升级。
-
如果设备的RSRP强度和SINR强度不在该3个等级范围内,且均可以查询到,则按照信号最弱覆盖等级“2”处理,则只能同时对1个设备进行升级。
说明:如果用户在固件升级中发现同时进行升级的设备数较少,则可以联系当地运营商检查和优化设备所在小区的无线覆盖情况。
- 查询失败:则按照流程步骤8进行处理。
- 如果查询成功:物联网平台支持同时对该小区的10个相同情况的设备进行固件升级。
- 如果查询失败:则升级失败。
9. 物联网平台向设备订阅固件升级的状态。
10~11. 物联网平台向设备下发下载固件包的URL地址,通知设备下载固件包。终端设备根据该URL地址下载固件包,固件包的下载支持分片下载,下载完成后,设备知会物联网平台固件包已下载完毕。(第11步超时时间为60分钟)
12~13. 物联网平台向设备下发升级的命令,终端设备进行升级操作,升级完成后终端设备向物联网平台反馈升级结束。(等待设备上报升级结果和升级状态,超时时间为30分钟)
14~16. 物联网平台下发命令查询固件升级的结果,获取升级结果后,向终端设备取消订阅升级状态通知,并向控制台应用服务器通知升级的结果。
MQTT协议固件升级流程
MQTT协议FOTA升级流程的详细说明:
1~2. 用户在设备接入服务的控制台上传固件包,并在控制台或者应用服务器上创建固件升级任务。
3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级Topic,平台感知设备上线,触发升级协商流程。(等待设备上线时间25小时以内)
- 如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。
- 如果返回的固件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。
6~7. 物联网平台下发设备侧升级包下载指导、token及包的相关信息,用户根据下载包URL和token通过HTTPS协议来下载软件包,24小时后token无效。(下载包和升级状态上报超时时间为24小时)
8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。(设备升级完成后返回的版本号和设置的版本一致为成功)
9. 物联网平台向控制台/应用服务器通知升级的结果。
上传固件包
设备接入服务的控制台,提供固件包的管理能力,您可以将需要升级的固件包统一上传到“固件列表”界面上进行管理。
- 访问设备接入服务,单击“管理控制台 ”进入设备接入控制台。
- 选择 。
- 选择“固件列表”页签,单击“上传固件”。
- 在弹出的页面中,按照如下信息填写参数后,单击“确认”上传固件包。
在上传固件包时,需要填写如下信息:
参数名称 |
说明 |
---|---|
固件文件 |
添加固件包,固件包名不能带中文字符。 |
固件版本 |
固件包的版本。(设备升级完成后需要上报升级版本号,平台检查设备上报的版本号是否与此参数一致,一致为升级成功。) |
选择产品 |
选择对应设备的产品模型。 |
支持设备源版本 |
手动输入,如需输入多个,可以在输入完一个版本后,单击“回车”按键,再输入下一个。 |
后续平台将下线上传签名固件包功能,为了保障您能够正常使用固件升级功能,请直接上传需要下发给设备的文件。
批量设备固件升级
用户对批量设备进行固件升级有两种方式:
- 应用服务器通过调用的“创建固件升级任务”API接口,创建批量设备的升级任务,详情请参考创建批量任务。
- 通过控制台,创建批量设备的固件升级任务。
下面将重点介绍通过控制台创建批量设备的固件升级任务。
1.访问设备接入服务,单击“管理控制台 ”进入设备接入控制台。
2. 在左侧导航栏选择"设备 > 软固件升级",单击“升级任务”。
3. 在“固件升级”页签,单击“新建任务”按钮,进入新建固件任务页面。
4. 设置“任务信息”,填写任务名称、执行时机、启用重试。
启用重试后,可以设置重启次数和重启间隔。重启次数建议设置为2次,重启间隔设置为5分钟(最大重启次数为5次,最大重启间隔为1440分钟),即设备升级失败后,隔5分钟后会进行升级重试。
5. 选择需要升级的固件包。
6. 选择需要升级的设备群组,然后单击“提交”。
设备群组可以参考群组与标签创建需要升级的设备群组,并绑定对应的设备。
7. 创建完批量升级任务后,可以在固件升级任务列表中查看批量任务的执行结果。单击对应任务"查看"按钮,可以在“执行详情”界面查看每个设备的升级结果。
固件升级失败原因
物联网平台上报的失败原因:
失败原因 |
原因解释 |
处理建议 |
---|---|---|
Device Abnormal is not online |
设备异常未在线 |
请检查设备侧。 |
Task Conflict |
任务冲突 |
请检查当前设备是否有软件升级、固件升级、日志收集或设备重启的任务正在进行。 |
Waiting for the device online timeout |
等待设备上线超时 |
请检查设备侧。 |
Wait for the device to report upgrade result timeout |
等待设备上报升级结果超时 |
请检查设备侧。 |
Waiting for report device firmware version timeout |
等待上报设备固件版本超时 |
请检查设备侧。 |
Waiting for report cellId timeout |
等待上报cellId超时 |
请检查设备侧。 |
Updating timeout and query device version for check timeout |
等待升级结果超时,且等待设备版本信息超时 |
请检查设备侧。 |
Waiting for device downloaded package timeout |
等待设备完成下载固件包超时 |
请检查设备侧。 |
Waiting for device start to update timeout |
等待设备启动更新超时 |
请检查设备侧。 |
Waiting for device start download package timeout |
等到设备开始下载固件包超时 |
请检查设备侧。 |
设备上报的失败原因:
失败原因 |
原因解释 |
处理建议 |
---|---|---|
Not enough storage for the new firmware package |
下载的固件包存储空间不足 |
请检查设备存储。 |
Out of memory during downloading process |
下载过程中内存不足 |
请检查设备内存。 |
Connection lost during downloading process |
下载过程中连接断开 |
请检查设备连接状态。 |
Integrity check failure for new downloaded package |
下载的固件包完整性校验失败 |
请检查设备下载的固件包是否完整。 |
Unsupported package type |
固件包类型不支持 |
请检查设备状态和厂商提供的固件包是否正确。 |
Invalid URI |
URI不可用 |
检查设备侧的固件包下载地址是否正确。 |
Firmware update failed |
固件更新失败 |
请检查设备侧。 |