Air系列模块常见问题列表(持续更新)

Air系列模块常见问题

一、通用问题

1.1、支持sim卡热插拔吗

       支持

       2G模块:

Ø  默认打开了软件检测SIM卡热插拔功能,但是软件检测有延时,详情参考AT手册中的AT+AMSDTC命令

Ø  支持硬件检测SIM卡热插拔功能,硬件检测无延时,但是默认关闭了此功能,如果需要打开,参考AT手册中的AT+CSDT命令【AT版本发送AT+CSDT=1命令,Lua版本执行ril.request("AT+CSDT=1")】,同时硬件电路上要接SIMDET

         4G模块:

Ø  不支持软件检测SIM卡热插拔功能

Ø  支持硬件检测SIM卡热插拔功能,硬件检测无延时,但是默认关闭了此功能,如果需要打开,参考AT手册中的AT+CSDT命令【AT版本发送AT+CSDT=1命令,Lua版本执行ril.request("AT+CSDT=1")】,同时硬件电路上要接SIMDET

1.2、模块软件中支持关闭RNDIS网卡功能吗

       不支持

         如果因为电脑误使用RNDIS造成了SIM卡流量损失,可以在电脑的网络连接中禁用RNDIS网卡

1.3、合宙官方的PCB文件用 PADS的什么版本可以打开

       9.5

1.4APN如何设置

       2G模块:

Ø  AT版本:需要用户使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN;公网的中国移动物联网卡的APNCMIOT,如果是专网卡,请咨询SIM卡供应商获取APN信息

Ø  Lua版本:如果是公网的中国移动物联网卡,不需要用户去主动设置APN,软件会自动设置;如果是专网卡,需要用户主动调用link.setApn(apn, userName, password)去设置【请咨询SIM卡供应商获取专网卡的APN信息】

         4G模块:

Ø  AT版本:

l  如果是公网SIM卡,不需要用户主动设置APN,软件自动去网络端查询APN进行设置

l  如果是专网SIM卡,首先咨询SIM卡提供商APN参数,然后参考:http://ask.openluat.com/article/913进行设置,设置成功后,后续用到CSTT或者SAPBR设置APN时,必须再次传入正确的APN参数,才能正常使用

Ø  Lua版本:

l  如果是公网SIM卡,不需要用户主动设置APN,软件自动去网络端查询APN进行设置

l  如果是专网SIM卡,首先咨询SIM卡提供商APN参数,然后在main.lua尽可能靠前的位置调用link.setAuthApn(prot,apn,user,pwd)进行设置【注意:第一次设置成功之后,软件会自动重启,因为重启后才能生效】

1.5、信号强度问题

       只有驻留到小区后,才会显示当前驻留小区的信号强度;如果没有驻留小区,信号强度显示为0

         信号强度和dBm的对应关系为:信号强度*2-113 = dBm

Ø  AT版本:通过AT+CSQ查询,取值范围参考AT手册【手册中搜索AT+CSQ

Ø  Lua版本:通过net.getRssi()返回信号强度值

         信号强度仅仅表示当前驻留小区的网络覆盖程度,一般来说,信号强度和网络通信稳定率是正比关系。信号强度差,网络数据通信相对就不稳定;但不能绝对的认为信号强度好,网络数据通信就一定稳定,和网络是否拥堵等其他因素也有关系;经验值如下:

         CSQ值小于10,可以认为网络较差

         CSQ值在1025之间,可以认为网络中等

         CSQ值大于25,可以认为网络较好

1.6、为什么Air720H模块无法使用中国电信卡收发短信

       中国电信的短信业务要回落到2G或者3G网络下才能使用,但是Air720H不支持中国电信的2G3G网络频段,所以不支持中国电信的短信业务;

         支持中国移动和中国联通的短信业务

1.7、为什么Air720G模块无法使用中国移动卡的语音通话业务

       Air720G仅支持联通3G和移动4G网络

       目前,中国移动的语音通话业务在如下几种网络状态下可用:

         1、回落到2G网络;但是Air720G不支持移动2G网络频段

         2、回落到3G;但是移动3G网络已经退出,同时Air720G也不支持移动3G网络频段

         34G网络的VOLTE;但是Air720G不支持这个功能

         所以,Air720G模块无法使用中国移动卡的语音通话业务

         但是支持中国移动的短信业务,因为短信业务不需要回落到2G3G网络,直接在4G网络下使用2G网络的核心网就可以完成短信收发

1.8、自带的基站定位能在国外使用吗?

       不能,没有国外的基站数据库

