固件升级支持远程空中OTA(Over The Air)升级设备固件,实现对设备的远程维护、功能升级、问题修复等场景的使用。您可以指定产品新增一个固件,对固件进行验证,验证通过后开始批量升级,并在固件详情中查看升级结果。

前提条件

设备已烧录了一个固件版本,且已成功连接到生活物联网平台。

背景信息

固件升级功能是网络设备所必须支持的基础服务。在设备固件出现安全漏洞、软件bug维护、自身功能优化、以及设备性能改良等需更新固件时,在线升级功能就尤为重要。

生活物联网平台目前提供两种升级方式。

  • 静默升级:设备连云后若发现有新的固件版本就自动进行升级,无需用户干预。
  • App提醒升级:手机App会提示用户有新版本可用,并询问用户是否确认升级,只有在用户确认升级的情况下才会进行设备升级。

新增固件

  1. 在项目主页面,单击运营中心
  2. 选择设备运维 > 固件升级
  3. (可选)若您的设备搭载了AliOS Things芯片,可以开启安全升级功能。

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

    1. 固件升级页,单击安全升级
    2. 在对话框中,将待升级产品对应的安全升级按钮设置为

      当安全升级功能为时,可单击对应的复制按钮,复制公钥,用于设备端验证签名。

  4. 固件升级页,单击新增固件
  5. 添加固件对话框中,输入固件信息,单击确认,上传固件文件。
    参数 描述
    固件类型
    • 自有品牌项目下产品
      • 整包:您上传的固件文件是完整的固件文件,将推送整包固件给设备进行升级。
      • 差分:您上传的升级包文件仅包含新版本升级包与之前版本的差异部分,仅推送差异部分至设备,设备进行差分还原,还原为完整升级包。差分升级可有效减少升级对设备资源的占用,和减少下发升级包的流量消耗。

        设备使用AliOS-Things芯片,阿里云提供差分包生成方法和差分还原算法,请参见OTA差分工具使用指南。您也可以自行生成差分包并完成差分还原算法开发。

    • 天猫精灵生态项目下产品

      仅支持整包方式上传,即您上传的固件文件需为完整的固件文件。

    固件名称 设置固件名称。支持中文、英文、日文、数字、下划线(_)、中划线(-)、小括号(()),必须以中文、英文或数字开头,长度不能超过 40 个字符。
    所属产品 选择固件所属产品。
    说明 可以退出弹窗进行选择产品。
    固件版本号 设置该固件的版本号。仅支持英文字母、数字、点号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。

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

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

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

    说明 天猫精灵生态项目下的产品仅支持固件类型整包,无需设置该参数。
    升级后版本号 设置升级后的固件版本号。

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

    说明 天猫精灵生态项目下的产品仅支持固件类型整包,无需设置该参数。
    固件模块 固件模块用于区分同产品下设备的不同模块的升级。
    • 选择模块:从已有的固件模块中选择。
    • 新增模块:自定义新的模块。仅支持英文字母、数字、点号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。默认填写default。
    说明 天猫精灵生态项目下不支持选择模块。
    签名算法
    • 天猫精灵生态项目下产品,且产品的入网类型为蓝牙:仅支持MD5算法。
    • 自有品牌项目下的品,使用阿里云提供的Android SDK,且固件类型选择为差分时,必须选择MD5算法。
    • 其他:支持MD5和SHA256算法。
    上传固件 上传固件文件。文件大小不能超过1,000 MB,仅支持BINTARGZTAR.GZZIPGZIPAPK类型的文件。
    固件描述 可描述该固件的功能等信息。描述长度不超过100个字符,一个中文计为一个字符。

验证固件

在进行批量升级之前,您需要先进行固件验证,确认固件各项功能正常使用之后再批量升级,避免因固件缺陷导致升级后大量设备不能正常工作。验证固件的本质是指定少量设备进行固件升级。固件验证通过后不能再次验证。

注意 在验证固件之前,设备需要已烧录了一个固件版本,且已成功连接到生活物联网平台。
  1. 选择要验证的固件,单击操作中的验证固件
    说明 固件上传至物联网平台后,必须使用少量设备对固件进行验证。确认测试设备升级成功后,才能批量升级。
  2. 配置验证固件的参数。
    验证固件
    参数 描述
    待升级版本号 下拉选项框中,展示当前产品下所有设备的固件版本号,选择一个或者多个待升级的固件版本。选择待升级版本号后,使用这些固件版本的设备将展示在待验证设备列表中。
    待验证设备 选择用于此次测试的设备。
    设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。从设备第一次上报升级进度开始计算时间。可选值范围:1分钟~1,440分钟。
    根据自身需要进行配置APP确认升级
    • 是:升级固件时,在App上推送消息,提醒用户本次的升级。
    • 否:升级固件时,不提醒App端用户,即静默升级。
  3. 单击确定完成。
    • 固件验证不通过

      状态显示为验证失败,您可以重新验证固件。

    • 固件验证通过

      状态显示为已验证,您不可以再次验证固件,您可以操作批量升级。

