固件升级支持远程空中OTA(Over The Air)升级设备固件,实现对设备的远程维护、功能升级、问题修复等场景的使用。您可以指定产品新增一个固件,对固件进行验证,验证通过后开始批量升级,并在固件详情中查看升级结果。
前提条件
设备已烧录了一个固件版本,且已成功连接到生活物联网平台。背景信息
固件升级功能是网络设备所必须支持的基础服务。在设备固件出现安全漏洞、软件bug维护、自身功能优化、以及设备性能改良等需更新固件时,在线升级功能就尤为重要。
生活物联网平台目前提供两种升级方式。
- 静默升级:设备连云后若发现有新的固件版本就自动进行升级,无需用户干预。
- App提醒升级:手机App会提示用户有新版本可用,并询问用户是否确认升级,只有在用户确认升级的情况下才会进行设备升级。
新增固件
- 登录生活物联网控制台。
- 在控制台首页,单击固件升级OTA。
也可以在运维中心,单击OTA固件升级。
- (可选)若您的设备搭载了AliOS Things芯片,可以开启安全升级功能。
安全升级是保证固件完整性、机密性的一种方式,建议打开。使用安全升级功能,设备端需配合对固件和固件的签名进行验证。具体请参见AliOS Things技术文档。
- 在固件升级页,单击安全升级。
- 在对话框中,将待升级产品对应的安全升级按钮设置为开。
当安全升级功能为开时,可单击对应的复制按钮,复制公钥,用于设备端验证签名。
- 在固件升级页,单击添加固件。
- 在添加固件对话框中,输入固件信息,单击确认,上传固件文件。
参数 描述 固件类型 - 整包:您上传的固件文件是完整的固件文件,将推送整包固件给设备进行升级。
- 差分:您上传的升级包文件仅包含新版本升级包与之前版本的差异部分,仅推送差异部分至设备,设备进行差分还原,还原为完整升级包。差分升级可有效减少升级对设备资源的占用,和减少下发升级包的流量消耗。
设备使用AliOS-Things芯片,阿里云提供差分包生成方法和差分还原算法,请参见OTA差分工具使用指南。您也可以自行生成差分包并完成差分还原算法开发。
固件名称 设置固件名称。支持中文、英文、日文、数字、下划线(_)、中划线(-)、小括号(()),必须以中文、英文或数字开头,长度不能超过 40 个字符。 所属产品 选择固件所属产品。 说明 可以退出弹窗进行选择产品。固件版本号 设置该固件的版本号。仅支持英文字母、数字、点号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。 固件类型选择为整包时,需设置的参数。
待升级版本号 选择待升级的固件版本号。下拉选项框中,将展示当前产品下所有设备的固件版本号,选择一个或者多个待升级的固件版本。 固件类型选择为差分时,需设置的参数。
升级后版本号 设置升级后的固件版本号。 固件类型选择为差分时,需设置的参数。
固件模块 固件模块用于区分同产品下设备的不同模块的升级。 - 选择模块:从已有的固件模块中选择。
- 新增模块:自定义新的模块。仅支持英文字母、数字、点号(.)、短划线(-)和下划线(_)。长度限制为1~64个字符。默认填写default。
签名算法 - 产品的入网类型为蓝牙:仅支持MD5算法。
- 当产品设备使用阿里云提供的Android SDK,且固件类型选择为差分时,必须选择MD5算法。
- 其他:支持MD5和SHA256算法。
上传固件 上传固件文件。文件大小不能超过1,000 MB,仅支持 BIN
、TAR
、GZ
、TAR.GZ
、ZIP
、GZIP
、APK
类型的文件。固件描述 可描述该固件的功能等信息。描述长度不超过100个字符,一个中文计为一个字符。
验证固件
在进行批量升级之前,您需要先进行固件验证,确认固件各项功能正常使用之后再批量升级,避免因固件缺陷导致升级后大量设备不能正常工作。验证固件的本质是指定少量设备进行固件升级。固件验证通过后不能再次验证。
- 选择要验证的固件,单击操作中的验证固件。说明 固件上传至物联网平台后,必须使用少量设备对固件进行验证。确认测试设备升级成功后,才能批量升级。
- 配置验证固件的参数。
参数 描述 待升级版本号 下拉选项框中,展示当前产品下所有设备的固件版本号,选择一个或者多个待升级的固件版本。选择待升级版本号后,使用这些固件版本的设备将展示在待验证设备列表中。 待验证设备 选择用于此次测试的设备。 设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。从设备第一次上报升级进度开始计算时间。可选值范围:1分钟~1,440分钟。 根据自身需要进行配置APP确认升级- 是:升级固件时,在App上推送消息,提醒用户本次的升级。
- 否:升级固件时,不提醒App端用户,即静默升级。
- 单击确定完成。
- 固件验证不通过
状态显示为验证失败,您可以重新验证固件。
- 固件验证通过
状态显示为已验证,您不可以再次验证固件,您可以操作批量升级。
- 固件验证不通过
批量升级
固件验证通过并确认各项功能正常后,该固件才可以在大批设备上投入使用。批量升级的本质也是对大批设备定向推送升级通知。
批量升级操作前的说明如下:
- 测试设备不能进行批量升级。
- 禁止使用未验证的固件进行批量升级操作。
- 设备从收到升级通知开始直至升级完成是一个渐进的过程,请耐心等待升级结果。
- 批量升级所覆盖的设备可能会因为设备上一次的升级动作没有结束(设备处于待升级或者升级中),而导致本次升级中该部分设备升级失败。
- 设备在实际升级过程中出现错误(如下载失败、校验失败、解压失败等),并且通知OTA系统后,系统会将本次升级动作置为完成(而实际升级操作结果为失败)。
- 可以在固件详情页,看到批量升级对应设备的升级情况,升级失败列表选项卡会显示简要的升级失败原因。
- 选择要进行批量升级的固件,单击操作中的批量升级。
- 配置批量升级的参数。根据自身需要进行配置APP确认升级。
- 是:升级固件时,在App上推送消息,提醒用户本次的升级。
- 否(默认):升级固件时,不提醒App端用户,即静默升级。
参数 描述 待升级版本号 下拉选项框中,展示当前产品下所有设备的当前固件版本号,从中选择待升级的固件版本。整包升级时,需设置该参数。 升级策略 - 静态升级:仅升级当前满足升级条件的设备。
- 动态升级:除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。包括但不限于以下情况:
- 后续新激活的设备满足升级条件。
- 设备当前上报的固件版本号不满足升级条件,后续上报了满足升级条件的固件版本号。
说明 一个固件下只能有一个动态升级批次。如果固件下已有一个动态升级批次,将不能创建新的动态升级,需先取消原有动态升级批次。
升级范围 - 全部设备:升级该产品下的全部设备。
- 定向升级:选择为定向升级后,下方出现设备范围选项框。单击选项框,在右侧弹出的对话框中,选择要升级的设备。仅升级被选中的设备。说明 定向升级的待升级版本为多选。默认选中您之前已输入的待升级版本号。
- 区域升级:升级实际地理位置在指定区域的设备。选择为区域升级后,下方出现指定区域的省份和城市选项框。
- 灰度升级:即局部升级。升级策略选择为静态升级时出现的可选项。
选择为灰度升级后,下方出现灰度范围输入框,需针对已选择的设备,设置灰度百分比。物联网平台根据设置的灰度百分进行计算,计算结果向下取整。灰度升级的设备至少为1个。
升级时间 指定设备固件升级的时间。 - 立即升级:立即进行固件升级。
- 定时升级:设置升级开始时间、升级结束时间。升级开始时间距当前时间最少10分钟,最多7天。升级结束时间距开始时间最少1小时,最多为30天,可不设置,不设置表示不会强制结束。说明 仅当升级策略为静态升级时,支持定时升级。
固件推送速率 设置每分钟向多少个设备推送固件下载URL。取值范围:10~1,000。 升级失败重试间隔 如果升级失败,在什么时候进行重试升级。可选: - 不重试
- 立即重试
- 10分钟后重试
- 30分钟后重试
- 1小时后重试
- 24小时后重试
升级重试上限次数 选择升级失败后,最多可重试几次。可选: - 1次
- 2次
- 5次
设备升级超时时间 设置单个设备的升级超时时间,即多长时间之后,升级未完成则为超时。从设备第一次上报升级进度开始计算时间。可选值范围:5分钟~1,440分钟。 是否覆盖设备之前的升级任务 同一时间,如果一个设备处于多个升级批次中(即设备状态为:待确认、待推送或已推送),需要选择是否覆盖设备之前的升级任务。 - 是:设备只执行新的升级任务,之前的升级任务会被取消。
- 否(默认):若设备已有升级任务,则只执行已有任务。
说明 不覆盖升级中的任务,此时继续执行升级中的任务,不执行新的任务。是否仅对新上报版本的设备生效 当升级策略选择为动态升级时的参数。 选择是否仅对后续新上报版本号的设备生效,待升级版本号以新上报的新版本号为准。
- 是:仅升级后续新上报版本号的设备。
- 否(默认):升级当前满足升级条件的设备,并持续检查后续新上报版本号的设备是否满足升级条件。
- 批量升级提交后,单击该固件的查看,然后在批次管理页签下的设备列表页签中,查看升级状态。
状态 说明 待确认 还未在手机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
)而导致的升级失败。 - 您主动取消的升级。
已取消 已取消该设备的升级。