- 最新动态
- 产品介绍
- 价格说明
- 快速入门
- 开发指南
- 用户指南
- 最佳实践
- API参考
-
SDK参考
- SDK介绍(联通用户专用)
- 应用侧JAVA SDK API参考(联通用户专用)
- 应用侧Python SDK API参考(联通用户专用)
- 设备侧Agent Lite API参考(C)(联通用户专用)
- 设备侧Agent Lite API参考(Android)(联通用户专用)
- 设备侧Agent Lite API参考(Java)(联通用户专用)
-
常见问题
- 热门问题(联通用户专用)
-
方案咨询(联通用户专用)
- 开发中心、设备接入和设备管理的差异是什么?
- IAM子用户或子项目是否可以开通物联网平台服务?
- 物联网平台支持在华为云的哪些区域开通?
- 如何成为华为IoT生态合作伙伴?
- 物联网平台支持哪些接入方式和协议?
- 华为是否提供模组/硬件终端/应用软件等?
- 设备接入模拟器HubSimulator是否能在设备管理使用?
- 设备接入服务如何获取设备数据?
- 物联网平台的应用和设备可以无限创建吗?
- 物联网平台支持批量注册设备吗?
- 物联网平台对应用和设备有消息流控吗?
- 开发中心单个应用允许接入设备数是多少?
- 数据在物联网平台的保存时间是多久?
- 物联网平台支持的DTLS加密算法有哪些?
- 物联网平台支持二进制大小端模式切换吗?
- 什么是NB-IoT?
- 物联网平台支持的硬件架构和使用的相关组件有哪些?
-
设备集成(联通用户专用)
- 如何获取设备和应用对接地址?
- 如何下载LiteOS IDE/IoT Studio?
- 物联网平台允许一个IMEI号注册多个设备吗?
- 如何设置设备名称?
- IoT设备如何激活?
- 物联网平台如何切换设备的在线/离线状态?
- 通过网关接入的子设备,平台如何识别是哪一个设备?
- deviceId、nodeId和IMEI有什么对应关系?
- Agent Lite和Agent Tiny有什么区别?
- 使用Agent Lite接入的网关设备gwbindinfo.json文件丢失如何处理?
- 运行Agent Lite Java Demo报UnsatisfiedLinkError错误怎么处理?
- 设备如何发送文件至物联网平台?
- 开发中心模拟设备如何上报负数?
- 开发中心支持哪几种省电模式?
- 开发中心支持数据转发吗?
- 开发中心没有设备分组和批量添加设备,怎么办?
- 如何检测NB网络信号?
- NB模组附着网络失败如何处理?
- NB模组绑定设备失败怎么办?
- NB模组无法正常上报数据怎么办?
- NB设备上报数据为字符串时如何转换为二进制编码?
- NB设备接入时,出现513错误?
- 为什么执行AT+CUFN=1会返回error?
- 平台向NB-IoT设备缓存下发命令,为什么设备一直收到同一条控制命令?
- AT+CGDCONT=1, CTNB是什么?
- NB-IoT设备如何选择PSM、DRX、eDRX模式?
- 应用集成(联通用户专用)
-
订阅推送(联通用户专用)
- 调用订阅接口时,回调地址如何获取?
- 应用服务器如何收到命令状态变化的通知?
- 如何获取证书?
- 回调地址可以使用域名吗?
- 订阅后消息推送失败,例如提示503如何处理?
- 应用服务器收到数据,但是平台显示推送失败?
- 应用服务器只有内网地址,能否订阅成功?
- 调用订阅接口时,提示回调地址不合法?
- 物联网平台只支持HTTPS的回调地址吗?
- 回调地址可以修改吗?
- 推送证书失效怎么处理?
- 调用删除单个订阅接口时,subscriptionId如何获取?
- 设备数据变化通知和批量设备数据变化通知的区别是什么?
- 应用服务器如何获取物联网平台推送消息时使用的地址?
- 物联网平台订阅推送是否具有重推机制?
- 为什么设备上报一条数据后应用服务器会收到多条推送?
- 在同一个应用下,平台可以将不同设备上报的数据,推送到两个服务器吗?
- NB-IoT设备已订阅消息确认和命令响应通知,为何应用服务器收不到推送消息?
- 数据上报(联通用户专用)
- 命令下发(联通用户专用)
- 产品模型/Profile(联通用户专用)
- 编解码插件(联通用户专用)
- 软/固件升级(联通用户专用)
- 文档下载
- 通用参考
链接复制成功!
固件升级(联通用户专用)
概述
固件(Firmware)一般是指设备硬件的底层“驱动程序”,承担着一个系统最基础最底层工作的软件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System)。
固件升级又称为FOTA(Firmware Over The Air),是指用户可以通过OTA的方式对支持LWM2M协议和MQTT协议的设备进行固件升级。物联网平台支持LWM2M协议和MQTT协议的产品模型的固件升级。
LWM2M协议固件升级流程
LWM2M协议FOTA升级流程的详细说明:
1~2. 用户在设备管理服务的控制台上传固件包,并在控制台或者应用服务器上创建固件升级任务。
3. NB-IoT设备上报数据,平台感知设备上线,触发升级协商流程。
- 如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理。
- 如果返回的固件版本信息与升级的目标版本信息不同,则继续进行下一步的升级处理。
- 查询成功:则根据如下方式计算可同时升级的并发数计算,并按照步骤9进行处理。
- 如下图所示,如果设备的RSRP强度和SINR强度均落在等级“0”中,则同时可以对该小区的50个相同信号覆盖区间的设备进行同时升级。
- 如果设备的RSRP强度和SINR强度分别落在等级“0”和“1”中,则以信号较弱的等级“1”为准,则只能同时对该小区的10个设备进行升级。
-
如果设备的RSRP强度和SINR强度分别落在等级“1”和“2”中,则以信号较弱的等级“2”为准,则只能同时对该小区的1个设备进行升级。
-
如果设备的RSRP强度和SINR强度不在该3个等级范围内,且均可以查询到,则按照信号最弱覆盖等级“2”处理,则只能同时对1个设备进行升级。
说明:
如果用户在固件升级中发现同时进行升级的设备数较少,则可以联系当地运营商检查和优化设备所在小区的无线覆盖情况。
- 查询失败:则按照流程步骤8进行处理。
10~11. 物联网平台向设备下发下载固件包的URL地址,通知设备下载固件包。终端设备根据该URL地址下载固件包,固件包的下载支持分片下载,下载完成后,设备知会物联网平台固件包已下载完毕。
12~13. 物联网平台向设备下发升级的命令,终端设备进行升级操作,升级完成后终端设备向物联网平台反馈升级结束。
14~16. 物联网平台下发命令查询固件升级的结果,获取升级结果后,向终端设备取消订阅升级状态通知,并向控制台应用服务器通知升级的结果。
MQTT协议固件升级流程
MQTT协议FOTA升级流程的详细说明:
1~2. 用户在设备管理服务的控制台上传软件包,并在控制台或者应用服务器上创建软件升级任务。
3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级topic,平台感知设备上线,触发升级协商流程。
4~5. 平台向设备下发查询设备固件版本号的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级 。如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。如果返回的固件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。
6~7. 物联网平台下发下载包URL、token及包的相关信息,用户根据下载包URL和token通过HTTP协议来下载软件包,24小时后token无效。
8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。
9. 物联网平台向控制台/应用服务器通知升级的结果。
检查固件升级能力
对终端设备进行固件升级,需要检查设备对应的产品模型中,是否支持设备的固件升级能力。您可以通过如下方式检查和设置设备固件升级的能力。
该操作只是修改了产品模型中定义的固件升级能力,该产品模型对应的终端设备也需要支持固件升级的能力。否则,当升级任务中选择了不支持固件升级的终端设备,会导致固件升级失败。
- 登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角
,切换到设备管理页面。
- 在“产品模型”界面点击“详情”,进入“产品详情”界面。
- 在“维护能力配置”界面中,检查固件升级的能力。协议类型为LWM2M的产品模型,将固件升级设置为“支持”,协议为LWM2M。协议类型为MQTT的产品模型,将固件升级设置为“支持”,不校验固件升级协议类型。
上传固件包
设备管理服务的控制台,提供固件包的管理能力,您可以将需要升级的固件包统一上传到“固件包管理”界面上进行管理。在上传固件包到控制台前,需要对固件包进行签名。
固件升级包的格式为.bin格式,不支持其它格式。上传的固件包需要使用压缩工具打包为.zip包。
固件包签名:
- 登录物联网平台控制台,点击右上角“进入设备管理服务”。在“工具”页面,下载“离线签名工具”。
- 解压“signtool.zip”,双击“signtool.exe”,运行离线签名工具。
- 在“生成数字签名公私钥对”区域,选择“签名算法”,设置“私钥加密口令”,点击“生成公私密钥”,在弹出的窗口中选择需要保存的目录,点击“确定”,保存生成的公钥文件和私钥文件。
- 在“软件包数字签名”区域导入私钥文件并输入私钥加密口令(私钥加密口令为在步骤3中设置的“私钥加密口令”)后,点击“确定”。并选择需要签名的固件包(固件包格式只能为.zip格式),点击“进行数字签名”。
数字签名成功后,将会在原软件包所在目录下生成名称为 “xxx_signed.zip”的带签名软件包。
- 验证固件包数字签名是否成功,在“软件包签名验证”区域导入公钥文件后,并选择步骤4中签名的固件包,点击“进行软件包验签”。
上传固件包:
- 登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角
,在“软件库 > 公钥管理”中,上传固件包签名生成的“公钥文件(public.pem)”,上传公钥时,需选择厂商名称,该名称为上传的产品模型中定义的厂商名称。
- 在“软件库 > 固件包管理”界面中,选择“添加固件包”,将已经签名的固件包进行上传。
在上传固件包时,需要填写如下信息:
- 固件名称:选择已经签名的固件包。
- 版本:固件包的版本,不能带中文字符,建议与固件包的名称保持一致。
- 设备类型:选择对应设备的产品模型。
- 厂商名称:需要与产品模型中定义的厂商名称保持一致。
- 型号:需要与产品模型中定义的型号保持一致。
- 协议:需要与产品模型中定义的协议保持一致。LWM2M协议的产品模型,协议填写LWM2M;MQTT协议的产品模型,协议填写MQTT。均需区分大小写。
- 支持设备源版本:手动输入,如需输入多个,可以在输入完一个版本后,点击“回车”按键,再输入下一个。
单个设备固件升级
用户对单个设备进行固件升级有两种方式:
- 应用服务器通过调用的“创建固件升级任务”API接口,创建单个设备的升级任务,详情请参考创建固件升级任务。
- 通过控制台,创建单个设备的固件升级任务。
下面将重点介绍通过控制台创建单个设备的固件升级任务。
- 登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角
,进入“设备 > 所有设备”页面。
- 在设备列表中选择需要升级的设备,进入“设备详情 > 软件”页面,点击当前固件版本右侧的“升级”按钮。
- 在弹出的界面中,选择需要升级的固件版本对应的固件包,单击“确定”,提示创建固件升级任务成功。通过该方式进行固件升级,如果升级失败,是不会进行重试的。
- 在“设备详情 > 操作记录中”,可以查看固件升级任务的状态。操作类型需要选择“固件升级”。
固件升级任务的状态说明:
- 等待:等待任务的执行,创建完升级任务后,在10秒内为该状态,10秒后变更为“运行中”。
- 运行中:表示正在进行升级操作,包括等待设备上线、设备升级操作期间均为该状态。
- 停止:手动停止正在“运行中”的升级任务。
- 成功:终端设备反馈升级任务执行成功。
- 失败:设备升级失败,如下载升级包超时、升级响应超时、设备反馈升级结果失败等原因。
批量设备固件升级
用户对批量设备进行固件升级有两种方式:
- 应用服务器通过调用的“创建固件升级任务”API接口,创建批量设备的升级任务,详情请参考创建固件升级任务。
- 通过控制台,创建批量设备的固件升级任务。
下面将重点介绍通过控制台创建单个设备的固件升级任务。
- 登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角
,进入“批量任务 > 批量软固件升级”页面。
- 在“固件升级”页面,点击“创建”按钮,创建批量固件升级任务。
- 设置“任务信息”,填写任务名称和重试策略。
重试策略可以选择是否重试,如果选择了“自定义”,可以设置重试的次数。默认的重试时间为120秒,即设备升级失败后,隔120秒后会进行升级重试。
- 选择需要升级的固件包。
- 选择需要升级的设备群组,然后点击“提交”。
设备群组可以参考群组与标签(联通用户专用)创建需要升级的设备群组,并绑定对应的设备。
- 创建完批量升级任务后,可以在任务列表中查看批量任务的执行结果。点击任务名称,可以在“执行详情”界面查看每个设备的升级结果。
说明:
如果升级任务正在执行中,是不允许删除任务的,如需删除,请先在任务列表中,手动停止任务后,再删除升级任务。