pppd的命令一般 为
pppd call [option]
进入pppd程序之后,可能会占用前台,此时使用CTRL-C推出,同时也会结束pppd,或在命令后加上'&',让其在另一个线程运行,防止控制台被占用
我归类为两个过程:
我分享下自己chat脚本:
quectel-chat-connect
#!/bin/sh
exec /opt/usr/bin/chat -s -v \
ABORT "BUSY" \
ABORT "NO CARRIER" \
ABORT "NO DIALTONE" \
ABORT "NO ANSWER" \
TIMEOUT 5 \
"" AT \
'OK-+++\c-OK' ATE0 \
OK ATI \
OK AT+CSQ \
OK AT+CPIN? \
OK AT+COPS? \
OK AT+CGREG? \
0,1 AT+CGDCONT=1,"IP","$LTE_APN",,0,0 \
OK ATDT*99# \
CONNECT
quectel-chat-disconnect
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
"" +++ATH
SAY "\nGood bye\n"
获取IP成功之后,设备即可通过ppp接口上网
其中:
ppp协商时与APN服务器进行协商,确定通讯时使用的参数并且获取本机IP
quectel-ppp
hide-password
noauth
connect /etc/ppp/peers/quectel-chat-connect
disconnect '/opt/usr/bin/chat -E -s -v -f /etc/ppp/peers/quectel-chat-disconnect'
debug
/dev/ttyUSB2
19200
# If you want to use the HSDPA link as your gateway
defaultroute
# pppd must not propose any IP address to the peer
noipdefault
# No ppp compression
novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local
# For sanity, keep a lock on the serial line
lock
dump
logfile /var/log/pppd_log
-detach
# retry when failed
persist
maxfail 10
user "test" password "test"
crtscts
remotename 3gppp
ipparam 3gppp
# Ask the peer for up to 2 DNS server addresses
usepeerdns
其中:
prsist 是重连参数,maxfail设置最大重连次数
-detach 设置ppp为后台运行,不会打印和接收SIG信号,若使用nodetach则在前台运行,会答应和接收SIG信号
我的工作流程时每次pppd拨号之前会先拉4G模块的RESET重启模块,过1s再拉高(因为发现模块之后在重新上电或重启之后才会取读SIM卡)
再过15s,开始拨号,因为模块重启之后,系统会需要进行USB的重新枚举,这需要一段时间
执行pppd call quectel-ppp进行ppp连接,此时如过卡注网较慢,可能会第一次注网失败,指示,pppd option中的persist就发挥作用了,其会在失败之后15s进行重试,一般这时模块已经注网了,这样模块就成功连接上网络了
而APN,我则是通过LTE_APN=CMNET,以shell脚本内部变量的方式传递给pppd程序的
手机扫一扫
移动阅读更方便
你可能感兴趣的文章