1.9、为什么公司采购的4G模块不在我自己创建的产品项目下

       客户向合宙采购4G模块时,如果采购人员没有告知合宙这批模块放在iot.openluat.com上的哪个产品下,则合宙会以采购人的手机号为账号,默认密码888888,创建一个“Air720X标准模块”的产品,此次采购的所有模块都会放在这个产品下

         通常采购人员和开发人员并不是同一个人,开发人员拿到模块,如果使用Lua版本开发,用到了合宙服务器提供的基站定位、远程升级功能,就会在iot.openluat.com上开发人员自己的账号下,创建一个新产品【假设产品名为“模块Lua开发”】,此时就会出现main.lua中的PRODUCT_KEY和模块归属的产品ProductKey不一致的问题,导致基站定位和远程升级功能无法正常使用

         遇到这种问题,需要把“Air720X标准模块”产品下的所有设备转移到“模块Lua开发”产品下,操作步骤如下:

         1、登录采购人手机号码账号,默认密码888888【如果不知道采购人员是谁,告知合宙技术支持人员一个模块的IMEI来查询】,进入“Air720X标准模块”产品

         2、点击设备列表->转移全部设备->其他账号,填入实际的账号和项目名之后,点击确定,开始转移,如果设备过多,转移耗费时间会稍长一点儿,请耐心等待;转移完成后,会提示“操作成功”

         以后采购模块时,如果所有的模块都需要放在开发人员账户下的“模块Lua开发”产品下,则告知采购人员,让合宙发货时默认全放在这个产品下,可以省去“开发人员转移全部设备”的操作

1.104G模块性能参数

       Flash128Mb16MB

         DDRRAM256Mb32MB

         主频:600MHz

1.11、同一地点,同一张卡,手机可以注册上4G网络,为什么4G模块不可以?

       之前有客户遇到过类似问题,均为“测试地点,4G信号太弱”引起的,手机上的天线增益比4G模块大板上的天线增益要高,所以手机正常,4G模块不正常。4G模块更换高增益天线后,也变得正常

1.124G模块使用2G卡,注册网络很慢

       不同型号的4G模块,支持的网络频段也不相同。

         以支持频段最多的4G模块Air720H为例,同时支持4G3G2G网络,开机搜索网络时,默认软件是按照4G3G2G网络的顺序依次搜索,等搜索到2G网络时,可能已经过去几分钟了(例如我在上海办公室,使用Air720H模块,3分钟左右才能搜索到2G网络),对于使用2G卡的用户或者要使用2G网络的应用场景来说,这种速度简直是不能忍受。那么如何加快搜索2G网络的速度呢,有如下两种方式:

 

优势

劣势

全网搜索,减少搜索4G3G网络的时间,通过每次开机发送如下AT命令实现:

AT+MEDCR=0,8,1

AT+MEDCR=0,17,240

AT+MEDCR=0,19,1

兼容各种网络环境,注册2G网络的速度可以稍微变快一点儿(例如,我这边Air720H模块,发送这三条指令前,测试了4次,分别为:174秒、118秒、147秒、136秒;发送这三条指令后,测试了4次,分别为240秒、110秒、112秒、112秒)

2G的驻网速度还是没有质的提升

仅搜索2G网络,通过开机发送如下AT命令实现:

AT*BAND=0,74

2G网络注册快,和2G模块的驻网速度基本一致(例如,我这边Air720H模块,基本上都是在20秒以内)

设置AT命令后,模块就只能使用2G网络了;以后如果要使用默认网络配置,必须发送AT+RSTSET(发送后,会自动重启)命令来恢复出厂设置

二、AT版本软件问题

2.14G模块AT固件,发送AT无应答

       按照如下步骤检测一遍:

         1、正确的AT口为uart2口,不是uart1

         2、如果使用的是合宙开发板如下图所示的uart2口,这个uart2口上已经有usb转串口芯片了,所以直接使用普通的usb线即可,不要使用usb转串口线。下图使用的是usb转串口线,所以AT无应答

        

         3、发送的AT命令要以回车(0x0D)字符结尾,虽然理论上说以回车换行(0x0D 0x0A)两个字符结尾也没有问题,但是标准协议是以0x0D结尾。使用sscompc串口工具调试时,可以选择以回车换行结尾;但是MCU端编写程序时,强烈建议以0x0D结尾

三、Lua版本软件问题

3.1、设备使用errDump对接合宙官方服务器,如何查看设备上报的错误信息

       登录iot.openluat.com,随便选择一个产品,点进去,点击左侧的 “查询debug” 菜单, 输入设备imei号、开始结束日期,点击搜索即可

         友情提醒:开始和结束日期的跨度越大,搜索速度越慢

