EC20 pppd脚本2分钟modem hangup

/etc/ppp# pppd call quectel-ppp
pppd options in effect:
debug # (from /etc/ppp/peers/quectel-ppp)
nodetach # (from /etc/ppp/peers/quectel-ppp)
persist # (from /etc/ppp/peers/quectel-ppp)
dump # (from /etc/ppp/peers/quectel-ppp)
noauth # (from /etc/ppp/peers/quectel-ppp)
user test # (from /etc/ppp/peers/quectel-ppp)
password ??? # (from /etc/ppp/peers/quectel-ppp)
remotename cmnet # (from /etc/ppp/peers/quectel-ppp)
/dev/ttyUSB3 # (from /etc/ppp/peers/quectel-ppp)
115200 # (from /etc/ppp/peers/quectel-ppp)
nolock # (from /etc/ppp/peers/quectel-ppp)
connect chat -s -v -f /etc/ppp/peers/quectel-chat-connect # (from /etc/ppp/peers/quectel-ppp)
disconnect chat -s -v -f /etc/ppp/peers/quectel-chat-disconnect # (from /etc/ppp/peers/quectel-ppp)
crtscts # (from /etc/ppp/peers/quectel-ppp)
modem # (from /etc/ppp/peers/quectel-ppp)
novj # (from /etc/ppp/peers/quectel-ppp)
novjccomp # (from /etc/ppp/peers/quectel-ppp)
ipcp-accept-local # (from /etc/ppp/peers/quectel-ppp)
ipcp-accept-remote # (from /etc/ppp/peers/quectel-ppp)
ipparam cmnet # (from /etc/ppp/peers/quectel-ppp)
noipdefault # (from /etc/ppp/peers/quectel-ppp)
ipcp-max-failure 30 # (from /etc/ppp/peers/quectel-ppp)
defaultroute # (from /etc/ppp/peers/quectel-ppp)
noccp # (from /etc/ppp/peers/quectel-ppp)
abort on (BUSY)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
send (!/etc/ppp/ec200s_repower.sh^M)
abort on (NO ANSWER)
timeout set to 5 seconds
send (AT^M)
expect (OK)
^M
OK
– got it

send (ATE0^M)
expect (OK)
^M
^M
OK
– got it

send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M)
expect (OK)
^M
^M
Quectel^M
EC20F^M
Revision: EC20CEHDLGR08A03M1G^M
^M
SubEdition: V01^M
^M
+CSQ: 31,99^M
^M
+CPIN: READY^M
^M
+COPS: 0,0,“CHINA MOBILE”,7^M
^M
+CGREG: 0,1^M
^M
OK
– got it

send (AT+CGDCONT=1,“IP”,“cmnet”,0,0^M)
expect (OK)
^M
^M
OK
– got it

send (ATD99**1#^M)
expect (CONNECT)
^M
^M
CONNECT
– got it

Script chat -s -v -f /etc/ppp/peers/quectel-chat-connect finished (pid 7457), status = 0x0
Serial connection established.
using channel 6
Using interface ppp0
Connect: ppp0 ↔ /dev/ttyUSB3
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa2bb9c04> ]
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x5677e7ab> ]
sent [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x5677e7ab> ]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xa2bb9c04> ]
rcvd [LCP DiscReq id=0x3 magic=0x5677e7ab]
rcvd [CHAP Challenge id=0x1 , name = “UMTS_CHAP_SRVR”]
sent [CHAP Response id=0x1 <6936ba5ff4b0cc2324480629cb849a90>, name = “test”]
rcvd [CHAP Success id=0x1 “”]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]
rcvd [IPCP ConfReq id=0x2]
sent [IPCP ConfNak id=0x2 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.159.182.209>]
sent [IPCP ConfReq id=0x2 <addr 10.159.182.209>]
rcvd [IPCP ConfReq id=0x3]
sent [IPCP ConfAck id=0x3]
rcvd [IPCP ConfAck id=0x2 <addr 10.159.182.209>]
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing default route to wwan0 [10.139.45.32]
local IP address 10.159.182.209
remote IP address 10.64.64.64
Script /etc/ppp/ip-up started (pid 7491)
Script /etc/ppp/ip-up finished (pid 7491), status = 0x0
Modem hangup
Connect time 2.6 minutes.
Sent 0 bytes, received 0 bytes.
Script /etc/ppp/ip-down started (pid 11154)
Connection terminated.

这个log并无异常。
是不是ttyUSB3 又被什么程序抢走了

没有啊。我自己程序都关了。每次运行两分钟左右就停了。是不是板子上有quectel-CM,驱动把这个占掉了

lsof | grep ttyUSB
查询下。

只有pppd 没有别的了

image

还要看看,是不是有其他程序代码给模块发deactivate 了PDN#1.

没有啊。AT命令和GPIO信号都没给,和systemd的network和modem服务那些有关系吗。

这是什么系统?有ModemManager,停掉了吗?

ubuntu 18.04 .停掉了ModemManager

正常是没有问题的。可以对比在windows 上也看看。这种情况可能要抓日志看看了。

static int fd = -1;
struct termios options;
if (fd <= 0) {
fd = open(“/dev/ttyUSB2”, O_RDWR | O_NOCTTY);
}
// if (fd < 0)
// fd = open(“/dev/ttyUSB4”, O_RDWR | O_NOCTTY);
if (fd < 0) {
log_error(“Error opening serial port”);
info4G.run_state = ec200s_state_close;
return -1;
}

// 配置串口
tcgetattr(fd, &options);
cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag |= ~OPOST;
options.c_cflag |= (CLOCAL | CREAD); 
cfmakeraw(&options);
tcsetattr(fd, TCSANOW, &options);

如果我用quectel-CM。它占用的是哪个串口,我的进程需要用另一个串口AT来读网络状态。或者有什么别的方法来读。我现在试了ttyUSB2和ttyUSB3 ,运行了几十秒,usb设备文件就不见了,

如果使用EC20,quectel-CM 是不会占用ttyUSB的。
那你的描述看,我怀疑存在USB Disconnect,请检查下内核日志。

确定日志里有usb disconnected。quectel-CM连接之后,我要怎么查询网络状态,只有ttyUSB这个途径吗

quectel-CM 本身是可以打印出网络状态的。可以通过quectel-CM