描述

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相关推荐

  1. android的底层驱动调试心得

    文章目录 一.串口 二.查看gpio的状态 三.gpio的计算 四.调试背光 五.调试屏幕 六.摄像头调试 一.串口 1.验证小系统是否跑起来,如果没反应,可以多尝试几个串口,有的串口可能不支持这个, ...

  2. android 启动流程

     Android系统启动流程 -- bootloader 摘要:本文讲解Android系统在启动过程中的关键动作,摈弃特定平台之间的差异,讨论共性的部分,至于启动更加详细的过程,需要结合代码分析, ...

  3. Android系统启动流程 -- bootloader

    Android系统启动流程 -- bootloader   BootLoader:在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系 ...

  4. Android系统启动流程(nougat7.1.1_r6)

    一.Android启动简介 Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建.下图所示为 Android 平台的主要组件. Linux 内核 Android 平台的 ...

  5. Android FrameWork学习(二)Android系统源码调试

    点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...

  6. Android构建流程——篇一

    Android构建流程 前言 APK 构建流程 AGP(3.2.0)任务列表总览图 参考文献 前言 大家平时开发Android项目时一般都是点击AS run按钮,这样apk会自动安装到手机上,这整个过 ...

  7. Qt on Android:将Qt调试信息输出到logcat中

    版权全部 foruok .如需转载敬请注明出处(http://blog.csdn.net/foruok). 假设你在目标 Android 设备上执行了 Qt on Android 应用,你可能希望看到 ...

  8. android 上网流程 ppp,Android/Linux ppp拨号流程

    PPP协议及工作流程 1. ppp协议介绍 PPP(Point- to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议.这种链路提供全双工操作,并按 ...

  9. Android系统启动流程—— init进程zygote进程SystemServer进程启动流程

    原文地址:https://blog.csdn.net/qq_30993595/article/details/82714409 Android系统启动流程 Android系统启动过程往细了说可以分为5 ...

最新文章

  1. 数据挖掘·数据变换与离散化·概念分层与离散化·3-4-5规则
  2. 用边缘计算为智能制造提速,行业的破局者是他们
  3. UA OPTI501 电磁波 Lorentz Oscillator Model 4 Hilbet变换与Kramers-Konig关系式
  4. QA:智能布线系统二十问
  5. 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边
  6. 加载数据时,页面显示正在加载的动画,支持移动端
  7. hujingwei oracle_Oracle收缩表空间
  8. 【Machine Learning 六】梯度下降法(基于Matlab 求函数最小值)
  9. git分支添加访问权限
  10. [转]OpenCV学习笔记大集锦
  11. 题解【51nod 1290 Counting Diff Pairs】
  12. 广工c语言试卷504,广工C语言试卷与答案.doc
  13. 全国计算机等级考试三级数据库技术考试大纲(2018 年版)
  14. 如何使用dosbox运行程序——步骤详解
  15. web编程1–用户注册之文本框应用,coon连接,存入mysql
  16. 有没有能排列待办事项无广告的Windows版便签软件推荐
  17. 微信扫码(扫一扫二维码)下载不了app怎么解决
  18. 【外网不好用】可以尝试添加dns即可解决上不去外网的问题。
  19. w7设置双显示器_win7系统设置双显示器的操作方法
  20. 985学霸总结的《优雅的Python》火了,完整版开放下载!

热门文章

  1. 华为是ICT人才培养的“黑土地”,谁又是浇水人呢?
  2. 读 python 机器学习实践指南
  3. Axure中继器组件的使用
  4. Android app反编译
  5. 橡胶接头分类和型号规格选择
  6. 渲染性能优化之Culling 剔除
  7. Typhon升级到5.8,编译原来程序出现提示:Compilation raised exception internally
  8. airsim-使用Image api保存机载摄像机的图片
  9. Baumer工业相机堡盟工业相机如何通过BGAPISDK显示彩色相机和黑白相机的图像(C#)
  10. 如何下载喜马拉雅里面的音频文件