Air系列模块常见问题列表

Air系列模块常见问题

一、Luatools使用问题

使用教程参考:http://ask.openluat.com/article/4

1.1、烧录下载

       1.1.12G模块无法烧录下载

1.      检查下载线连接是否正确,下载线要连接模块的host_uart_txhost_uart_rxgnd

2.      下载线不稳定,更换ft232/cp2102等芯片串口线对比试一下

3.      检查供电以及开机是否正常,测量vbat 3.6V4.2V,并拉低pwrkey 2000ms开机

4.      检查下载口电平是否匹配,支持2.8V,兼容3.3V

5.      更换电脑usb口或者更换电脑对比测试

6.      模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块对比测试确认

7.      如果出现下载过程中失败问题,参考如下顺序排查

1)      供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认

2)      下载线可能不稳定,更换ft232/cp2102等芯片串口线对比试一下

       1.1.22G开发板无法烧录下载

1.      参考开发板使用手册,确认跳线帽使用是否正常

2.      开发板上已经有usb转串口芯片,所以要使用micro usb线,不要使用usb转串口线

3.      检查供电以及开机是否正常,测量vbat 3.6V4.2V,并长按pwrkey开机

4.      检查下载口电平是否匹配,支持2.8V,兼容3.3V

5.      更换电脑usb口或者更换电脑对比测试

6.      模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块对比测试确认

7.      如果出现下载过程中失败问题,参考如下顺序排查

1)      供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认

2)      下载线可能不稳定,更换ft232/cp2102等芯片串口线对比试一下

       1.1.34G模块(开发板)无法烧录下载

1.      检查下载线连接是否正确,如果是模块,要连接模块的usb_dpusb_dmvbusgnd;如果是开发板,要连接usb口,luatools准备好下载后,拨动开关拨到on位置

2.      需要使用稳定的usb下载线,不要使用usb转串口下载线

3.      检查供电是否正常,测量vbat 3.6V4.2V

4.      要安装驱动,参考:http://ask.openluat.com/article/92,注意:安装好驱动之后,在烧录固件过程中,设备管理器中会出现

烧录固件,正常开机后,设备管理器中会出现

如果没有出现这些端口,或者有感叹号,表示驱动没有安装成功,请重新安装驱动

注意:如果电脑安装了USBPcap,会造成无法烧录固件,但是可以正常抓取日志。如果遇到此问题,请删除USBPcap后再试

5.      更换电脑usb口或者更换电脑对比测试

6.      模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块或者开发板对比测试确认

7.      如果出现下载过程中失败问题,参考如下顺序排查

1)      供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认

2)      下载线可能不稳定,更换稳定的usb下载线

       1.1.4、生成量产文件时的加密功能有什么用

       如果项目有安全性方便的考虑,防止别人拿到设备后,读取自己写的脚本文件,可以在生成量产文件时,打开加密功能选项,输入密码,Luatools对所有脚本和其他资源文件进行加密,即使别人拿到了加密设备,也无法解密出原始的脚本和资源文件

       1.1.54G开发模式下的“USB打印TraceUART1打印TraceUART2打印Trace”是什么功能

       可以选择输出脚本日志的端口,默认是USB输出日志,如果烧录或者生成量产文件时,选择了指定端口输出日志,注意在Luatools主界面,选择对应的打印口,这样在Trace窗口才能输出日志

       1.1.6Luat开发方式下可以烧录哪种类型的文件

       任何类型的文件都可以烧录,例如mp3bmppngjpgtxt、自定义后缀的文件等等,烧录后,脚本如何访问这些文件,参考1.1.7章节

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

       通过Luatools烧录进模块的文件,开机启动时,根据不同类型的文件,会自动创建不同的目录保存这些文件,完整的文件路径(filePath)定义如下:

         2G模块:

Ø  如果是lua文件,例如xxx.lua:非加密下载时,文件路径为/lua/xxx.lua;加密下载时,文件路径为/lua/xxx.luae

Ø  如果是非lua文件,例如xxx.mp3:非加密下载时,文件路径为/ldata/xxx.mp3;加密下载时,文件路径为/ldata/xxx.mp3e

         4G模块:

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

         考虑到对内存的消耗过大可能会造成内存不足的问题:如果文件较小(小于4KB),可以使用io.readFile(filePath)一次性全部读出;如果文件较大(大于4KB),可以使用io.readStream(filePath, offset, len)分段读出

       1.1.8Luat开发方式下可以烧录某个项目的部分文件吗?

       不可以。每次烧录,都会删除模块中之前的所有脚本和资源文件,所以每次烧录,必须烧录某个项目的所有脚本和资源文件(包括lib脚本文件)

        1.1.9、打开串口失败

       Luatools打开串口时,会对波特率做校验,如果串口芯片的波特率满足不了要求,会打开失败

         2G模式下,波特率为9216004G模式下,波特率为115200

         目前遇到过如下几种打开串口失败的情况:

         1.      使用了PCIE转串口卡,这种串口卡不支持921600波特率,所以在2G开发模式下会提示打开失败,在4G模式下可以正常打开

1.2、日志输出

       1.2.12G模块(开发板)无法输出日志

1.      参考1.1.11.1.2章节,先检查一下数据线、供电、跳线问题

2.      联系代码开发者,确认一下代码中是否关闭了日志输出功能

3.      联系代码开发者,确认一下代码中是否配置了host口、uart1或者uart2输出日志功能,Luatools选择的打印口要和代码配置一致

       1.2.24G模块(开发板)无法输出日志

1.      参考1.1.3章节,先检查一下数据线、供电问题

2.      联系代码开发者,确认一下代码中是否关闭了日志输出功能

3.      联系代码开发者,确认一下代码中是否配置了usb口、uart1或者uart2输出日志功能,Luatools主界面选择的打印口要和代码配置一致

4.      参考1.1.5章节,确认下烧录或者打包时选择的打印Trace口是否和Luatools主界面选择的打印口一致

       1.2.3、日志输出过程中,突然停止输出

1.      如果是4G模块usb口输出日志,点击“关闭端口”后再点击“打开端口”;如果是4G 模块串口或者2G模块输出日志,点击“重启端口”

