移远官网

Linux中,第二次以及以后使用quectel-CM拨号程序无法获取到ip地址(EC801E模块)

在linux中运行quectel-CM拨号程序,刚开机第一次一定能够成功,但是第二次和之后就再也获取不到ip地址了,具体输出的日志如下:

[11-13_13:51:13:396] QConnectManager_Linux_V1.6.7
[11-13_13:51:13:399] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x903, bus=0x001, dev=0x006
[11-13_13:51:13:400] Auto find qmichannel = /dev/ttyUSB1
[11-13_13:51:13:400] Auto find usbnet_adapter = usb0
[11-13_13:51:13:401] netcard driver = cdc_ether, driver version = 22-Aug-2005
[11-13_13:51:13:401] Modem works in ECM_RNDIS_NCM mode
[11-13_13:51:13:439] atc_fd = 7
[11-13_13:51:13:439] AT> ATE0Q0V1
[11-13_13:51:13:442] AT< OK
[11-13_13:51:14:442] AT> AT+QCFG="usbnet"
[11-13_13:51:14:444] AT< +QCFG: "usbnet",1
[11-13_13:51:14:444] AT< OK
[11-13_13:51:14:444] AT> AT+QNETDEVCTL=?
[11-13_13:51:14:446] AT< +QNETDEVCTL: (0,1,3),(1-15),(0-1)
[11-13_13:51:14:446] AT< OK
[11-13_13:51:14:446] AT> AT+CGREG=2
[11-13_13:51:14:448] AT< OK
[11-13_13:51:14:448] AT> AT+CEREG=2
[11-13_13:51:14:449] AT< OK
[11-13_13:51:14:450] AT> AT+C5GREG=2
[11-13_13:51:14:451] AT< ERROR
[11-13_13:51:14:451] AT> AT+QNETDEVSTATUS=?
[11-13_13:51:14:452] AT< ERROR
[11-13_13:51:14:453] AT> AT+QCFG="NAT"
[11-13_13:51:14:454] AT< +QCFG: "nat",1
[11-13_13:51:14:454] AT< OK
[11-13_13:51:14:454] AT> AT+CGMR
[11-13_13:51:14:456] AT< EC801ECNCGR03A04M02
[11-13_13:51:14:456] AT< OK
[11-13_13:51:14:456] AT> AT+CPIN?
[11-13_13:51:14:458] AT< +CPIN: READY
[11-13_13:51:14:458] AT< OK
[11-13_13:51:14:458] AT> AT+QCCID
[11-13_13:51:14:460] AT< +QCCID: 89860812192370591758
[11-13_13:51:14:460] AT< OK
[11-13_13:51:14:460] requestGetICCID 89860812192370591758
[11-13_13:51:14:461] AT> AT+CIMI
[11-13_13:51:14:462] AT< 460088243901758
[11-13_13:51:14:462] AT< OK
[11-13_13:51:14:462] requestGetIMSI 460088243901758
[11-13_13:51:14:463] AT> AT+QICSGP=1
[11-13_13:51:14:465] AT< +QICSGP: 1,"","","",0
[11-13_13:51:14:465] AT< OK
[11-13_13:51:14:466] requestGetProfile[1] ///0/IPV4
[11-13_13:51:14:466] AT> AT+COPS=3,0;+COPS?;+COPS=3,1;+COPS?;+COPS=3,2;+COPS?
[11-13_13:51:14:470] AT< +COPS: 0,0,"CHINA MOBILE",7
[11-13_13:51:14:470] AT< +COPS: 0,1,"CMCC",7
[11-13_13:51:14:471] AT< +COPS: 0,2,"46000",7
[11-13_13:51:14:471] AT< OK
[11-13_13:51:14:471] AT> AT+CEREG?
[11-13_13:51:14:473] AT< +CEREG: 2,1,"821A","5D51281",7
[11-13_13:51:14:473] AT< OK
[11-13_13:51:14:473] AT> AT+QNETDEVCTL?
[11-13_13:51:14:475] AT< +QNETDEVCTL: 0,0,0,0
[11-13_13:51:14:476] AT< OK
[11-13_13:51:14:476] AT> at+cops?
[11-13_13:51:14:478] AT< +COPS: 0,2,"46000",7
[11-13_13:51:14:478] AT< OK
[11-13_13:51:14:478] AT> at+qeng="servingcell"
[11-13_13:51:14:481] AT< +QENG: "servingcell","NOCONN","LTE","TDD",460,00,5D51281,394,38400,39,5,5,821A,-75,-6,-49,22,53
[11-13_13:51:14:481] AT< OK
[11-13_13:51:14:482] ip addr flush dev usb0
[11-13_13:51:14:498] ip link set dev usb0 down
[11-13_13:51:14:515] AT> AT+CGACT?
[11-13_13:51:14:517] AT< +CGACT: 1,1
[11-13_13:51:14:517] AT< +CGACT: 2,0
[11-13_13:51:14:517] AT< OK
[11-13_13:51:14:517] AT> AT+QNETDEVCTL=1,1,1
[11-13_13:51:14:521] AT< OK
[11-13_13:51:14:521] AT> AT+CGPADDR=1
[11-13_13:51:14:641] AT< +QNETDEVSTATUS: 1
[11-13_13:51:14:724] AT< +CGPADDR: 1,"10.157.100.235"
[11-13_13:51:14:724] AT< OK
[11-13_13:51:14:724] requestGetIPAddress 10.157.100.235
[11-13_13:51:14:724] AT> at+cops?
[11-13_13:51:14:726] AT< +COPS: 0,2,"46000",7
[11-13_13:51:14:726] AT< OK
[11-13_13:51:14:727] AT> at+qeng="servingcell"
[11-13_13:51:14:730] AT< +QENG: "servingcell","NOCONN","LTE","TDD",460,00,5D51281,394,38400,39,5,5,821A,-76,-6,-49,25,52
[11-13_13:51:14:730] AT< OK
[11-13_13:51:14:730] AT> AT+QNETDEVCTL?
[11-13_13:51:14:732] AT< +QNETDEVCTL: 1,1,1,1
[11-13_13:51:14:732] AT< OK
[11-13_13:51:14:732] AT> AT+CGACT?
[11-13_13:51:14:734] AT< +CGACT: 1,1
[11-13_13:51:14:734] AT< +CGACT: 2,0
[11-13_13:51:14:734] AT< OK
[11-13_13:51:14:735] ip link set dev usb0 up
[11-13_13:51:14:760] busybox udhcpc -f -n -q -t 5 -i usb0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: no lease, failing
[11-13_13:51:30:346] ERROR: IP from udhcpc (0.0.0.0) is different to IP from ATC (10.157.100.235)!
[11-13_13:51:30:347] netcard carrier = 0
[11-13_13:51:30:347] AT> at+cops?
[11-13_13:51:30:349] AT< +COPS: 0,2,"46000",7
[11-13_13:51:30:349] AT< OK
[11-13_13:51:30:349] AT> at+qeng="servingcell"
[11-13_13:51:30:357] AT< +QENG: "servingcell","NOCONN","LTE","TDD",460,00,5D51281,394,38400,39,5,5,821A,-72,-6,-46,30,56
[11-13_13:51:30:357] AT< OK
[11-13_13:51:30:357] AT> AT+QNETDEVCTL?
[11-13_13:51:30:359] AT< +QNETDEVCTL: 1,1,1,1
[11-13_13:51:30:359] AT< OK
[11-13_13:51:30:360] AT> AT+CGACT?
[11-13_13:51:30:361] AT< +CGACT: 1,1
[11-13_13:51:30:362] AT< +CGACT: 2,0
[11-13_13:51:30:362] AT< OK
[11-13_13:51:45:377] AT> at+cops?
[11-13_13:51:45:379] AT< +COPS: 0,2,"46000",7
[11-13_13:51:45:379] AT< OK
[11-13_13:51:45:379] AT> at+qeng="servingcell"
[11-13_13:51:45:395] AT< +QENG: "servingcell","NOCONN","LTE","TDD",460,00,5D51281,394,38400,39,5,5,821A,-80,-9,-50,11,48
[11-13_13:51:45:395] AT< OK
[11-13_13:51:45:395] AT> AT+QNETDEVCTL?
[11-13_13:51:45:397] AT< +QNETDEVCTL: 1,1,1,1
[11-13_13:51:45:397] AT< OK
[11-13_13:51:45:397] AT> AT+CGACT?
[11-13_13:51:45:399] AT< +CGACT: 1,1
[11-13_13:51:45:399] AT< +CGACT: 2,0
[11-13_13:51:45:399] AT< OK
[11-13_13:52:00:405] AT> at+cops?
[11-13_13:52:00:407] AT< +COPS: 0,2,"46000",7
[11-13_13:52:00:407] AT< OK
[11-13_13:52:00:408] AT> at+qeng="servingcell"
[11-13_13:52:00:418] AT< +QENG: "servingcell","NOCONN","LTE","TDD",460,00,5D51281,394,38400,39,5,5,821A,-76,-7,-49,28,52
[11-13_13:52:00:418] AT< OK
[11-13_13:52:00:418] AT> AT+QNETDEVCTL?
[11-13_13:52:00:420] AT< +QNETDEVCTL: 1,1,1,1
[11-13_13:52:00:420] AT< OK
[11-13_13:52:00:420] AT> AT+CGACT?
[11-13_13:52:00:422] AT< +CGACT: 1,1
[11-13_13:52:00:422] AT< +CGACT: 2,0
[11-13_13:52:00:422] AT< OK