批量升级

固件验证通过并确认各项功能正常后,该固件才可以在大批设备上投入使用。批量升级的本质也是对大批设备定向推送升级通知。

批量升级操作前的说明如下:

  • 测试设备不能进行批量升级。
  • 禁止使用未验证的固件进行批量升级操作。
  • 设备从收到升级通知开始直至升级完成是一个渐进的过程,请耐心等待升级结果。
  • 批量升级所覆盖的设备可能会因为设备上一次的升级动作没有结束(设备处于待升级或者升级中),而导致本次升级中该部分设备升级失败。
  • 设备在实际升级过程中出现错误(如下载失败、校验失败、解压失败等),并且通知OTA系统后,系统会将本次升级动作置为完成(而实际升级操作结果为失败)。
  • 可以在固件详情页,看到批量升级对应设备的升级情况,升级失败列表选项卡会显示简要的升级失败原因。
说明 由于设备端存在的差异化,即使固件验证升级成功,也无法完全体现设备升级后各项功能是否正常可用,建议您在设备固件升级后自行检查设备是否正常使用,避免批量升级后引起大批量的设备故障。
  1. 选择要进行批量升级的固件,单击操作中的批量升级
  2. 配置批量升级的参数。
    批量升级
    根据自身需要进行配置APP确认升级
    • :升级固件时,在App上推送消息,提醒用户本次的升级。
    • (默认):升级固件时,不提醒App端用户,即静默升级。
    参数 描述
    待升级版本号 下拉选项框中,展示当前产品下所有设备的当前固件版本号,从中选择待升级的固件版本。整包升级时,需设置该参数。
    升级策略
    • 静态升级:仅升级当前满足升级条件的设备。
    • 动态升级:除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。包括但不限于以下情况:
      • 后续新激活的设备满足升级条件。
      • 设备当前上报的固件版本号不满足升级条件,后续上报了满足升级条件的固件版本号。
      说明 一个固件下只能有一个动态升级批次。如果固件下已有一个动态升级批次,将不能创建新的动态升级,需先取消原有动态升级批次。
    升级范围
    • 全部设备:升级该产品下的全部设备。
    • 定向升级:选择为定向升级后,下方出现设备范围选项框。单击选项框,在右侧弹出的对话框中,选择要升级的设备。仅升级被选中的设备。
      说明 定向升级的待升级版本为多选。默认选中您之前已输入的待升级版本号。
    • 区域升级:升级实际地理位置在指定区域的设备。选择为区域升级后,下方出现指定区域的省份和城市选项框。
    • 灰度升级:即局部升级。升级策略选择为静态升级时出现的可选项。

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

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

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

    • :仅升级后续新上报版本号的设备。
    • (默认):升级当前满足升级条件的设备,并持续检查后续新上报版本号的设备是否满足升级条件。
  3. 批量升级提交后,单击该固件的查看,然后在批次管理页签下的设备列表页签中,查看升级状态。
    批次管理升级详情
    状态 说明
    待确认 还未在手机App确认,设备可进行OTA升级。

    创建批次任务时,App确认升级选择是,升级任务才会进入该状态。

    待推送 还未向设备推送固件升级通知。

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

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

      您可以:

      • 等设备完成上一次升级后,再对设备发起新的升级。
      • 在发起升级时,选择覆盖设备之前的升级任务。
        说明 设备处于升级中状态的升级任务不会被覆盖。
    • 设备通过升级进度的Topic,向物联网平台上报数值-1、-2、-3或-4,则认为升级失败。数值含义如下:
      • -1:升级失败。
      • -2:下载失败。
      • -3:校验失败。
      • -4:烧写失败。
    • 设备升级时,从设备第一次上报升级进度开始计算升级时间,在设置的超时时间截止前,设备没有上报升级后的目标版本来完成升级,则认为升级失败。
    • 设备在升级中状态下,上报了源版本和目标版本以外的版本信息,则认为升级失败。

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

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

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

    说明 云端不会触发自动重试逻辑的情况:
    • 因升级超时(失败原因:timeout)而导致的升级失败。
    • 您主动取消的升级。
    已取消 已取消该设备的升级。