物联网平台提供固件升级与管理服务。首先确保设备端支持OTA服务,然后在控制台上传新的固件,并将固件升级消息推送给设备,设备即可在线升级。本文介绍如何在物联网平台控制台,新增固件、验证固件和向设备批量推送固件。

前提条件

使用固件升级功能前,请确保设备端支持OTA升级服务。

背景信息

固件升级相关限制说明如下:

  • 一个阿里云账号下最多可有500个固件。
  • 固件文件大小不能超过1,000 MB,且仅支持.bin、.tar、.gz、.tar.gz、.zip、.gzip类型的文件。
  • 升级批次限制说明。

    升级批次:物联网平台将已发起的各个升级任务展示为不同的升级批次。您可以在固件详情页的批次管理页签下,查看该固件的升级批次。

    • 使用一个固件,可同时发起多个批次升级。
    • 一个设备同时只能在一个正在进行的升级批次中(设备处于待推送、已推送或升级中状态)。
    • 使用同一个固件,只能对同一个待升级版本发起一个动态升级批次。
    • 使用不同固件,可对同一个待升级版本发起多个动态升级批次。但是,如果一个设备同时满足多个动态升级策略时,仅执行最新发起的升级策略。
  • 仅支持通过MQTT协议接入物联网平台的设备使用固件升级功能。
  • 设备在线时可以立即接收到升级通知;不在线的设备下次上线时,系统会再次推送升级通知。

操作步骤

  1. 登录物联网平台控制台
  2. 在左侧导航栏,选择监控运维 > 固件升级
    说明 为提供更好的服务,物联网平台改版了原固件升级,新增了产品版本统计功能。首次进入改版后的固件升级页面时,您需要手动将之前上传的固件与产品进行关联。固件与产品一一对应,一个固件只能关联一个产品。详情请参见控制台指引。
  3. (可选)若您的设备搭载了AliOS Things芯片,可以开启安全升级功能。

    安全升级是保证固件完整性、机密性的一种方式,建议打开。使用安全升级功能,设备端需配合对固件和固件的签名进行验证。具体请参见AliOS Things技术文档

    1. 固件升级页,单击安全升级
    2. 在对话框中,将待升级产品对应的安全升级按钮设置为
      当安全升级功能为时,可单击对应的复制按钮,复制公钥,用于设备端验证签名。
  4. 固件升级页,单击新增固件
  5. 添加固件对话框中,输入固件信息,上传固件文件。
    参数 描述
    固件类型
    • 整包:您上传的固件文件是完整的固件文件,将推送整包固件给设备进行升级。
    • 差分:您上传的固件文件仅包含新版本固件与之前版本的差异部分,仅推送差异部分至设备进行升级。您需自行生成差分升级包。

      差分升级可有效减少升级对设备资源的占用,和减少下发固件的流量消耗。

      如果设备使用AliOS-Things芯片,差分升级包的生成方法,可参见OTA差分工具使用指南

    固件名称 设置固件名称。仅支持中文、英文字母、数字和下划线(_),且不能以下划线(_)开头。长度限制为4~32字符。
    固件版本号 设置该固件的版本号。仅支持英文字母、数字、点号、连字符(-)和下划线(_)。长度限制为1~64字符。

    固件类型选择为整包时,需设置的参数。

    待升级版本号 选择待升级的固件版本号。下拉选项框中,将展示当前产品下所有设备的固件版本号,选择一个或者多个待升级的固件版本。

    固件类型选择为差分时,需设置的参数。

    升级后版本号 设置升级后的固件版本号。

    固件类型选择为差分时,需设置的参数。

    所属产品 选择固件所属产品。
    固件模块 固件模块用于区分同产品下设备的不同模块的升级。
    • 选择模块:从已有的固件模块中选择。
    • 新增模块:自定义新的模块。仅支持英文字母、数字、点号、连字符(-)和下划线(_)。长度限制为1~64字符。默认填写default。
    签名算法 仅支持MD5和SHA256。
    上传固件 上传固件文件。文件大小不能超过1,000 MB,仅支持.bin、.tar、.gz、.tar.gz、.zip、.gzip类型的文件。
    固件描述 可描述该固件的功能等信息。描述长度不超过100个字符,一个中文计为一个字符。
    固件安全检测服务 检测您上传的固件的安全性。目前仅华东2(上海)支持该服务。

    物联网平台为单个阿里云账号提供一次免费固件安全检测服务。免费次数用完后,请单击购买更多进入购买页面,根据您的业务需要购买IoT固件安全检测次数或包年套餐包。

    选择使用检测服务后,需输入您的邮箱地址,用于接收检测报告。

    固件详情页的固件信息页签下,安全检测栏将展示固件安全检测状态和安全风险数量。

  6. 在固件列表中,单击固件对应的验证固件按钮,然后在一个或多个设备上进行固件测试。
    说明 固件上传至物联网平台后,必须使用少量设备对固件进行验证。确认测试设备升级成功后,才能批量升级。
    参数 描述
    待升级版本号 下拉选项框中,展示当前产品下所有设备的固件版本号,选择一个或者多个待升级的固件版本。

    选择待升级版本号后,使用这些固件版本的设备将展示在待验证设备列表中。

    待验证设备 选择用于此次测试的设备。
    设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。从设备第一次上报升级进度开始计算时间。可选值范围:1分钟~1,440分钟。
  7. 固件验证通过后,单击批量升级按钮,设置参数,批量向设备推送升级通知。
    参数 描述
    待升级版本号 下拉选项框中,展示当前产品下所有设备的当前固件版本号,从中选择待升级的固件版本。

    整包升级时,需设置该参数。

    升级策略
    • 静态升级:仅升级当前满足升级条件的设备。
    • 动态升级:除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。包括但不限于以下情况:
      • 后续新激活的设备满足升级条件。
      • 设备当前上报的固件版本号不满足升级条件,后续上报了满足升级条件的固件版本号。
      说明 一个固件下只能有一个动态升级批次。如果固件下已有一个动态升级批次,将不能创建新的动态升级,需先取消原有动态升级批次。
    升级范围
    • 全部设备:升级该产品下的全部设备。
    • 定向升级:选择为定向升级后,下方出现设备范围选项框。单击选项框,在右侧弹出的对话框中,选择要升级的设备。仅升级被选中的设备。
      说明 定向升级的待升级版本为多选。默认选中您之前已输入的待升级版本号。
    • 区域升级:升级实际地理位置在指定区域的设备。选择为区域升级后,下方出现指定区域的省份和城市选项框。
    • 灰度升级:即局部升级。升级策略选择为静态升级时出现的可选项。

      选择为灰度升级后,下方出现灰度范围输入框,需针对已选择的设备,设置灰度百分比。物联网平台根据设置的灰度百分进行计算,计算结果向下取整。灰度升级的设备至少为1个。

    升级时间 指定设备固件升级的时间。
    • 立即升级:立即进行固件升级。
    • 定时升级:需设定升级时间。定时时间范围是5分钟~7天。
      说明 仅当升级策略为静态升级时,支持定时升级。
    固件推送速率 设置每分钟向多少个设备推送固件下载URL。取值范围:10~1,000。
    升级失败重试间隔 如果升级失败,在什么时候进行重试升级。可选:
    • 不重试
    • 立即重试
    • 10分钟后重试
    • 30分钟后重试
    • 1小时后重试
    • 24小时后重试
    升级重试上限次数 选择升级失败后,最多可重试几次。可选:
    • 1次
    • 2次
    • 5次
    设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。从设备第一次上报升级进度开始计算时间。可选值范围:1分钟~1,440分钟。