[11-13_13:51:14:735] ip link set dev usb0 up
[11-13_13:51:14:760] busybox udhcpc -f -n -q -t 5 -i usb0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: no lease, failing

确实出问题了。

1, 先给模块发AT命令断开拨号看看是否可以修复问题;
2. 检查下除了第一路之外有没有发起拨号;

你好,我这边没有太理解到你给出的方案的具体操作方法
1.AT断开拨号具体是指哪一步呢,我这边通过手动终止quectel-CM拨号程序来关闭,上面输出显示正常关闭了已经,并且也成功关闭了对应接口,这样能算是断开拨号了吗;主要是我没有在AT手册中找到“断开拨号”这个操作指令
2.其他路的话,在quectel-CM过程中我用QNETDEVCTL检查,结果如下:
+QNETDEVCTL: 1,1,1,1
OK
这说明只有一路对吗

  1. 先发送AT+QNETDEVCTL=0,1,0 然后再启动quectel-CM。
    如果有效可以将这个指令加到quectel-CM里去。

  2. 拨号之前,先查询下
    AT+CGACT?
    AT+CGPADDR

1.我这里执行在拨号启动之前执行AT+QNETDEVCTL=0,1,0 是返回ERROR的,好像必须提前激活之后才能失活,具体交互信息如下:
这里我先尝试010去失活,但是报错,然后尝试先激活再失活就返回ok,但是结果是拨号依然无法获取到ip


