模组差分包,可能是你远程升级失败的罪魁祸首!

也许我们已经习惯生活里的问题接连不断。。。但当收到客户的问题反馈,还是会心头一紧!

最近有客户反馈在乡村里频繁出现掉线的情况。

我们赶紧排查:换货、换SIM卡,发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况,而今年4月份采购的模块批次就不会掉线。。。太奇怪了!

跟对应销售对接后,了解到差异就是模块内的固件版本不同。

去年采购的那批模块版本是:

AirM2M_780E_LTE_AT_V1138

今年采购的那批模块版本是:

AirM2M_780E_LTE_AT_V1162

看来是高版本对网络做了优化,但在这个地区出货的也有150多台设备了,把每个都单独回收回来给模块用USB烧录成高版本固件,显然不太现实,索性**,直接通过FOTA远程批量升级吧!**

一、第一次尝试升级,出现失败


从合宙DOC社区上找到了FOTA远程升级的文档参考,先用手边的设备用合宙IoT平台做下测试,看能不能升级。

什么都配置好了,结果到最后模块发AT+UPGRADE触发升级的时候,却老是报错:

+UPGRADEIND: -1003

通过升级日志查询结果是"正在生成版本"?

在页面右上角看到有个红色问号" ?",是IoT平台的帮助中心,往下滑就看到了升级日志返回结果的对应描述。

如下图示:

正在生成版本,请稍后再次请求------**看样子是版本相差太大了,平台内部还在做差分包,**那我就等一会儿再请求看看。

二、第二次尝试升级,再次出现失败

保险起见间隔了30分钟再次请求,以看到已经进入下载了,但是结果却又出现了:

+UPGRADEIND: -1003

这又是什么原因?!!

先去IoT平台上看一下升级日志的结果是什么,查询看到显示的是"成功",但实际上并没有升级成功啊,反而还报错了。

紧接着找合宙的技术人员咨询了解到,**差分包大小是有限制的,不能大于480KB,**否则会升级不成功。

至于IoT平台上升级日志显示"成功",原因是这个成功代表的意思不是模块升级成功------而是给予模块的升级请求,下发了升级文件成功了。

经过进一步确认,可以通过合宙自己提供的生成差分包工具的网址,把V1138和V1162的dfota.bin文件放上去,制作一个差分包看看,到底有多大。

等了大概3分钟左右,差分包制作出来了,点击下载后,文件大小有550KB,那确实超出了480KB,升级不了。

从合宙的技术那里还得到了一份AT固件各个版本之间制作差分包的大小,以及是否可以差分升级的表格,这方便多了啊。

有数字的代表是在480KB以内,可以差分升级的版本;空白的就是不能升级的。

差分升级表格如下图示:

那么通过这张图来看,例如我当前的模块版本是V1138,需要升级到1162,对应的交叉格并没有数字。

而且V1138升级到1147的差分包就已经到480KB的临界点了,只能先升到V1147,再升到1162。

三、事不过三,第三次升级,成功!


那么,先获取到V1147版本的固件。

然后搜索得到AirM2M_780E_LTE_AT_V1147,

解压出来找到:
AirM2M_780E_V1147_LTE_AT.dfota.bin 文件,

放到IoT平台上面。

发送AT指令走下升级流程:

成功从AirM2M_780E_V1138_LTE_AT,

升级到了 AirM2M_780E_V1147_LTE_AT。

接下来就是按照步骤,

升级到 AirM2M_780E_V1162_LTE_AT版本。

四、总结及建议


从以前的老固件做升级,很重要的一点------**要考虑到模块内部对差分升级所分配的FOTA分区有多少。**如果差分包超过了分区(Air780E模块的FOTA分区看来就是480KB了),超出肯定是升级不了的。

紧接着和领导做了汇报,在本地测试了Air780E模组FOTA升级可以了,流程也写好了,先找了5台在外的设备远程升级,测试一下看升级后掉线的现象也确实减少了,那说明固件没问题。掉线的麻烦事,也完美解决了!

如果你在项目开发中也遇到类似问题,记得一定一定要先注意差分升级FOTA分区大小。

相关推荐
sp_fyf_20247 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22
论文阅读·人工智能·算法·游戏·搜索引擎·语言模型·自然语言处理
楠神说软件测试8 分钟前
简单接口自动化框架实现(Python+requests+pytest)
运维·自动化·pytest
追梦不止~18 分钟前
如何提高UI自动化的稳定性
运维·自动化
qq_3391911432 分钟前
docker 创建showdoc服务 showdoc容器部署教程
运维·docker·容器
FHKHH36 分钟前
计算机网络第二章:作业 2: UDP ping 程序
运维·服务器·vscode·计算机网络·ubuntu·udp
有梦想的骇客40 分钟前
书籍翻转字符串(5)0923
算法
合宙LuatOS41 分钟前
开机容易关机难?合宙Air201资产定位模组LuatOS的PWRKEY控制来实现!
嵌入式硬件·物联网·硬件工程·pcb工艺
黑龙江亿林等保43 分钟前
CentOS:稳定的服务器操作系统选择
linux·服务器·centos
qq_415292641 小时前
docker镜像源
运维·docker·容器
Mr. Sun_1 小时前
H3C交换机手动释放DHCP地址
运维·网络