android pppd流程,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程序的
android pppd流程,pppd调试心得.md相关推荐
- android的底层驱动调试心得
文章目录 一.串口 二.查看gpio的状态 三.gpio的计算 四.调试背光 五.调试屏幕 六.摄像头调试 一.串口 1.验证小系统是否跑起来,如果没反应,可以多尝试几个串口,有的串口可能不支持这个, ...
- android 启动流程
Android系统启动流程 -- bootloader 摘要:本文讲解Android系统在启动过程中的关键动作,摈弃特定平台之间的差异,讨论共性的部分,至于启动更加详细的过程,需要结合代码分析, ...
- Android系统启动流程 -- bootloader
Android系统启动流程 -- bootloader BootLoader:在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系 ...
- Android系统启动流程(nougat7.1.1_r6)
一.Android启动简介 Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建.下图所示为 Android 平台的主要组件. Linux 内核 Android 平台的 ...
- Android FrameWork学习(二)Android系统源码调试
点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...
- Android构建流程——篇一
Android构建流程 前言 APK 构建流程 AGP(3.2.0)任务列表总览图 参考文献 前言 大家平时开发Android项目时一般都是点击AS run按钮,这样apk会自动安装到手机上,这整个过 ...
- Qt on Android:将Qt调试信息输出到logcat中
版权全部 foruok .如需转载敬请注明出处(http://blog.csdn.net/foruok). 假设你在目标 Android 设备上执行了 Qt on Android 应用,你可能希望看到 ...
- android 上网流程 ppp,Android/Linux ppp拨号流程
PPP协议及工作流程 1. ppp协议介绍 PPP(Point- to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议.这种链路提供全双工操作,并按 ...
- Android系统启动流程—— init进程zygote进程SystemServer进程启动流程
原文地址:https://blog.csdn.net/qq_30993595/article/details/82714409 Android系统启动流程 Android系统启动过程往细了说可以分为5 ...
最新文章
- 数据挖掘·数据变换与离散化·概念分层与离散化·3-4-5规则
- 用边缘计算为智能制造提速,行业的破局者是他们
- UA OPTI501 电磁波 Lorentz Oscillator Model 4 Hilbet变换与Kramers-Konig关系式
- QA:智能布线系统二十问
- 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边
- 加载数据时,页面显示正在加载的动画,支持移动端
- hujingwei oracle_Oracle收缩表空间
- 【Machine Learning 六】梯度下降法(基于Matlab 求函数最小值)
- git分支添加访问权限
- [转]OpenCV学习笔记大集锦
- 题解【51nod 1290 Counting Diff Pairs】
- 广工c语言试卷504,广工C语言试卷与答案.doc
- 全国计算机等级考试三级数据库技术考试大纲(2018 年版)
- 如何使用dosbox运行程序——步骤详解
- web编程1–用户注册之文本框应用,coon连接,存入mysql
- 有没有能排列待办事项无广告的Windows版便签软件推荐
- 微信扫码(扫一扫二维码)下载不了app怎么解决
- 【外网不好用】可以尝试添加dns即可解决上不去外网的问题。
- w7设置双显示器_win7系统设置双显示器的操作方法
- 985学霸总结的《优雅的Python》火了,完整版开放下载!