OK
AT+QNETDEVCTL?
+QNETDEVCTL: 0,0,0,0

OK
AT+QNETDEVCTL=0,1,0
ERROR
AT+QNETDEVCTL=1,1,1
OK

+QNETDEVSTATUS: 1
AT+QNETDEVCTL=0,1,0
OK
AT+QNETDEVCTL?
+QNETDEVCTL: 0,0,0,0

OK

2.拨号前检查ACT和ADDR如下:

AT+CGACT?
+CGACT: 1,1
+CGACT: 2,0

OK
AT+CGPADDR
+CGPADDR: 1,"10.159.94.5"
+CGPADDR: 2,"0.0.0.0"

OK

排除下quectel-CM的问题。
直接自己用AT指令测试呢。
AT+CGDCONT=1,“IP”,“cmnet”
AT+QNETDEVCTL=1,1,1
然后就可以用busybox udhcpc -i usb0

传参的时候带上APN

你好,这是测试情况,以及我还有几个疑问
1.(测试反馈)在quectelCM无法正常获取ip的情况下,用AT主动交互AT+QNETDEVCTL=1,1,1,然后手动udhcpc是能够获取到的。
2.(疑问)我这里直接配置AT+CGDCONT=1,“IP”,“cmnet”会报错,如下,这是因为PDP已经激活不能更改的状态吗

