pppd调试心得.md
描述
- pppd是用于驱动3g模块的一种方式,其本质是和运营商APN协商,建立连接
- 其与运营商之间使用ppp协议,而用户在应用层使用系统提供的socket即可,从而忽略底层使用的时何种接口的设备,避免因硬件不同而造成应用程序不同
pppd的命令一般 为
pppd call [option]
进入pppd程序之后,可能会占用前台,此时使用CTRL-C推出,同时也会结束pppd,或在命令后加上'&',让其在另一个线程运行,防止控制台被占用
流程
我归类为两个过程:
- chat
- ppp协商
chat
- 使用AT指令,使模块连接到制定APN,并进入PPP模式
我分享下自己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接口上网
其中:
- AT+COPS?可以获取运营商
- AT+CGREG? 可以查看模块是否已经注网,回复+CGREG: 0,1 表示已经注册上网了
- AT+CGDCONT是设置APN的命令,因为不同运营商的APN不同,而使用错误的运营商可能导致卡被锁
- ATDT命令是拨号命令 *99#是号码,我实验时移动/联通用这个号码都可以上网
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程序的
pppd调试心得.md的更多相关文章
- LPC2478_调试心得(转)
1.在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2 ...
- MIPI接口LCD屏调试心得(转)
源: MIPI接口LCD屏调试心得
- VGA调试心得
以前自己调试过视频信号,无非就时钟加行场同步加数据线,如果视频信号出问题,第一看现象,第二测频率,反正出问题不是消隐信号出问题,就是时钟频率出问题.通过这种方式也调试成功过几个显示屏,然后就以为自己对 ...
- js断点调试心得
虽然网上已经有多的数不清的调试教程了,但仍然没有发现哪篇文章写的通俗易懂,索性自己尝试写写自己的一些使用习惯或者说是心得,希望对那些还不是很懂得使用断点调试的孩子有一些帮助(大神请无视~). 1.断点 ...
- React Native调试心得
在做React Native开发时,少不了的需要对React Native程序进行调试.调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率.本文将向大家分享React Na ...
- Pycharm Debug调试心得
1.操作步骤: 1-1.添加断点:直接在标记处点击鼠标左键即可.(删除断点只需再点击断点处即可) 1-2.Debug下运行代码 1-3.按照所需调试进行代码调试.Debug的调试方式如下所示: 分别为 ...
- IE漏洞的调试心得
在调试漏洞的过程中,个人感觉最棘手的就是ie浏览器的漏洞和flash player的漏洞了.这里打算记录一下学习过程中的心得(主要是基于uaf类),以方便新人学习. 首先,ie漏洞与众不同的是,程序的 ...
- iOS 调试心得
修复 bug 占用我们日常开发的大部分时间,熟练的使用调试工具可以给我们节约大部分的时间. LLDB 的常用命令 expression expresion 是一个非常常用的命令,我们可以通过这个命令来 ...
- (原)阅读Android-Camera2Video的demo源码和调试心得
转载请注明出处:http://www.cnblogs.com/lihaiping/p/6142512.html 最近因为项目需要使用到camera的功能,所以针对官方的demo源码进行一番阅读,并 ...
随机推荐
- app开屏广告
最近公司有个需求需要做app开屏广告(跳转到不同的页面)--下面是app开屏广告的处理 1.管理后台效果图 (1)广告链接--商品详情 (2)广告链接--关联模块 (3)广告链接--消息富文本 (4) ...
- 069、Java面向对象之对象引用传递
01.代码如下: package TIANPAN; class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 public ...
- C# FTp 上传,下载
public class FtpHelper { string ftpServerIP; string ftpRemotePath; string ftpUserID; string ftpPassw ...
- poj2236 Wireless Network(并查集直接套模板
题目地址:http://poj.org/problem?id=2236 题目大意:n台电脑都坏了,只有距离小于d且被修好的电脑才可以互相联系,联系可传递.输入n和d,n个点的坐标x y.两个操作:O ...
- php 打印格式化显示利器 <pre>
当我们PHP调试的时候,用var_dump 或 print_r打印json数据或array数组时,html页面没有换行显示,看到的内容一大堆,不好定位. 输出前添加 <pre>,便可以自动 ...
- python表白实现代码(可视化与动画版)
python表白实现代码(可视化与动画版)如何优雅而又高大上地对自己的心爱女神表白了? ? ? 试试python表白的实现方式吧,是动画版的哦,保证可以如你所愿 ! ! !最终的实现效果如下: 具体实 ...
- 2017北京网络赛 F Secret Poems 蛇形回路输出
#1632 : Secret Poems 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The Yongzheng Emperor (13 December 1678 – ...
- 在线关闭 CLOSE_WAIT状态TCP连接
1.查看某个端口的所有TCP连接: [root@Centos projects]# netstat -anp | tcp6 ::: :::* LISTEN /java tcp6 CLOSE_WAIT ...
- zabbix 监控linux tcp连接数
zabbix 监控linux tcp连接数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP的状态概述 1>.端口状态转换 2>.TCP 三次握手 3>. ...
- ZCGL项目解析——概述
模块清单 微服务模块:routeservice.eurekaservice.configservice 数据服务模块:fdfsservice.hbaseservice 工具服务模块:common 系统 ...