执行结果

批量升级提交后,物联网平台根据您的设置向设备推送升级通知。

单击该固件对应的查看按钮,进入批次管理页签,可以:

  • 查看升级批次的状态。
  • 取消批次下的所有升级任务。

查看升级批次的状态

批次管理页,单击升级批次对应的查看按钮。在批次详情页的设备列表页签下,查看该升级批次下不同升级状态的设备列表。

状态 说明
待推送 还未向设备推送固件升级通知。

待推送状态原因有三种:设备离线、定时推送或速率限制,状态分别显示为:

  • 待推送(设备离线)
  • 待推送(定时:2020/XX/XX XX:XX:XX)
  • 待推送
已推送 已向设备推送固件升级通知,设备尚未上报进度。
升级中 设备已收到升级通知,并已上传升级进度。
升级成功 设备上报升级进度100%,并上报了升级后的正确版本号。
升级失败 以下原因可能造成设备升级失败。
  • 若设备未结束上一次升级动作,又推送新的升级,后推送的升级作业则会升级失败。可以等设备完成上一次升级后,再对设备发起升级。
  • 设备在实际升级过程中,出现如下载失败、校验失败、解压失败等错误,可以尝试重新对设备发起升级。

如果设置批量升级时,指定了升级失败后重试,在以下情况下会进行自动重试升级。

  • 设备在待推送已推送状态下,上报原版本和目标版本以外的版本信息导致的升级失败。
  • 设备在升级中状态下,上报了目标版本以外的版本信息导致的升级失败。
  • 设备通过上报升级进度的Topic,主动上报-1-2-3-4导致的升级失败。

自动重试时,设备在云端的升级状态显示不变,即在已推送状态下重试时,状态仍然显示为已推送;在升级中状态下重试时,状态仍然显示为升级中

说明

云端不会触发自动重试逻辑的情况:

  • 因升级超时(失败原因:timeout)而导致的升级失败。
  • 您主动取消升级而导致的升级失败。

取消批次下的所有升级任务

批次管理页,单击升级批次对应的取消按钮。

  • 对于静态升级批次,默认仅取消定时升级任务,可根据需要选择取消所有正在进行中的升级任务(包括待推送、已推送、升级中3种状态的任务)。
  • 对于动态升级批次,默认仅取消动态升级策略,可根据需要选择取消所有正在进行中的升级任务(包括待推送、已推送、升级中3种状态的任务)。