3.2、如何获取文件系统和RAM的剩余空间

       rtos.get_fs_free_size()返回文件系统的剩余空间,单位为字节。注意:

Ø  此处返回的剩余空间为理论值,除了存储文件中的实际数据之外,还要存储文件索引信息,所以文件系统存在一个利用率的问题,一般来说85%是比较保险的一个经验值

Ø  2G模块如果用到了远程升级功能,需要为远程升级功能保留足够的文件系统空间,详情参考:http://ask.openluat.com/article/916 4.3章节

         collectgarbage("count")返回已用RAM空间,单位为KB2G模块RAM总空间为1MB4G模块RAM总空间为1.5MB。注意:

Ø  collectgarbage("count")是无法返回Lua虚拟机中的垃圾内存空间的,所以剩余空间并不是简单的“总空间-collectgarbage("count")空间”,如果要计算准确的剩余空间,在计算之前调用3collectgarbage(collect)强制回收垃圾内存

Ø  存在内存碎片的问题,并不是剩余多少内存空间就能用多少空间,比较典型的经验值是:2G模块collectgarbage("count")返回的已用内存在700K时,就已经到达临界值了

3.3、脚本代码中如何读取通过Luatools烧录进模块的文件

       考虑到对内存的消耗:如果文件较小(小于4KB),可以使用io.readFile(filePath)一次性全部读出;如果文件较大(大于4KB),可以使用io.readStream(filePath, offset, len)分段读出。filePath的定义如下:

         2G模块:

Ø  如果是lua文件,例如xxx.lua,则filePath为:/lua/xxx.lua

Ø  如果是非lua文件,例如xxx.mp3,则filePath为:/ldata/xxx.mp3

         4G模块:

Ø  无论什么格式的文件,例如xxx.luafilePath都为:/lua/xxx.lua

3.4、如何查询API的用法

       Lua版本的API分为三种:Lua标准库、core扩展库、脚本库:

Ø  Lua标准库:Lua语言自带的API接口(5.1.4版本,注意:移植的是elua,并不包含Lua 5.1.4版本的所有功能),参考:http://www.lua.org/manual/5.1/manual.html#5

Ø  core扩展库:在core中合宙自实现的API接口,参考:http://wiki.openluat.com/doc/luatApi/#luat

Ø  脚本库:在lib脚本中合宙自实现的API接口,参考:脚本发布包中的doc目录

3.5、为什么读出的imeisniccidimsi为空

       Lua版本的脚本运行起来之后,会发送AT命令查询imeisniccidimsi,从脚本开始运行到查询到这些信息,一般需要3秒钟,如果在查询之前使用misc.getImei()misc.getSn()sim.getIccid()sim.getImsi()接口读取,就为返回空;

         如下两种应用场景,分别做不同处理:

Ø  如果开机后过一段时间(这个时间超过开机查询imeisniccidimsi的时间,例如连接后台服务器)才会用到这些信息,则用到时直接调用读取接口即可,因为这个时间点肯定已经查询到了这些信息

Ø  如果在查询到这些信息之后,立即执行某个动作,则需要在自己写的脚本中订阅查询到这些信息的消息,参考如下代码

sys.subscribe("IMEI_READY_IND", function() end)

sys.subscribe("SN_READY_IND", function() end)

sys.subscribe("IMSI_READY", function() end)  --iccid也是IMSI_READY的消息

sys.subscribe("IMSI_READY", function() end)

3.6、天线厂调试软件时,如何提供来电自动接听的软件

       在自己的应用脚本中,添加如下代码

Ø  2G模块:

require "cc"

sys.subscribe("CALL_INCOMING", function(num) cc.accept(num) end)

Ø  4G模块:

ril.regUrc("RING", function() ril.request("ATA") end)

3.7sys.taskInit创建的task有没有优先级之分

       sys.taskInit创建的task实际上是Lua中的协程,无优先级之分,协程的挂起和运行完全由用户自己编写的脚本来主动控制,当前协程运行过程中,只能被当前协程中的sys.waitsys.waitUntil挂起,不会被外部协程挂起

 

 

 

  • 发表于 2019-09-17 22:41
  • 阅读 ( 266 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
朱天华

软件工程师

13 篇文章

作家榜 »

  1. 技术销售Delectate 37 文章
  2. 技术销售闫国梁 21 文章
  3. 杨奉武 18 文章
  4. 刘晨旭 18 文章
  5. 合宙秦鹏 17 文章
  6. 技术销售Wendal 15 文章
  7. 老张 14 文章
  8. 朱天华 13 文章