可能原因 解决方法 说明
Buffer设置得过小,下载速度慢,从而下载超时,导致OTA升级失败。

检查接口aiot_download_setopt的配置项AIOT_DLOPT_BODY_BUFFER_MAX_LEN的值的大小,增大该配置项的值后,重新发起OTA升级。

在Linux环境下,推荐将该值设置为2 KB。

AIOT_DLOPT_BODY_BUFFER_MAX_LEN配置项指定用于接收固件报文的Buffer的大小。

每当下载的固件填充满Buffer后,通知设备端。该值越大,发起通知的次数越少,耗时越短。反之,过小的值会导致整体耗时偏长,受网速波动影响的可能性也越大。

同时,在多线程的系统中,如果下载任务执行慢, 会一直占用CPU,影响其他业务的正常运行。

OTA升级超时时间设置太短,导致控制台显示升级失败。 在发起升级任务时,设置设备升级超时时间(分钟)时,增大该项的值。具体操作,请参见配置OTA升级策略

请根据下载的实际情况, 并充分考虑网络异常带来的波动,保留一定的余量,设置该项的值。

如果该值设置得太小,设备在指定时间内未完成升级并且未上报新的版本号,物联网平台控制台会提示失败,设备端的下载通道直接断开。

设置OTA升级的升级范围为定向升级时,无法找到目标设备。 登录物联网平台,检查指定升级的设备的版本号。具体操作,请参见查看升级情况

如果设备的版本号与待升级版本号不符,则重新上报版本号后,重新发起OTA升级。

检查待升级设备是否上报过版本号:
  • 如果没有,直接上报设备当前版本号。
  • 如果已上报,检查版本号是否正确,如果不正确,请重新上报版本号。
设备端通过aiot_download_report_progress上报了100%的升级进度,但物联网平台控制台显示失败。 检查设备完成OTA升级后,调用aiot_ota_report_version,上报最新的版本号。 物联网平台控制台,根据设备上报的版本号,判断OTA升级成功与否,而非根据设备上报的固件下载百分比。
配置分段下载时,分段设置错误。 重新配置分段下载的相关参数,更多信息,请参见发起OTA下载请求 分段下载时,请保证以从头至尾的顺序进行分段,且各个分段间不能有重叠区域。

例如,分段参数分别设置为[0,1024][1024, 2048],其中第1024个字节重复下载了2次,导致最终校验和失败。您需将其修改为[0, 1024][1025, 2048]

网络原因 请检查网络连接。网络连接恢复正常后重试。

下载过程中, 如果出现网络断开的情况, 会导致设备收取不到报文。常见的错误提示如下:

download failed, error code is -3864, try to send renewal request