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

前提条件

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

背景信息

OTA升级相关限制说明如下:

  • 一个阿里云账号下最多可有500个升级包。
  • 升级包文件大小不能超过1,000 MB,且仅支持BIN、TAR、GZ、TAR.GZ、ZIP、GZIP格式的文件。
  • 升级批次限制说明。

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

    • 使用同一个升级包,对不同待升级版本,可分别发起多个批次升级,也可发起一个批次升级。
    • 使用同一个升级包,对同一个待升级版本只能发起一个动态升级批次。
    • 使用不同升级包,可对同一个待升级版本发起多个动态升级批次。
    • 一个设备同一时间只能在一个正在进行的升级批次中(设备处于待推送、已推送或升级中状态)。
  • 仅支持通过MQTT协议接入物联网平台的设备使用OTA升级功能。
  • 设备在线时可以立即接收到升级通知;不在线的设备下次上线时,系统会再次推送升级通知。

操作步骤

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

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

    1. OTA升级页,单击安全升级
    2. 在对话框中,将待升级产品对应的安全升级按钮设置为
      当安全升级功能为时,可单击对应的复制按钮,复制公钥,用于设备端验证签名。
  5. (可选)自定义OTA模块。
    OTA模块是同产品下设备的不同可升级模块,例如固件、软件、驱动等。默认(default)模块表示整个设备的固件,您也可以自定义其他OTA模块。

    模块列表页签单击新增模块,配置模块信息,单击确认,完成添加模块。

    参数 说明
    所属产品 选择模块所属产品。
    模块名称 设置模块名称。模块名称需要在产品下唯一,创建后不可修改。支持英文字母、数字、英文句号(.)、短划线(-)和下划线(_),长度限制为1~64个字符。
    模块别名 设置模块别名。支持英文字母、数字、英文句号(.)、短划线(-)和下划线(_),长度限制为4~64个字符。
    模块描述 可描述该模块的用途等信息。描述长度不超过100个字符,一个中文计为一个字符。
  6. OTA升级页,单击升级包列表页签,单击添加升级包
  7. 配置升级包信息,上传升级包文件,单击确认
    参数 描述
    升级包类型
    • 整包:您上传的升级包文件是完整的升级包文件,将推送整包升级包给设备进行升级。
    • 差分:您上传的升级包文件仅包含新版本升级包与之前版本的差异部分,仅推送差异部分至设备,设备进行差分还原,还原为完整升级包。差分升级可有效减少升级对设备资源的占用,和减少下发升级包的流量消耗。

      以下情况,我们提供差分包生成方法和差分还原算法。您也可以自行生成差分包并完成差分还原算法开发。

    升级包名称 设置升级包名称,需在阿里云账号下唯一,创建后不可修改。支持中文、英文字母、日文、数字、短划线(-)、下划线(_)和圆括号(()),必须以中文、英文、日文或数字开头,长度限制为1~40个字符。
    所属产品 选择升级包所属产品。
    升级包模块 选择升级包所属OTA模块。

    您可以单击添加模块,在弹出的对话框中新增一个模块。

    升级包版本号 设置该升级包的版本号。版本号支持英文字母、数字、英文句号(.)、短划线(-)和下划线(_),长度限制为1~64个字符。

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

    待升级版本号 输入或选择待升级设备的OTA模块版本号。下拉列表中,将展示当前产品下所有设备的OTA模块版本号,选择一个待升级的版本。

    升级包类型选择为差分时,需设置的参数。

    升级后版本号 设置该升级包的版本号。

    升级包类型选择为差分时,需设置的参数。

    签名算法 支持MD5和SHA256算法。

    当设备使用阿里云提供的Android SDK,且升级包类型选择为差分时,请选择MD5算法。

    上传升级包 上传升级包文件。文件大小不能超过1,000 MB,仅支持BIN、TAR、GZ、TAR.GZ、ZIP、GZIP格式的文件。
    说明 上传文件的后缀名需使用小写字母格式,例如test.zip
    升级包是否需要平台验证 选择是否在批量升级前,使用少量测试设备对升级包进行验证。
    • :必须进行验证,验证通过后,才能进行批量升级。具体操作,请参见下一步骤。
    • :无需验证,直接进行批量升级。
    升级包描述 可描述该升级包的功能等信息。描述长度不超过100个字符,一个中文计为一个字符。
    升级包安全检测服务 检测您上传的升级包的安全性。目前仅华东2(上海)的公共实例支持该服务。

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

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

  8. 升级包是否需要平台验证选择了,则在升级包列表中,单击升级包对应的验证,配置参数后,单击确认,在一个或多个设备上进行升级包验证。
    说明 测试设备全部升级成功后,升级包状态显示为已验证,才能进行下一步批量升级。
    参数 描述
    待升级版本号
    • 整包升级时,该参数为非必选配置。

      下拉列表中,展示当前产品下所有设备的除升级目标版本号外的其他版本号,您可以选择一个或者多个待升级的版本。选择后,相应的设备将作为待验证设备列表中的备选设备。

      如不选择,表示对备选待验证设备的OTA模块当前版本不做限制。

    • 差分升级时,该参数默认为已在添加升级包时配置的待升级版本号。
    待验证设备 选择用于此次测试的设备。

    在华东2(上海)、华北2(北京)、华南1(深圳)地域您购买的实例中,您可以通过高级搜索搜索设备。

    设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。可选值范围:1分钟~1,440分钟。
    说明 从设备第一次上报升级进度开始计算升级时间。
  9. 在升级包列表中,单击升级包对应的批量升级,完成升级范围配置和升级策略配置,单击完成,批量向设备推送升级通知。
    配置 参数 描述
    升级范围配置 待升级版本号
    • 整包静态升级时,该参数为非必选配置;整包动态升级时,为必选配置。当升级范围为定向升级时,不配置该参数。

      下拉列表中,展示当前产品下所有设备的除升级目标版本号外的其他版本号,选择一个或者多个待升级的版本。

      如不选择,表示对待升级设备的OTA模块当前版本不做限制。

    • 差分升级时,该参数默认为添加升级包时配置的待升级版本号。
    升级方式
    • 静态升级:仅升级当前满足升级条件的设备。
    • 动态升级:除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。包括但不限于以下情况:
      • 后续新激活的设备满足升级条件。
      • 设备当前上报的OTA模块版本号不满足升级条件,后续上报了满足升级条件的OTA模块版本号。
      说明 一个升级包下只能有一个动态升级批次。如果升级包下已有一个动态升级批次,将不能创建新的动态升级,需先取消原有动态升级批次。
    升级范围
    • 全部设备:升级该产品下满足升级条件的全部设备。
    • 定向升级:仅升级被选中的设备。选择为定向升级后,提供两种设备选择方式:
      • 手动勾选:从设备范围下拉列表选择要升级的设备。

        在华东2(上海)、华北2(北京)、华南1(深圳)地域您购买的实例中,您可以通过高级搜索搜索设备。

      • 文件上传:下载模板,填写、上传CSV格式的设备列表文件。单次最多包含10,000条记录。

        若设备列表文件中有不合法的设备名称,将出现错误提示。请单击下载不合法列表,查看不合法的设备名称,修改设备列表文件,再重新上传。

    • 区域升级:升级实际地理位置在指定区域的设备。选择为区域升级后,下方出现指定区域的省份和城市选项框。
    • 灰度升级:即局部升级。升级方式选择为静态升级时出现的可选项。

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

    升级策略配置 升级时间 指定设备OTA升级的时间。
    • 立即升级:立即进行OTA升级。
    • 定时升级:设置升级开始时间、升级结束时间。升级开始时间距当前时间最少5分钟,最多7天。升级结束时间距开始时间最少1小时,最多为30天,可不设置,不设置表示不会强制结束。
      说明 仅当升级方式为静态升级时,支持定时升级。
    升级包推送速率 设置每分钟向多少个设备推送升级包下载URL。取值范围:10~1,000。
    升级失败重试间隔 如果升级失败,在什么时候进行重试升级。可选:
    • 不重试
    • 立即重试
    • 10分钟后重试
    • 30分钟后重试
    • 1小时后重试
    • 24小时后重试
    升级重试上限次数 选择升级失败后,最多可重试几次。可选:
    • 1次
    • 2次
    • 5次
    设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。可选值范围:1分钟~1,440分钟。
    说明 从设备第一次上报升级进度开始计算升级时间。
    是否覆盖设备之前的升级任务 由于一个设备同一时间只能在一个正在进行的升级批次中(设备处于待推送、已推送或升级中状态),需要选择是否覆盖设备之前的升级任务。
    • 选择是,则设备只执行新的升级任务,之前的升级任务会被取消。
    • 选择否,若设备已有升级任务,则只执行已有任务。
    说明 不覆盖升级中的任务,此时继续执行升级中的任务,不执行新的任务。
    是否仅对新上报版本的设备生效 当升级方式选择为动态升级时的参数。

    选择是否仅对后续新上报版本号的设备生效,待升级版本号以新上报的新版本号为准。

    • 选择是,则仅升级后续新上报版本号的设备。
    • 选择否,则升级当前满足升级条件的设备,并持续检查后续新上报版本号的设备是否满足升级条件。
    批次标签 单击新增标签,在弹出的对话框中,输入标签的标签Key标签Value,然后单击确认,为批次添加标签。批次创建后标签不可修改。

    批次标签将在向设备推送升级通知时下发给设备。