AT+CGDCONT=1,“IP”,“cmnet”
+CME ERROR: 50

3.(疑问)关于QNETDEVCTL命令的使用,这个应该是用指定的PDP去拨号对吧,我发现quectelCM每次会去查拨号情况然后进行对应配置,但是为什么每次结束quectelCM程序后,QNETDEVCTL进行检查都是没有激活的状态,这是quectelCM里面逻辑设计的关闭拨号程序会让拨号失活吗?
4.(疑问)APN一定要设置进PDP里面吗,我是用quectelCM拨号的,我需要配APN的时候我会在后面跟参数-s然后带上apn配置,这样也是正确的一个使用方法对吧?因为我看quectelCM输出的日志,这样去设置apn也是正常运行的。
5.(疑问)根据第1点的测试结果,这个应该是quectelCM拨号程序的问题?,目前版本是1.6.7,之前我用过1.6.1,印象里面1.6.1没有出现过这种情况,但是因为1.6.1我没有源码,所以后面下载的1.6.7的源码修改了device配置的模组后再编译的,不过拨号逻辑我没有改动过,你们那边测试1.6.7会出现这个问题吗。

以上是一些测试反馈和疑问,希望能帮忙解答一下,谢谢 :pray:

AT+CGDCONT? 先查询下第一路是否配置了APN。
是否有相同的APN。
有的模组不允许使用相同的APN。
先不要用quectel-CM,先使用AT指令测试,quectel-CM的是可以自己优化去改的。
quectel-CM -s APN,带上APN。有的不带上APN也会有这样的问题。
你可以试下1.6.1 多测试几次看看。

AT+CGDCONT?
+CGDCONT: 1,"IP","","0.0.0.0",0,0,0,0
+CGDCONT: 2,"IP","cmnet","0.0.0.0",0,0,0,0

OK

目前配置是这样的,我现在去把801E加到1.6.1里面测一下试试

现在这个问题应该是APN没有配置下去。

AT+CGDCONT=2
先清掉第二路的APN然后再试试配置第一路的APN。

好的,我清除试试,但是有个疑问,不是应该不配apn也能正常连接么?一定要把APN配上吗

有的是必须配置上APN才行。

噢噢 好的。
目前的话调整了PDP,删除了第二路,第一路配置了APN

AT+CGDCONT?
+CGDCONT: 1,"IP","cmnet","0.0.0.0",0,0,0,0

OK

不过还是一样的情况,无法获取ip,现在我准备尝试换成1.6.1再看看

V1.6.1编出来后简单测试了一下,多次断开连接都是ok的,每次都能获取到ip
V1.6.7不行,不知道是这个版本问题 还是说和801E不太匹配

1.6.5 版本里增加了一个
ERROR: IP from udhcpc (0.0.0.0) is different to IP from ATC (10.157.100.235)!
我建议是不要用quectel-CM,直接手动测试,看看是否有问题。

ERROR: IP from udhcpc (0.0.0.0) is different to IP from ATC (10.157.100.235)!
虽然加了这个判定,但是这个应该是判断udhcpc没有获取到地址时候才会触发叭,他是影响udhcpc获取ip的关键因素吗,因为能够获取到的时候并不会触发这个ERROR

所以不要用quectel-CM。
用AT指令测试,
移远不再提供非QMI拨号的quectel-CM使用。请自己用AT测试,找出问题。

我用的就是QMI_WWAN :face_with_raised_eyebrow:。还有就是AT单独测没啥问题,是正常的。