首页 > 其他分享 >远程升级频频失败?你可能忽略了模组差分包…

远程升级频频失败?你可能忽略了模组差分包…

时间:2024-09-25 16:54:20浏览次数:10  
标签:AirM2M 模块 差分 升级 780E 版本 远程 模组

去年开发的一个项目产品,用的是合宙4G-Cat.1低功耗模块Air780E。

最近有客户反馈在乡村里频繁出现掉线的情况。通过换货、换SIM卡对比排查测试,发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况,而今年4月份采购的模块批次就不会掉线,很奇怪。

我联系了对应负责的销售,了解到差异就是模块内的固件版本不同。

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

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

看来是高版本对网络做了优化,但在这个地区出货的也有150多台设备了,不可能每个都单独回收回来给模块用USB烧录成高版本固件。

所以,不如直接通过FOTA远程批量升级。

远程升级频频失败?你可能忽略了模组差分包…_固件

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


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

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

+UPGRADEIND: -1003

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

远程升级频频失败?你可能忽略了模组差分包…_差分_02

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

如下图示:

远程升级频频失败?你可能忽略了模组差分包…_硬件工程_03

远程升级频频失败?你可能忽略了模组差分包…_硬件工程_04

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

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

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

+UPGRADEIND: -1003

这又是什么原因?!!

远程升级频频失败?你可能忽略了模组差分包…_低功耗_05

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

远程升级频频失败?你可能忽略了模组差分包…_物联网_06

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

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

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

远程升级频频失败?你可能忽略了模组差分包…_固件_07

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

远程升级频频失败?你可能忽略了模组差分包…_固件_08

远程升级频频失败?你可能忽略了模组差分包…_差分_09

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

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

差分升级表格如下图示:

远程升级频频失败?你可能忽略了模组差分包…_低功耗_10

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

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

远程升级频频失败?你可能忽略了模组差分包…_固件_11

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

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

然后搜索得到AirM2M_780E_LTE_AT_V1147,
解压出来找到:
AirM2M_780E_V1147_LTE_AT.dfota.bin文件,
放到IoT平台上面。

远程升级频频失败?你可能忽略了模组差分包…_差分_12

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

远程升级频频失败?你可能忽略了模组差分包…_物联网_13

成功从AirM2M_780E_V1138_LTE_AT,
升级到了 AirM2M_780E_V1147_LTE_AT。

接下来就是按照步骤,
升级到 AirM2M_780E_V1162_LTE_AT版本。

远程升级频频失败?你可能忽略了模组差分包…_物联网_14


远程升级频频失败?你可能忽略了模组差分包…_物联网_15

远程升级频频失败?你可能忽略了模组差分包…_硬件工程_16


四、总结及建议

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

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

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


标签:AirM2M,模块,差分,升级,780E,版本,远程,模组
From: https://blog.51cto.com/u_16496558/12110696

相关文章

  • 微服务2:微服务远程操作Redis
    目录1、本文目标2、Redis简介3、Redis安装及配置4、搭建Redis的客户端微服务5、注册至Eureka服务注册中心6、Redis客户端微服务测试1、本文目标2、Redis简介Redis是一个开源的(BSD许可)、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支......
  • 远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件
    很多小伙伴都会在工作中使用code-server,比如说远程办公,当你需要在家访问你的工作环境,亦或者是你们公司的Docker是放入服务器中。code-server无疑是最好的选择,它可以让你通过互联网安全地连接到远程服务器上的开发环境并且使用VSCode。这也符合code-server的初衷——能够在任何机......
  • 亚诺德经典低失真差分ADC驱动器芯片——AD8138
    博主首拆华为三折叠MateXT:内部设计完胜iPhone16,零部件多是国产光刻机的“前世今生”推荐文章:本期是平台君和您分享的第78期内容NEWS新闻早知道今年的巴黎奥运会结束了,不仅是中国人,连无数外国人都情不自禁怀念起16年前的北京奥运会开幕式。在2008年,智能手机还没......
  • vscode连接不上远程服务器
    删除缓存.vscode然后再删除.ssh......
  • IntelliJ IDEA远程开发:释放本地设备,打破资源与环境的限制
    文章目录IntelliJIDEA远程开发:释放本地设备,打破资源与环境的限制应用场景远程开发优势如何实现远程开发进入远程开发`RemoteDevelopment`选择远程开发方式配置SSH代理转发通过`DevContainer`创建开发容器公众号,感谢!IntelliJIDEA远程开发:释放本地设备,打破资源与环境的限......
  • Windows vnc viewer 连接 ubuntu 22.04 远程图形桌面
    前言全局说明一、说明环境:Windows11家庭版23H222631.3737Python3.8.10(tags/v3.8.10:3d8993a,May32021,11:48:03)[MSCv.192864bit(AMD64)]onwin32Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC......
  • IDEA更改远程git仓库地址
    前言我们在使用IDEA开发时,一般会配置好对应的git仓库,这样就比较容易对代码进行控制以及协同开发。 但有时候,我们远程的仓库地址由于这样那样的原因,需要迁移(这在爱折腾的企业是常有的事情)。那么,我们该如何在IDEA中更新远程仓库地址呢?如何设置首先,我们点击上方的【Git】按钮,打......
  • Docker Desktop (WSL)部署MySQL使用Navicat 16 for MySQL远程连接
    DockerDesktop(WSL)部署MySQL使用Navicat16forMySQL远程连接1.docker拉取镜像dockerpullmysql2.查看镜像dockerimages3.启动MySQL实例dockerrun-d-p3307:3306--name=mysql-eMYSQL_ROOT_PASSWORD=123456mysql命令详解参数详解-d在后台运行容......
  • vscode 远程 切换python 虚拟环境
    在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程,包括安装必要的扩展、连接到远程服务器、创建或激活虚拟环境,并在VSCode中选择相应的Python解释器。以下是一个详细的步骤指南,包括代码示例,旨在帮助我们完成这一过程。1.Vscode远程切换Python虚拟环境的步骤1.1步骤1:......
  • Vscode 远程切换Python虚拟环境
    在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程,包括安装必要的扩展、连接到远程服务器、创建或激活虚拟环境,并在VSCode中选择相应的Python解释器。以下是一个详细的步骤指南,包括代码示例,旨在帮助我们完成这一过程。1.Vscode远程切换Python虚拟环境的步骤1.1步骤1......