2.      参考1.2.11.2.2排查

       1.2.44G模块USB输出日志时,会丢失开机过程的部分日志

       4G模块开机时,部分电脑识别usb口过慢,导致开机部分的日志可能丢失;遇到此类问题,可以参考1.1.5章节,使用uart1或者uart2输出日志

       1.2.5、为什么系统状态、信号强度、版本类型、框架类型、软件版本的内容有时不显示或者显示不正确

       这些内容都是从抓取的日志中分析关键字解析出来的,如果不是从开机开始抓取日志,会丢失一些日志,从而导致解析失败。例如软件版本是搜索poweron reason解析出来的,如果没有抓到这一行日志,软件版本就会解析失败,或者如果自己写的应用脚本中也会输出poweron reason关键字日志,也可能导致解析异常。所以,这些信息的解析仅仅是作为参考方便开发者分析问题,要进一步准确分析问题,一定要直接分析日志

       1.2.6Luatools可以抓取、输出哪几种日志

1.      可以抓取、实时显示、自动保存Luat版本的脚本日志,脚本日志文件自动保存在工具根目录的log/*.trc

2.      可以抓取、自动保存4G模块AT版本或者Luat版本的底层日志,底层日志文件自动保存在工具根目录的log\4gdiag\*. sdl中。但是不可以实时显示,如果需要调试4G模块AT版本问题,可以用串口工具直接监控AT口的命令交互日志或者单片机打印出来AT交互日志来分析问题;或者吧sdl文件发给合宙技术支持人员分析

3.      不可以抓取2G模块AT版本日志。如果需要调试2G模块AT版本问题,可以用串口工具直接监控AT口的命令交互日志或者单片机打印出来AT交互日志来分析问题;或者按照合宙技术支持人员的要求,参考:http://ask.openluat.com/article/63来抓取日志

1.3、其他

       1.3.1Luatools无法启动、出现error 126

       缺少vc_redist运行库,http://www.openluat.com/Product/file/asr1802/vc%E8%BF%90%E8%A1%8C%E5%BA%93%E5%90%88%E9%9B%86MSVBCRT_AIO_2018.07.30_X86+X64.exe下载安装后,重新运行Luatools

       1.3.2Luatools工作异常、闪退

1.      点击菜单“帮助->检查新版本”,更新最新版本

2.      检查电脑的任务管理中是否有多个luatools.exe,如果有,关闭所有后,再重启Luatools

3.      最新版本如果仍然有问题,提供Luatools根目录下的*failed.log给合宙技术支持人员分析

       1.3.3、不小心删除了源码,有办法找回吗

1.      Luatools根目录下ClearScr中会保存最后一次本地烧录或者生成量产文件时的所有源码文件

2.      如果第1步不是你想要的,找一个有源码的设备,联系合宙技术支持人员处理

       1.3.4、如何抓取模块死机时的日志

1.      2G模块参考:http://ask.openluat.com/article/63

2.      4G模块参考:http://ask.openluat.com/article/910

       1.3.5、是否有64位、LinuxMac版本工具;是否支持xp系统

       没有64位、LinuxMac版本工具,LinuxMac请使用虚拟机运行Luatools工具;支持部分XP系统,建议在WIN7以上         的系统上使用

       1.3.6、为什么提示多个工具在运行

       检查电脑的任务管理中是否有多个luatools.exe,如果有,关闭所有后,再重启Luatools

        1.3.7、为什么设备一直在正常运行,但是coolwatcher抓日志过程中,会突然不输出日志

       按照如下顺序尝试解决

1.      下载线可能不稳定,更换使用ft232芯片串口线;抓日志过程中最好不要频繁的碰到串口线,可能会受到干扰

2.      左下角的command编辑框中输入creconnect命令后回车【注意:host rx要和串口线连接,才能正常接收命令】

3.      重新插拔串口线,重启coolwatcher

如果左下角command编辑框中输入r 0命令后回车【注意:host rx要和串口线连接,才能正常接收命令】,有0xXXXXXXXX格式的数据返回,表示host口通信正常,没输出日志,可能是host寄存器受到干扰导致,此时参照下图将可能受到干扰的寄存器主动设置正常


二、量产烧录工具使用问题

         2G模块量产烧录工具: http://www.openluat.com/Product/file/rda8955/RDA平台Lod客户升级工具2.5.7z

         4G模块量产烧录工具: http://www.openluat.com/Product/file/asr1802/ASR平台core客户升级工具V1.3_Air720系列.7z

         合宙提供了官方的烧录夹具和设计文件,如有需要,打开:luat.taobao.com,在店铺内搜索夹具,与淘宝客服沟通

2.1、使用一拖多烧录时,出现后一个模块开始烧录,前一个模块烧录失败的问题

         检查下夹具供电,使用稳定的电源给夹具供电;不要一个电源同时给多个夹具供电

2.24G模块烧录到最后,没有提示成功,提示“USB is Removed

1.      更换一根好点儿usb线,或者更换一个电脑usb口,或者更换电脑试试

2.      工具目录下config/param.ini中,确认一下modleType配置是否正确    

三、开关机(电源)问题

3.12G模块无法开机

1.      测量vddio引脚电压,如果是2.8V左右,表示已经正常开机,“无法开机”纯属误判;如果是低电平0V左右,表示没有开机

2.      vbat引脚电压3.6V4.2Vpowerkey拉低至少2秒,才有可能开机;测量vbat引脚和powerkey状态,确认是否满足要求

3.      模块峰值需要2A电流,供电跌落不能太多

4.      注意:reset引脚拉低是关机功能,不是重启功能

3.22G模块无法关机

1.      AT固件,开机状态下,powerkey引脚从高电平拉低1.5秒以上,或者发送AT+CPOWD命令,都会执行关机流程;如果采用了“powerkey一直拉低”的上电自动开机设计,则无法通过powerkey或者AT+CPOWD命令关机【固件后,检测到powerkey拉低,会再次自动开机】,只能vbat直接断电关机

2.      Luat固件,开机状态下,requirelibpowerKey功能模块,配置了长按powerkey关机,长按powerkey按键,或者在脚本中直接调用rtos.poweroff()接口,都会执行关机流程;如果采用了“powerkey一直拉低”的上电自动开机设计,则无法通过powerkey或者rtos.poweroff()接口关机【固件后,检测到powerkey拉低,会再次自动开机】,只能vbat直接断电关机

3.      注意:模块烧录软件后,如果没有彻底断一次电,自动开机后,powerkey按键、AT+CPOWD命令、rtos.poweroff()接口都无法成功关机,实际的现象表现为:关机后,会一直不断重启。这个是芯片设计的一个缺陷,无法修改

3.34G模块无法开机

1.      测量V_GLOBAL_1V8引脚电压,如果是1.8V左右,表示已经正常开机,“无法开机”纯属误判;如果是低电平0V左右,表示没有开机

2.      如果引出了usb引脚,usb连接电脑,参考1.1.3章节第4步,持续观察20秒,看是否会稳定出现设备管理器中的3个端口,如果稳定出现,表示已经正常开机,“无法开机”纯属误判;如果没有出现,表示没有正常开机;如果出现后一闪而过,表示可能一直在异常重启

3.      vbat引脚电压3.4V4.3Vpowerkey拉低至少2秒,才有可能开机;测量vbat引脚和powerkey状态,确认是否满足要求

4.      模块峰值需要2A电流,供电跌落不能太多

5.      将模块的第142脚:EXTON1N直接接地可以实现上电自动开机功能。需要注意,在上电开机模式下,将无法关机,只要VBAT管脚的电压大于开机电压即使软件调用关机接口,模块仍然会再开机起来。另外,在此模式下,要想成功开机起来VBAT管脚电压仍然要大于软件设定的开机电压值(3.1V),如果不满足,模块会关闭,就会出现反复开关机的情况。

不建议把模块的第21脚:PWRKEY 直接接地来实现上电开机功能。假如把PWRKEY 直接接地了,此时再把RESET_IN_N 拉低超过15秒的话,模块内部的PMU会认为模块状态异常,强制断电,即使在RESET_IN_N释放以后模块也会一直处于关机状态,直到松开PWRKEY一段时间。

3.44G模块无法关机

1.      AT固件,开机状态下,powerkey引脚从高电平拉低1.5秒以上,或者发送AT+CPOWD命令,都会执行关机流程;如果采用了“EXTON1N一直拉低”的上电自动开机设计,则无法通过powerkey或者AT+CPOWD命令关机【关机后,检测到EXTON1N拉低,会再次自动开机】,只能vbat直接断电关机

2.      Luat固件,开机状态下,在脚本中直接调用rtos.poweroff()接口,都会执行关机流程;如果采用了“EXTON1N一直拉低”的上电自动开机设计,则无法通过rtos.poweroff()接口关机【关机后,检测到EXTON1N拉低,会再次自动开机】,只能vbat直接断电关机

3.      将模块的第142脚:EXTON1N直接接地可以实现上电自动开机功能。需要注意,在上电开机模式下,将无法关机,只要VBAT管脚的电压大于开机电压即使软件调用关机接口,模块仍然会再开机起来。另外,在此模式下,要想成功开机起来VBAT管脚电压仍然要大于软件设定的开机电压值(3.1V),如果不满足,模块会关闭,就会出现反复开关机的情况。

不建议把模块的第21脚:PWRKEY 直接接地来实现上电开机功能。假如把PWRKEY 直接接地了,此时再把RESET_IN_N 拉低超过15秒的话,模块内部的PMU会认为模块状态异常,强制断电,即使在RESET_IN_N释放以后模块也会一直处于关机状态,直到松开PWRKEY一段时间。

3.5、其他

       3.5.1、有没有推荐的电池

       建议选择18650或锂聚合物电池。供电必须满足3.7~4.2v,电压跌落不超过0.6v,最低不低于3.4v

       3.5.2、为什么使用市电仍然无法正常工作

       请检查电源动态响应能力。必要时vbatgnd并电容

         3.5.3、能否获取电量百分比

       不能,只能获得电池电压。使用misc.getVbatt(),返回毫安。开发者自行根据电池的承认书去换算百分比(因为不同电池放电曲线各有差异)

         3.5.4、为什么供电没问题却仍然无法开机、自动关机、或者异常重启

       请用示波器检查供电有无跌落,万用表响应能力较差

四、重启问题

         关于重启问题的详细描述参考如下文章:

         http://ask.openluat.com/article/27

         http://ask.openluat.com/article/28

         http://ask.openluat.com/article/29

         http://ask.openluat.com/article/909

         重要提醒:使用Luat固件开发时,一定要使用errDump功能,此功能对“量产投放市场的设备,远程调试初步定位问题”至关重要

4.12G模块重启

1.      如果是Luat二次开发模式,使用官方发布的AT固件或者Luat固件+随便一个demo,测试确认下,是不是自己写的软件有问题

2.      vbat引脚电压3.6V4.2V,使用示波器测量vbat电压是否有跌落;模块峰值需要2A电流,可使用直流稳压电源直接对vbat供电对比测试

3.      AT版本,如果无法抓到日志,直接联系合宙技术支持人员处理;如果可以抓到日志,按照如下步骤处理:

1)      如果出现“(0xffffffff)模块硬件上电中,正在启动”,表示硬件重启,直接按照第1步确认问题,同时确认下是否为外围单片机给模块断电复位引起的重启

2)      其他的重启,直接联系合宙技术支持人员处理

4.      Luat版本,如果无法抓到日志,直接联系合宙技术支持人员处理;如果可以抓到日志,搜索poweron reason

1)      reason0,表示硬件重启,直接按照第1步确认问题,同时确认下是否为硬件看门狗或者外围单片机给模块断电复位引起的重启

2)      reason7,表示点击了Luatools的“重启模块”按钮控制的重启

3)      reason8,表示core中的软件看门狗重启,检查一下脚本中是否写了死循环的逻辑

4)      reason3,表示软件重启,在日志中搜索restart或者[E]或者traceback,分析原因自行解决;如果日志中搜索不到这些关键字,检查一下应用脚本中是否调用了rtos.restart()所致

5)      如果以上步骤都不能解决问题,联系合宙技术支持人员处理

4.24G模块重启

1.      如果是Luat二次开发模式,使用官方发布的AT固件或者Luat固件+随便一个demo,测试确认下,是不是自己写的软件有问题

2.      vbat引脚电压3.4V4.3V,使用示波器测量vbat电压是否有跌落;模块峰值需要2A电流,可使用直流稳压电源直接对vbat供电对比测试

3.      AT版本,如果无法抓到日志,直接联系合宙技术支持人员处理;如果可以抓到日志,参考1.2.6章节,提供sdl日志文件给合宙技术支持人员分析;如果需要设置为死机模式,复现问题进一步分析,参考http://ask.openluat.com/article/910处理

4.      Luat版本,如果无法抓到日志,直接联系合宙技术支持人员处理;如果可以抓到日志,搜索poweron reason

1)      reason0,表示硬件重启,直接按照第1步确认问题,同时确认下是否为硬件看门狗或者外围单片机给模块断电复位引起的重启

2)      reason3,表示软件重启,在日志中搜索restart或者[E]或者traceback或者EE LOG,分析原因自行解决

        如果以上步骤都不能解决问题,参考1.2.6章节,提供trc日志文件和sdl日志文件给合宙技术支持人员分析;如果需要设置为死机模式,复现问题进一步分析,参考http://ask.openluat.com/article/910处理

五、校准问题

         模块如果没有校准,射频性能就无法达到最优,极端情况下,会造成网络通信非常不稳定;未校准的模块必须走售后流程维修或者换货

5.12G模块如何判断是否校准

1.      AT版本,发送AT+ATWMFT=99命令查询,如果返回SUCC表示已校准,其余返回表示未校准

2.      Luat版本,日志中搜索ATWMFT,看AT+ATWMFT=99命令的返回值,如果返回SUCC表示已校准,其余返回表示未校准

5.24G 模块如何判断是否校准

         4G模块会对2G3G4G进行单独校准,所以要单独查询这三部分是否校准;同时也要根据模块支持的网络制式区别对待,例如720H支持2G3G4G,则这三部分都要校准才正常;720G支持3G4G,则只要这两部分都校准就正常

1.      AT版本,发送AT*MRD_CDF=Q,GsmCalData.nvmAT*MRD_CDF=Q,aplp_rf_calibration.nvmAT*MRD_CDF=Q,LteCalData.nvm命令分别查询2G3G4G是否校准,如果返回1表示已校准,其余返回表示未校准

2.      Luat版本,日志中搜索MRD_CDF,看AT*MRD_CDF=Q,GsmCalData.nvmAT*MRD_CDF=Q,aplp_rf_calibration.nvmAT*MRD_CDF=Q,LteCalData.nvm命令的返回值,如果返回1表示已校准,其余返回表示未校准

六、IMEISN问题

6.1Luat版本为什么开机读出的IMEISN为空

         Lua版本的脚本运行起来之后,会发送AT命令查询imeisn,从脚本开始运行到查询到结果,一般需要3秒钟【只是经验值,不要用做程序设计依据】,如果在查询到结果之前使用misc.getImei()misc.getSn()接口读取,就为返回空;

         用户开发项目时,可以根据项目的应用场景,分别做不同处理,比较典型的两种场景如下:

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

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

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

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

6.2、为什么IMEI为默认值

       2G模块的默认值:359759002514931

         4G模块的默认值:

1.      如果是合宙研发人员在开发调试过程中,发给客户体验测试的模块,可能会漏写IMEI

2.      如果是通过官方渠道购买的2G模块,请注意观察下模块标签。因合宙工厂扫描头偏移原因,20192月份、3月份(320日之前)生产的部分2G模块,IMEI和标签上的不一致,IMEI为默认值359759002514931,遇到此类模块,需要走售后流程换货或者维修。模块标签上SN的第310位表示生产日期,例如SN0520190227090781520190227表示2019227日生产

3.      曾经有一个客户,在生产时让合宙工厂代烧录客户固件,客户固件中有一个设计“烧录固件后,第一次运行时,会读取模块imei,存储到文件系统中,以后直接使用文件系统中存储的imei”,因为合宙工厂的生产流程是“先烧录固件,再写imei”,所以导致这批客户设备出厂后,发现文件系统中存储的imei都是默认值。所以让合宙代烧录的客户一定要注意imei使用的软件设计逻辑:直接实时查询使用即可,不要再另外存储一份使用

4.      其余情况,先根据第五章节确认下模块判断下有没有校准,同时提供日志给合宙技术支持人员分析

6.3、为什么4G模块写IMEI会失败

       实际场景中,用户可能会写自定义的imei到模块中,AT版本使用AT+WIMEI命令、Luat版本使用misc.setImei接口来写入;imei一共15位,其中最后1位是校验位,根据前14位计算得来

         2G模块的固件对最后1位的校验位没做检查,即使校验位错误,也允许写入

         4G模块的固件对最后1位的校验位会做正确性检查,校验位出错,返回写入失败;所以如果4G模块出现写IMEI失败,可以通过https://www.oming.me/tools/imei检查下校验位【如果此链接失效,可以把校验位设置为09依次尝试】,如果检验位没问题,提供日志给合宙技术支持人员分析

6.4SN是什么,如何读写

       sn的标准含义是指序列号,合宙模块的标签上都有sn号,记录了生产日期等信息;模块的flash中也有一块区域为sn,我们现在讨论的是模块flash中的这一块区域。        sn区域最多可以存储64字节的数据,即使重新烧录固件,此区域的数据也不丢失,和imei的存储机制类似。合宙工厂生产模块时,对sn区域没有写入任何有效数据【2G模块虽然写入了数据,但是此数据没什么实际意义】,所以客户拿到模块之后,可以根据sn区域的特性,存储自定义的不超过64字节的任何数据,例如阿里云的设备密钥

         sn读写接口如下:

1.      AT版本:AT+WISN?读取snAT+WISN="..."sn

2.      Luat版本:misc.getSn()读取snmisc.setSn(...)sn    

七、SIM卡问题

7.1、支持中国大陆哪些运营商

1.      2G模块:仅支持中国移动和中国联通(2G3G4G卡),由于中国联通关闭了2G网络,建议使用用中国移动卡

2.      4G模块:不同型号的模块支持的运营商不同,因不断推出新的模块型号,故此处不再一一罗列;请登录www.openluat.com,打开产品中心,根据使用的模块型号自行确认

7.2、是否支持中国港澳台、外国运营商

1.      2G模块:只要有2G网络的地区运营商,理论上都支持,建议在当地实际测试下;目前在中国港澳台、印度、中东、美国、非洲、德国都实地测试过可用

2.      4G模块:根据模块型号支持的频段,参考:http://ask.openluat.com/article/946各个国家和地区的网络频段,自行判断是否可以使用

         注意:一旦确定可用,需要参考本文的APN设置章节,设置为正确的APN,才能正常上网

7.3、支持SIM卡热插拔吗

         支持

1.      2G模块

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

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

2.      4G模块

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

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

7.4、找不到SIM

1.      进入飞行模式后,会导致找不到sim卡,确认下是否为进入飞行模式所致。AT模块发送AT+FCUN=0Luat版本在日志中搜索AT+CUFN=0

2.      确认卡是否插反、插错

3.      确认模块是否支持所使用的运营商的卡:2G模块仅支持移动和联通卡,4G模块型号不同支持的运行商也不同

4.      对比交叉测试,卡插到手机上,是否正常:

1)      如果不正常,检查下卡片是否变形、氧化,用卡背贴胶带、胶水灌注、擦拭卡片等方式再尝试,如果都不行,考虑换卡吧

2)      如果正常,把此卡放到其他板子上,如果其他板子正常,可能属于板子单体问题;如果其他板子也不正常,应该是板子硬件设计问题。参考第5步分析

5.      其余情况参考:http://ask.openluat.com/article/960进一步分析

7.5Luat版本为什么开机读出的ICCIDIMSI为空

         Lua版本的脚本运行起来,检测到sim卡之后,会发送AT命令查询iccidimsi,从脚本开始运行到查询到结果,一般需要5秒钟【只是经验值,不要用做程序设计依据】,如果在查询到结果之前使用sim.getIccid()sim.getImsi()接口读取,就为返回空;

         用户开发项目时,可以根据项目的应用场景,分别做不同处理,比较典型的两种场景如下:

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

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

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

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

7.6、可以读到SIM卡的手机号码(MSISDN)吗

         目前有两种方式可以获取本机号码:

1.      sim卡出厂时,可以写入自己的手机号码到sim卡中,但这不是强制要求的。在中国,运营商制卡时基本上都不会写入手机号码。如果可以确认自己用的sim卡中已经存储了手机号码,可以通过如下方式读取手机号码:

1)      AT版本,发送AT+CNUM命令查询

2)      Luat版本,开机后调用sim.setQueryNumber(true)打开查询本机号码功能,会自动查询本机号码;可通过sim.getNumber()获取查询结果

2.      模块开机后,sim卡向短信平台发送一条短信(短信内容中可以包含imei或者imsi),短信平台收到短信后,识别手机号码后,可通过如下方式通知模块手机号码:

1)      短信平台下发一条短信给模块,短信内容中包含手机号码,模块收到后解析出号码

2)      模块连接一个后台服务器,后台服务器与短信平台相连,根据imei或者imsi读取到对应的手机号码,然后把这个号码,下发给imei或者imsi对应的模块

7.7、虚拟卡(VSIM

         虚拟卡是一种“将sim卡数据写入模块flash,实现和实体卡同样网络功能”的纯软件技术,相比实体卡存在“省去卡槽的硬件设计、不会出现掉卡、不会因为卡被盗而产生的巨额流量”的优点

         目前合宙已不生产新的虚拟卡模块,之前已经出货的虚拟卡模块会持续维护。部分2G4G模块支持贴片卡(ESIM卡),有需要的话,可咨询购买

         虚拟卡使用时常见问题如下:

1.      2G模块支持虚拟卡,虚拟卡有专门的模块型号,只能在合宙工厂写入虚拟卡数据

2.      不支持虚拟卡的2G模块,客户不能自行写入虚拟卡数据支持虚拟卡功能

3.      支持虚拟卡的模块,如果烧录了Luat版本的旧版本lod或者ttslod,可能会擦除虚拟卡数据,导致虚拟卡功能失效。对于必须使用Luat版本tts lod的情况,建议使用Air202F或者Air268F支持虚拟卡的模块,可以烧录Luat版本的8955F lod,不会擦除虚拟卡数据

4.      实体卡和虚拟卡同时存在时,优先使用实体卡,不支持实时切换功能

5.      虚拟卡为纯流量卡,不支持语音和短信业务

6.      虚拟卡也是运营商提供的一种技术,资费和实体卡一致

7.8、贴片卡(ESIM

         目前,支持贴片卡的模块型号列表如下:

1.      2G模块:Air202支持

2.      4G模块:Air720SL支持

7.9、合宙物联网卡(虚拟卡、贴片卡、实体卡)商务问题

         物联网卡管理平台地址:sim.openluat.com

         商务问题列表如下,有需要请联系淘宝客服处理:

1.      存在试用期,计费规则如下:

1)      测试期:物联网卡在申请开通时,可自由选择是否开通测试期,测试期最长为三个月,即时生效,测试期以合同订单签订的失效日期为止,测试期结束后自动进入沉默期。在测试期内,有2M/月测试流量,不超过该流量不计费,超过2M则当月按照0.29/MB10M及以上套餐)、1/MB2M5M套餐)进行计费,且测试期不享受流量池。(测试期流量一般用于设备前装质量检测) 

2)      沉默期:测试期后,进入沉默期,最长六个月,沉默期用户产生流量后直接激活,并进入流量池。沉默期结束后仍未激活,强制激活

3)      计费期:物联网卡从激活之日期,根据购买流量时长(以月为计时单位)在系统内以套餐生效日期、套餐失效日期呈现,即物联网卡的有效使用期限,用户如需长期使用物联网卡应在套餐失效期前进行续费,以延长套餐的有效期,避免因套餐失效而停机

2.      欠费后不可使用,到期前提供iccid或者imei进行续费;过期超过2个月不能续费,自动销号

3.      支持流量池、支持转移卡的归属账号

4.      平台更新有24小时的延迟,可能会造成“已用流量为0、流量不符、已正常使用却提示沉默期等物联网卡状态不符”的问题,出现此类问题,请24小时之后,再登录平台查看

7.10、想使用语音短信业务怎么办

         合宙出售的物联网卡为纯流量卡,不支持语音和短信业务。必须去运营商办理实名认证的卡才能使用

7.11、实体卡如何防盗

         无法防盗,建议使用贴片卡

7.12、为什么SIM VCC没有供电

         sim_vcc不是持续供电,是间歇性供电,只有卡在位才持续供电

7.12、为什么Luatools提示“可能是虚拟卡数据错误,请重启几次,如果一直出现此提示,请联系管理员”

         Luatools有一个检测虚拟卡数据是否完整的功能,但是此功能无法做好,如果出现此提示,根据如下情况分析:

1.      如果模块不支持虚拟卡,直接忽略此提示,属于误报

2.      如果模块支持虚拟卡,并且当前没有外置实体卡,如果上网正常,属于误报;如果上网不正常,提供日志给合宙技术支持人员分析

八、天线射频问题

         常见的模块天线有如下几种:PCB天线、FPC天线、弹簧天线、棒状天线、外置吸盘天线

         常见的GPS天线有:陶瓷天线

         本章节描述的是常见的注意事项,具体到一款产品遇到的天线问题,还是要分析产品的内部结构,需要拍张清晰的产品内部以及外壳照片发给合宙技术支持人员分析

8.1、天线设计和调试

         任何一款规范的产品,天线设计至关重要,一定要到正规的天线厂,针对整机,对天线做匹配性调试。如果天线没有经过调试,在使用过程中会出现信号不稳定、驻网失败、连接服务器断线等网络问题

         客户如果没有条件做调试,建议选择抗干扰强的天线,下面分情况讨论:

1.      模块天线:PCB天线、FPC天线、弹簧天线,必须要到正规天线厂做匹配性调试

2.      模块天线:棒状天线、外置吸盘天线,如果没有条件调试,一定要选择抗干扰强,稳定性好的天线,这样射频受到的干扰会比较小

3.      GPS陶瓷天线,如果大板和陶瓷天线面积都比较小,一定要去正规天线厂调试。如果面积都比较大,实在没条件调试,可以不去调试

8.2、天线使用环境

         天线调试好之后,使用环境对天线性能也有影响,需要注意的问题如下:

1.      模块天线:不能放在全封闭或者半封闭的金属盒子里,对天线性能影响很大

2.      GPS天线:天线上方不能有金属物质,不能有较厚的遮挡物(例如几厘米的塑料盒子肯定不行,1毫米的塑料盒子可以)

8.32G模块测试传导灵敏度时,到-107.5左右GPRS就会掉线

         GSM灵敏度-108左右,正常应该不会掉线,可能是有干扰导致灵敏度下降,或者线损没有补上

8.42G模块天线为什么和GND短路了

         设计如此,这是正常表现;天线和GND之间有电感,所以测试为0欧姆

8.52G模块和4G模块天线通用吗

         4G天线可以用到2G上,但是2G天线不建议用到4G

8.64G模块如果支付辅天线,如何使用辅天线

         合宙大部分的4G模块不支持辅天线,个别模块支持辅天线,对于支持辅天线的模块来说,仅使用主天线可以满足日常基本需求,如果要求射频高性能发挥到极致,可以同时使用主天线和辅天线

九、信号问题

9.1、没有信号(信号弱)

1.      参考7.4章节检查下是否不识卡

2.      参考第八章确认天线是否匹配

3.      检查天线是否连接、天线连接座子的接口是否正确、天线是否损坏【换天线确认】

4.      没有注册上网络(参考第十章节),也可能会导致没有信号

5.      静电击穿等原因可能导致模块射频损坏【可以同一张卡,用其他模块对比测试,初步确认此问题】

9.2、信号强度和网络数据业务的稳定性关系

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

         信号强度的查询方法:

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

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

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

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

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

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

十、网络注册和附着问题

10.1、无法注册网络、注册网络慢、无法附着网络、附着网络慢

1.      参考7.4章节检查下是否不识卡

2.      检查下sim卡是否欠费

3.      参考第八章确认天线是否匹配

4.      检查天线是否连接、天线连接座子的接口是否正确、天线是否损坏【换天线确认】

5.      换卡、换板子对比测试,确保使用正常的硬件和sim卡测试

6.      参考7.17.2章节,确保模块支持当地的网络制式

7.      偏远地区的网络覆盖可能不全,想办法用手机对比测试;用手机对比测试时,注意手机要设置为和模块同样的网络制式,同时借助Cellular-Z工具确认

8.      环境因素(车库、地下室、电梯等)

9.      确认下是否所有设备在同一地点表现是否一致,有可能是伪基站造成的

10.2、为什么在一些车库里面手机接打电话正常,但是模块注册网络失败呢

         首先确保手机和模块使用的网络制式相同,例如模块是移动2G网络,手机也要在移动2G网络下,这样才有对比意义

10.3、为什么有些SIM卡在2G模块上无法注册网络

         0029版本开始的core固件,支持了中国移动的一种新标准的物联网卡,如果遇到此问题,确认一下版本是否为0029以及之后的版本,如果不是,烧录最新core固件测试确认下

十一、APN设置和PDP激活问题

11.12G模块如何设置APN

1.      AT版本,固件包含各国公网APN列表,但是列表无法保证完整性和正确性,除中国大陆外,其他国家和地区还是建议用户使用AT+CSTT或者AT+SAPBR命令主动设置正确的APN

1)      如果在中国大陆使用中国移动的公网卡,根据应用场景不同,可选是否设置APN

A.     如果socket单连接,在AT+CGATT?附着上数据网络之后,可以不设置APN,直接使用AT+CIPSTART命令去连接服务器

B.      如果是socket多连接、http应用、mqtt应用,因为流程要求必须执行设置APN的命令,所以使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN;公网的中国移动物联网卡的APNCMIOT【实际上,中国移动的卡,即使设置错误,也能正常上网,可能中国移动网关没有检查这个APN

2)      如果在中国港澳台或者国外使用,请咨询SIM卡供应商获取APN信息,使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN

3)      如果是专网卡,无论在什么国家和地区使用,请咨询SIM卡供应商获取APN信息,使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN

2.      Luat版本,固件包含各国公网APN列表,但是列表无法保证完整性和正确性,除中国大陆外,其他国家和地区还是建议用户使用link.setApn(apn, userName, password)主动设置正确的APN

1)      如果在中国大陆使用中国移动的公网卡,可以不主动设置APN

2)      如果在中国港澳台或者国外使用,请咨询SIM卡供应商获取APN信息,使用link.setApn(apn, userName, password)主动去设置正确的APN

3)      如果是专网卡,无论在什么国家和地区使用,请咨询SIM卡供应商获取APN信息,使用link.setApn(apn, userName, password)主动去设置正确的APN

11.24G 模块如何设置APN

1.      AT版本

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

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

2.      Luat版本

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

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

11.3PDP激活失败

         参考10.1章节

十二、socket问题

12.1、连接服务器失败

1.      服务器必须是公网地址

2.      使用PC上的TCP UDP测试工具客户端、或者mqtt.fx,连接服务器确认一下是否可以连接成功,排除服务器故障

3.      如果连接ssl服务器,确认下core文件是否支持ssl功能(例如2G模块的某些core文件不支持ssl功能)

4.      2G模块不要使用中国联通卡

5.      检查下模块信号、网络注册、网络附着、PDP激活状态

6.      检查下SIM卡是否欠费

7.      提供日志给合宙技术支持人员

1)      2G模块:使用合宙技术支持人员提供的debug core文件,参考:http://ask.openluat.com/article/63抓日志

2)      4G模块:参考1.2.6章节中的12,提供Luatools下的trc文件和sdl文件

12.2、数据收发延迟大、速度慢、经常失败、掉线断开

1.      检查下是否存在代码逻辑错误,导致异常

2.      检查下是否不断重启,导致异常

3.      检查下服务器网络是否稳定,不要用内网穿透方式搭建服务器

4.      检查下使用环境是否网络覆盖不好,例如车库、地下、电梯、山区等

5.      2G模块不要使用中国联通卡

6.      检查下模块信号、网络注册、网络附着、PDP激活状态

7.      如果经常出现连接被动断开:

1)      如果直接使用的是tcp udp socket连接,检查下心跳包的频率,基站策略会关闭长时间没有数据传输的连接,建议心跳包的频率不要超过4分钟,一般都是建议使用2分钟

2)      如果使用的是mqtt连接,检查下mqtt keep alive的时间,基站策略会关闭长时间没有数据传输的连接,建议心跳包的频率不要超过4分钟,一般都是建议使用2分钟

3)      如果使用的是mqtt连接,检查下是否在1.5倍的mqtt keep alive的时间,没有成功发送数据到服务器,就会被被服务器主动断开,这种情况一般都是发送数据超时引起的

8.      排查是否为网络问题:如果同一地点的所有设备都有问题,可能和网络环境有关系;使用手机设置为同样的网络模式,对比测试确认下;或者把设备移动到其他距离此地点比较远的地方对比测试。【注意:目前2G网络环境在逐步恶化,在网络较好的情况下,24小时出现10次以内的掉线都可以认为正常,仅仅作为经验值参考】

9.      如果要降低掉线率,可通过如下方式设置【注意:在网络环境不变的情况下,降低掉线率意味着会增加响应延时】

1)      2G模块

A.     AT版本:

a)      通过AT+TCPUSERPARAM命令设置较大的重传次数和重传间隔

b)     如果使用的是MQTT,除了执行第a)步操作之外,还可以通过AT+MCONNECT命令增大MQTT KEEP ALIVE的时间来降低掉线率

B.      Luat版本:

a)      调用socket.setTcpResendPara接口设置较大的重传次数和重传间隔

b)     如果使用的是MQTT,除了执行第a)步操作之外,还可以通过调用mqtt.client接口增大MQTT KEEP ALIVE的时间来降低掉线率

2)      4G模块

A.     AT版本:

a)      目前还不支持AT设置重传次数和重传间隔

b)     如果使用的是MQTT,除了执行第a)步操作之外,还可以通过AT+MCONNECT命令增大MQTT KEEP ALIVE的时间来降低掉线率

B.      Luat版本:

a)      目前还没有接口支持设置重传次数和重传间隔

b)     如果使用的是MQTT,除了执行第a)步操作之外,还可以通过调用mqtt.client接口增大MQTT KEEP ALIVE的时间来降低掉线率

10.    排查是否为设备天线问题:发出来设备的天线调试指标参数给合宙技术支持人员

11.    排查是否设备单体问题:如果同一地点,某些设备正常,某些设备异常,按照如下几种情况分析

1)      分析正常设备和异常设备的使用环境是否相同:

A.     如果不同,例如异常设备固定在钢制墙壁上,正常设备放置在桌子上,钢制墙壁可能对天线射频有干扰,将异常设备和正常设备放置在同样的使用环境中,再对比测试

B.      如果相同,参考第2)

2)      分析正常和异常的设备,驻留的小区是否相同:

A.     如果相同,重点排查异常设备的天线射频部分,分析不出结果的话,异常设备寄给合宙分析

B.      如同不同,多测试几次,确认下,是不是在异常小区内很容易出问题,如果异常小区很容易出问题,可能就是小区拥堵造成的

12.    提供日志给合宙技术支持人员

1)      2G模块:使用合宙技术支持人员提供的debug core文件,参考:http://ask.openluat.com/article/63抓日志

2)      4G模块:参考1.2.6章节中的12,提供Luatools下的trc文件和sdl文件

12.3、如何发送大量数据

1.      AT版本:发送数据的AT命令,例如AT+CIPSENDAT+MQTTPUBAT+HTTPDATA都有支持的最大长度,参考AT手册,根据这些AT命令单次发送支持的最大长度,MCU端拆包发送

2.      Luat版本:libsocketmqtthttp功能模块对数据发送进行了封装,支持一次传入大量数据【只要内存够用】,lib中自动分包进行发送

12.4、为什么频繁收发数据时,会导致整个模块系统响应变慢

         模块的主频是有限的,如果一直频繁收发数据,CPU频繁的处理数据收发,肯定会导致对其他任务的处理有延时。

         如果是Luat版本二次开发,这种表现会更加明显,因为所有Luat应用是一个单task应用,频繁的收发数据,会导致这个单task在频繁的处理数据收发消息,从而影响其他功能的及时响应。可参考:http://ask.openluat.com/article/930辅助理解

12.5、是否支持长连接

         UDP协议的socket不支持长连接,TCP协议的socket支持长连接;长连接需要在代码中实现断开自动重连的控制逻辑,以及实现定时发送心跳的业务逻辑

12.6、快发和慢发有什么区别

         UDP协议本身没有可靠性保证,所以不存在快发慢发之说,可以认为UDP协议的socket一直是快发模式

         TCP协议发送数据时,数据发送出去之后,必须等到服务器返回TCP ACK包,才认为数据发送成功,在网路较差的情况下,这种ACK确认就会导致发送过程很慢。从而导致用户程序后续的AT处理逻辑一直处于等待状态。例如执行AT+CIPSEND动作发送一包数据后,接下来要执行AT+QTTS播放TTS,但是CIPSEND一直等了1分钟才返回SEND OK,这时AT+QTTS就会一直等待1分钟,可能不是程序中想看到的。此时就可以设置为快发模式,AT+CIPSEND可以立即返回一个结果,此结果表示“数据是否被缓冲区所保存”,从而不影响后续其他AT指令的及时执行

         AT版本可以通过AT+CIPQSEND指令、Luat版本可以通过socket.setSendMode接口设置发送模式为快发或者慢发

         快发模式下,在core中有一个1460*7=10220字节的缓冲区,要发送的数据首先存储到此缓冲区,然后循环发送。如果此缓冲区已满,则AT+CIPSEND会直接返回ERRORsocket:send接口也会直接返回失败

         同时满足如下几种条件,适合使用快发模式:

1.      发送的数据量小,并且发送频率低,数据发送速度远远不会超过core中的10220字节大小;没有精确地判断标准,可以简单的按照3分钟不超过10220字节来判断;曾经有一个不适合快发模式的例子如下:用户使用Luat版本的http上传一个几十K的文件,设置了快发模式,导致一直发送失败,因为循环的向core中的缓冲区插入数据,插入数据的速度远远超过发送数据到服务器的速度,所以很快就导致缓冲区慢,再插入数据时,就直接返回失败

2.      对每次发送的数据,不需要确认发送结果

3.      数据发送功能不能影响其他功能的及时响应

         注意:4G Luat版本没有快发慢发的设置,因为4G Luat版本直接使用了api的方式来实现socket,不影响其他功能的及时响应

12.7、支持发送什么格式的数据

         任何数据格式都支持

1.      AT版本:建议使用AT+CIPSEND命令时,指定数据长度,此方式支持任何格式的数据发送,使用方法参考AT手册

2.      Luat版本:socketsend接口,支持任何格式的数据发送,参数为string类型,其他table等数据类型,都要转换为string类型之后,才能发送

12.8、如何查询错误码

         参考:http://ask.openluat.com/article/61

12.9、最多同时支持多少个连接

         参考:http://ask.openluat.com/article/61

1.      2G模块:非SSL连接最多8个;在内存空间充足的情况下,SSL连接个数没有限制

2.      4G模块:AT版本最多8个连接;Luat版本最多10个连接

         注意:Luat版本的lib中的一些功能模块会用到socket连接,例如updateagpslbsLocerrDump;同时支持的连接个数包含lib中的这些连接;例如在某个时间点,updatelbsLoc在工作,会占用2socket连接,这个时间点用户的应用脚本中最多能够同时使用的连接个数就少2个了

12.10、是否支持websocket、是否可以做server使用

         不支持websocket

         不可以做server使用

12.11、为什么要发送心跳包(如何检测连接活性)

         因为基站资源有限,如果不发心跳包保活,基站会主动断掉链路,回收资源,模块和服务器无感,并不知道链路已经断开。建议心跳包的频率不要超过4分钟,一般都是建议使用2分钟

12.12、为什么有时连接断开会收到提示;有时不可以收到提示,必须等到发送数据时才能检测到断开

         能收到提示的情况,通常是服务器主动断开连接

         不能收到提示的情况,可能是链路被基站断开,或者其他意外情况导致【例如服务器网线被拔掉】,模块和服务器无感知;此时只能通过发送数据超时来感知

12.13、如何统计流量

         运营商按照ip包来统计流量,ip包包含:ip包头+tcp包头+用户数据,以IPv4为例:

         ip包头包含固定的20字节+可选的4字节,至少20字节

         tcp包头包含固定的20字节+可选的4字节,至少20字节

         用户数据就是用户能够感知到的数据内容了,如果直接使用socket,就是用户感知的数据;如果使用httpmqttssl,这部分数据就不是用户能够感知的原始数据了,http会加上http包头,mqtt会加入mqtt的包裹部分,ssl会加密数据

         tcp数据收发时,有ack确认机制,例如设备发数据给服务器后,还会收到服务器返回的tcp ack包,这个tcp ack包(至少40字节)也是计算在流量之内的。接收到服务器下发的数据时,设备也会回复一个tcp ack包,同样这个ack包仍然计算在流量之内

         另外,socket连接以及断开连接,都有多次数据收发,这部分也会消耗流量

         例如有一个tcp socket连接,连接成功后,每分钟设备发送2字节的心跳数据到服务器,服务器收到数据后,再回复2字节的心跳应答数据。这个过程中,每分钟消耗的流量至少有42(设备发送)+40(服务器回复ack+42(服务器发送)+40(设备回复ack=164字节,实际处理中,服务器回复ack和服务器发送可能合并成一个IP42字节,这样的话,至少也要42+42+40 = 124字节。这是最简单的算法,实际应用中,还要考虑到重传、包头中的可选字节,应该会比这里计算的流量多一些。如果要准确计算,建议在服务器端用wireshark抓包分析

         另外一个常见的例子是,为什么通过http下载一个文件,实际消耗的流量比文件本身要多呢?跟上个例子类似,文件本身大小仅仅是用户数据,除了用户数据外,还有如下几部分的流量消耗:

1.      连接服务器消耗流量

2.      http请求时有http头,服务器下发数据时也有http

3.      每包数据都有tcp头和ip

4.      重传也会消耗流量

5.      与服务器断开连接也需要消耗流量

12.14、是否支持IPv6

         2G模块不支持IPv6

         4G模块支持IPv6协议,rndisppp应用也支持了IPv6,但是Luat版本二次开发和AT版本tcphttpmqtt指令没有使用IPv6

12.15、模块IP地址

         模块激活pdp后,模块端显示的ip地址是运营商分配的内网ip

         模块与服务器连接成功后,在服务器端显示的ip地址是运营商分配的公网ip地址

         对于同一个模块来说,这两个ip地址都是会变化的,例如同一个模块:

1.      第一次激活pdp后,模块端显示的ip地址为:10.155.141.25,与服务器连接成功后,服务器端显示此模块的ip地址和端口为:117.132.197.166:48191,与服务器断开再重连服务器,此时服务器端显示此模块的ip地址和端口为:117.132.197.166:48492

2.      pdp主动去激活,然后再重新激活,模块端显示的ip地址为:10.41.220.39,与服务器连接成功后,服务器端显示此模块的ip地址和端口为:221.178.127.225:40876,与服务器断开再重连服务器,此时服务器端显示此模块的ip地址和端口为:221.178.127.225:40787

         所以这两种ip地址,对模块来说没有多大意义,不要用他们来标识模块,如果要标识模块,请使用模块imei

  • 发表于 2019-10-29 17:09
  • 阅读 ( 190 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

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

软件工程师

15 篇文章

作家榜 »

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