借鉴于:EC20-4G模块使用AT指令分析设备网络异常原因_ec20模块连接不上 电信专网-CSDN博客
目录
一、简介
在调试4g模块的时候,我们手里的模块其实支持4种上网模式,分别是rmnet,ecm,mbim,rndis。
所以你需要确定你要使用哪种上网模式,这时就可以使用AT命令来切换。
二、模式的切换:
0:rmnet模式
通过QMI工具发的QMI命令,获取公网IP。这种模式可以配合usb_ecm驱动或高通GobiNet驱动使用。
1:ecm模式
通过标准的CDC-ECM发起data call,是发送标准的ECM命令,获取局域网ip。这种模式配合cdc_ether驱动使用
2:mbim模式
Mobile Broadband Interface Model,正宗的移动宽带接口模型,专门用于3G/4G/5G模块的,只在win8以上的windows上使用。一般只在WINDOWS下使用。
3:rndis模式
基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡获取局域网ip。这种方式最简单,模块插上手机卡之后,模块会自动拨号上网。
切换方法:
通过串口发送AT命令:
echo -e "AT+QCFG=\"usbnet\",0\r\n" > /dev/ttyUSB2 #设定模式0~3
echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2 #重启模块
将数字替换为对应模式的数字即可完成切换。
这里用到了"echo -e" 的格式命令,这对于操作设备的debug串口,和shell端来讲是必需的;不同于AT命令的指导文档,直接是输入"AT+XXX"这种,那是因为它是直接在安装好的at工具上输入的,如果你在shell端直接输入AT的命令,那一定会报错。
使用RNDIS模式时,可以使用以下命令设置连接APN:
echo -e "AT+CGDCONT=1,\"IPV4V6\",\"3gnet\"\r\n" > /dev/ttyUSB2 #设置上下文
echo -e "AT+CGACT=1,1\r\n" > /dev/ttyUSB2 #激活上下文
echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2 #重启模块
其实在切换成rndis的时候后,这3条我都没有用到,因为我在切换为rndis后,模块就没有正常加载了,只发现了ttyUSB0、ttyUSB1这2个,所以这3条根本没有用上。但是这时ifconfig -a却可以看到出现了usb0,wwan0,2个网口节点,而且都无法加载;并且想要切换回其他上网模式也切换不了了。(这里个人认为应该是模块内部的信息出问题了,得找厂商)
Tips 1
可通过网口节点的区别,来确认你的上网模式:
usb0 : 这里用到的是通过驱动cdc_ether来加载 ,一般是ecm模式;
wwan0 :这里用到的是通过驱动qmi_wwan来加载,一般是rmnet模式;
三、AT命令
有时在调试4G模块时,遇到模块无法联网的现象,不清楚具体的流程,没办法分析不同的场景问题时,下面推送了一些常用的AT命令来分析设备网络异常的原因,以下为实操,ec20为例:
1.查看版本,确认模块已开机-ATI,没有应答,请检查4g模块是否开机
vz_ds_k58:/ # cat /dev/ttyUSB2 & echo -e "ATI \r\n" > /dev/ttyUSB2
Quectel
EC20F
Revision: EC20CEHDLGR06A07M1G
OK
vz_ds_k58:/ #
2.查询SIM卡号,确认SIM卡检测正常-AT+ICCID
没有返回ICCID卡号的话,检查SIM卡是否接好
vz_ds_k58:/ # cat /dev/ttyUSB2 & echo -e "AT+ICCID \r\n" > /dev/ttyUSB2
OK
+ICCID: 89860118801073311905
OK
3.查询当前环境网络信号,确认信号正常
如果CSQ值偏低,请检查 设备当前所处的环境或者天线是否接好
vz_ds_k58:/ # echo -e "AT+CSQ \r\n" >/dev/ttyUSB2
vz_ds_k58:/ # cat /dev/ttyUSB2
+CSQ: 29,99 #第一个参数0-31, 越大越好
OK
4.查询网络设备商状态
如果返回失败的话,那么一般是 运营商基站不让连接;要咨询SIM卡商,SIM卡是否欠费或者被暂停使用
vz_ds_k58:/ # cat /dev/ttyUSB2 & echo -e "AT+COPS? \r\n" > /dev/ttyUSB2
+COPS: 0,0,"CHN-UNICOM",7
+COPS: 0,1,"UNICOM",7
OK
5.查询当前网络注册状态
如果返回失败,说明联网失败;请检查 CSQ信号或者COPS 状态;
这里可以类比一下手机为什么有时候不能联网
vz_ds_k58:/ # echo -e "AT+CGREG? \r\n" >/dev/ttyUSB2
+CGREG: 2,1,"770F","6DC6302",7 # 1-注册成功
OK
到这里的话,已经可以说明网络正常,可以正常收发数据了。
下面是专网卡,要看一下APN和IP,是否是专网预期的:
6.查询APN和IP
这里只需要关心你使用的cid 就行;比如我使用的是 cid-1,那么确认cid1的 APN和IP值正常
# 查询设备APN值
vz_k56_qipai:/ # echo -e "AT+CGDCONT? \r\n" >/dev/ttyUSB2
vz_k56_qipai:/ #
+CGDCONT: 1,"IP","ctnet","0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV4V6","ctwap","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
OK
# 查询设备IP值-AT+CGPADDR
vz_ds_k58:/ # echo -e "AT+CGPADDR \r\n" >/dev/ttyUSB2
vz_ds_k58:/ # +CGPADDR: 1,"10.2.231.173"
7.测试网络连接状态
这里有 +QPING 返回的话,则说明网络状态正常
AT+QPING=1,"192.168.1.165"
OK
+QPING: 0,"192.168.1.165",32,37,255
+QPING: 0,"192.168.1.165",32,54,255
+QPING: 0,"192.168.1.165",32,63,255
+QPING: 0,"192.168.1.165",32,55,255
+QPING: 0,4,4,0,37,63,52
第7步,这里若没有ping通,则返回的是error
Tips 2
CTNET #中国电信
UNIM2M #中国联通
CMIOT/CMMTM #中国移动4g/2g
右上角4g图标下拉后,可识别sim卡的区别