执行结果

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

单击该升级包对应的查看按钮,在批次管理页签,可以:

  • 查看升级批次的状态。

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

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

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

    • 待推送(设备离线)
    • 待推送(定时:2020/XX/XX XX:XX:XX)
    • 待推送
    已推送 已向设备推送OTA升级通知,设备尚未上报进度。
    升级中 设备已收到升级通知,并已上传升级进度。
    升级成功 设备上报升级成功后的正确版本号。
    说明 设备升级成功后,建议第一时间上报升级成功后的正确版本号,否则,可能会因为超时,导致升级失败。
    升级失败 以下原因可能造成设备升级失败。
    • 若设备未结束上一次升级任务,又发起新的批量升级,且选择不覆盖之前的升级任务,则后发起的升级任务会升级失败。

      您可以:

      • 等设备完成上一次升级后,再对设备发起新的升级。
      • 在发起升级时,选择覆盖设备之前的升级任务。
        说明 设备处于升级中状态的升级任务不会被覆盖。
    • 设备在实际升级过程中,出现如下载失败、校验失败、解压失败等错误,并通过升级进度的Topic,上报-1-2-3-4到云端,则认为升级失败。
    • 设备升级时,从设备第一次上报升级进度开始计算升级时间,在设置的超时时间截止前,设备没有上报升级后的目标版本完成升级,则认为升级失败。
    • 设备在升级中状态下,上报了源版本和目标版本以外的版本信息,则认为升级失败。

    如果发起批量升级时,指定了待升级版本号,且选择了升级失败后重试,在以下情况下会进行自动重试升级。

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

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

    说明

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

    • 因升级超时(失败原因:timeout)而导致的升级失败。
    • 您主动取消的升级。
    已取消 已取消该设备的升级。
  • 取消批次下的所有升级任务。

    单击升级批次对应的取消按钮。

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