GPRS模块在Linux平台上ppp拨号上网总结与心得.docx
- 文档编号:3525835
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:22.24KB
GPRS模块在Linux平台上ppp拨号上网总结与心得.docx
《GPRS模块在Linux平台上ppp拨号上网总结与心得.docx》由会员分享,可在线阅读,更多相关《GPRS模块在Linux平台上ppp拨号上网总结与心得.docx(14页珍藏版)》请在冰豆网上搜索。
GPRS模块在Linux平台上ppp拨号上网总结与心得
GPRS模块在Linux平台上ppp拨号上网总结与心得
2009年07月17日02:
09来源:
ChinaUnix博客作者:
iibull编辑:
周荣茂
由于一个嵌入式平台上项目开发的需要,在arm平台上实施ppp拨号上网。
说起这个linux平台的ppp拨号上网,也许很多人觉很简单,网上
的成功的例子很多!
不错,你说的对,但是我还要给点我的看法,就是这个简单的ppp拨号折腾了我的时间之长,我都不好意思讲。
但是,现在看来这个过程学到
了好多的东西,得到很多分析能力的锻炼。
现在成功移植到arm开发板上。
特写日志于此,分享我的这段时间以来的总结:
linux平台的ppp拨号上网,(注明:
这里只谈命令行拨号,用linux就要习惯和熟练使用命令行)
在网上常见的有三种方式:
1.使用智能的ppp拨号软件wvdial:
参考案例:
本博客的《使用wvdial启动ppp协议拨号上网》
2.使用3个脚本的方式:
即ppp-on,ppp-on-dialer,ppp-off
参考文档:
linux-ppp-howto(
)、howtohookupppp(
http:
//www.theory.physics.ubc.ca/ppp-linux.html
)以及网上很多成功的案例
注:
以上两种方式各有自己的优缺点,第一种方式智能稳定,他不需要chat程序,使用集成的wvdial工具包直接连接ISP,安全稳定,可以断线自动重
拨。
第二方式,使用chat程序,但是很多的参数需要自己去配置,虽然比较灵活,但是如果遇到了拨号错误以后,你若不清ppp协议拨号实现的具体机制和每
个参数的含义,你就会很吃力,也许运气好的时候,你运行的环境正好和本地的移动isp配置吻合,恭喜你能上网了,但是你遗憾的是没有学到东西,想了解
ppp机制的朋友,可以试试第2种方式,在了解大体了解ppp协议的前提下,观察思考/var/log/messages中的信息。
3.使用命令pppdcallsomescript的方式:
参考案例:
我使用就是该方式,下面列出ppp拨号相关配置文件并作适当的解释;
注
意:
我使用的gprs模块是HUAWEI
GTM900A/B两种,不同的模块的内部设置有差异,所以配置文件中的某些参数配置有差异,另外还有自身的pc机或者arm开发板的环境以及所处的地点
的信号,移动ISP都有关,在出现问题的时候要考虑这些潜在的可能因素。
错误排查的过程是个枯燥难受的过程,但是反过来去看,这个过程之后会收获很多。
默
认情况在/etc/ppp/目录下建立文件gprs-connect-chat,内容如下(每个参数解释在ppp-howto中有详细解释。
它是在ppp
底层会话的时候给chat进程的参数每行是一个“期望/发送”的组合序列。
当出现一些经典的错误如:
"LCP:
timeoutsending
Config-Requests","seriallineisnot8bitclean...",“seriallineis
looped
back”等,去参看方式2提到的两个文档,或者google。
注意,为什么不能确切地给出解决的方式,原因是打印出来的同一个错误信息,我称之为现象,
同一现象可能是由很多种原因造成的,需要自己实地排查。
)
#/etc/ppp/gprs-connect-chat
TIMEOUT15
ABORT'\nBUSY\r'
ABORT'\nNOANSWER\r'
ABORT'\nRINGING\r\n\r\nRINGING\r'
#''AT
#'OK-+++\c-OK'ATH0
TIMEOUT40
''\rAT
OKATS0=0#这些都是标准的at命令,建议查看随模块的at命令手册
OKATE0V1
OKAT+CGDCONT=1,"IP","CMNET"#设置isp接入网关为中国移动的cmnet,如果你想获得更多访问资源的话
OKATDT*99***1##中国移动gprs的接入号吗
CONNECT''
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
建立文件/etc/ppp/peers/gprs,它的作用是给pppd进程提供配置参数(详见man8pppd的输出内容,如果出现问题这个将是非常重要的参考页),内容如下:
#/etc/ppp/peers/gprs
#Usage:
root>pppdcallgprs
/dev/s3c2410_serial1#改成自己的端口名
115200#改成自己串口波特率
nocrtscts
#可能你的串口是需要crtscts,硬件流控的,这是由你的串口决定的,一般嵌入式系统的串口没有带硬件流控,也不需要就加nocrtscts
modem#这个参数使得pppd进程将等待模块发回的CD(CarrierDetect)信号,与local真好相反
#noauth
debug#把调试信息输出到/var/log/messages,在调试成功后去掉它,以减少垃圾的产生。
nodetach
#hide-password
usepeerdns#以下的3个参数一般不可少
noipdefault
defaultroute
usersmsong#设置接入的用户名,在chap-secrets或者pap-secets中使用
0.0.0.0:
0.0.0.0#本地和远端的ip都设为0使得接入的isp分配本地的ip地址
ipcp-accept-local#要求peer也就是isp给自己非配动态的IP地址
#ipcp-accept-remote
#lcp-echo-failure12
#lcp-echo-interval3
noccp#不需要压缩控制协议,有可能对端不需要,根据自己的isp的情况
#novj
#novjccomp
persist#保证在连接断开的情况下不退出,并尝试重新打开连接
connect'/usr/sbin/chat-s-v-f/etc/ppp/gprs-connect-chat'
#pppd调用chat会话进程接入对端isp,启动对端的pppd,然后本地pppd与对端的pppd一起进行协
#商网络参数和chap/pap认证,成功后,再进行ncp层的ip的分配。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/etc/ppp/chap-secets
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses
#######redhat-config-networkwilloverwritethispart!
!
!
(begin)##########
#######redhat-config-networkwilloverwritethispart!
!
!
(end)############
smsong*123456*
有点地区的GPRS可能使用pap方式认证接入用户,所以在同一级目录下,创建pap-secets文件,内容与chap-secets类似有4项的内容第2和第4项一般不限制就用*(星号)代表。
反正要你在/etc/ppp/下放着这两个文件就好。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在建立了ppp0连接以后可以使用ctrl+c或者下面的脚本程序ppp-off断开ppp连接
#/etc/ppp/ppp-off
#!
/bin/sh
######################################################################
#
#Determinethedevicetobeterminated.
#
if["$1"=""];then
DEVICE=ppp0
else
DEVICE=$1
fi
######################################################################
#
#Iftheppp0pidfileispresentthentheprogramisrunning.Stopit.
if[-r/var/run/$DEVICE.pid];then
kill-INT`cat/var/run/$DEVICE.pid`
#
#Ifthekilldidnotworkthenthereisnoprocessrunningforthis
#pid.Itmayalsomeanthatthelockfilewillbeleft.Youmaywish
#todeletethelockfileatthesametime.
if[!
"$?
"="0"];then
rm-f/var/run/$DEVICE.pid
echo"ERROR:
Removedstalepidfile"
exit1
fi
#
#Success.Letpppdcleanupitsownjunk.
echo"PPPlinkto$DEVICEterminated."
exit0
fi
#
#Thepppprocessisnotrunningforppp0
echo"ERROR:
PPPlinkisnotactiveon$DEVICE"
exit1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
做好上面的配置以后,输入pppdcallgprs命令,注意如果你的gprs这个文件不在/etc/ppp/peers/目录下,在给出标注路径给pppd
[root@localhostppp_scripts]#pppdcallgprs
timeoutsetto15seconds
aborton(\nBUSY\r)
aborton(\nNOANSWER\r)
aborton(\nRINGING\r\n\r\nRINGING\r)
timeoutsetto40seconds
send(^MAT^M^M)
expect(OK)
^M^M
OK
--gotit
send(ATS0=0^M^M)
expect(OK)
^M
AT^M
OK
--gotit
send(ATE0V1^M^M)
expect(OK)
^M
^M^M
OK
--gotit
send(AT+CGDCONT=1,"IP","CMNET"^M^M)
expect(OK)
^M
ATS0=0^M^M
OK
--gotit
send(ATDT*99***1#^M^M)
expect(CONNECT)
^M
^M^M
OK^M
ATE0V1^M^M
OK^M
^M
OK^M
^M
OK^M
^M
OK^M
^M
CONNECT
--gotit
send(^M)
Serialconnectionestablished.
usingchannel20
Usinginterfaceppp0
Connect:
ppp0/dev/ttyS0
Warning-secretfile/etc/ppp/pap-secretshasworldand/orgroupaccess
sent[LCPConfReqid=0x1]
rcvd[LCPConfRejid=0x1]
sent[LCPConfReqid=0x2]
rcvd[LCPConfAckid=0x2]
rcvd[LCPConfReqid=0x1]
sent[LCPConfAckid=0x1]
rcvd[CHAPChallengeid=0x1,name=""]
Warning-secretfile/etc/ppp/chap-secretshasworldand/orgroupaccess
sent[CHAPResponseid=0x1,name="smsong"]
rcvd[CHAPSuccessid=0x1""]
CHAPauthenticationsucceeded
CHAPauthenticationsucceeded
sent[CCPConfReqid=0x1]
sent[IPCPConfReqid=0x1]
rcvd[LCPProtRejid=0x180fd0101000c1a04780018047800]
Protocol-Rejectfor'CompressionControlProtocol'(0x80fd)received
rcvd[IPCPConfReqid=0x1]
sent[IPCPConfNakid=0x1]
rcvd[IPCPConfRejid=0x1]
sent[IPCPConfReqid=0x2]
rcvd[IPCPConfReqid=0x2]
sent[IPCPConfAckid=0x2]
rcvd[IPCPConfNakid=0x2]
sent[IPCPConfReqid=0x3]
rcvd[IPCPConfAckid=0x3]
CouldnotdetermineremoteIPaddress:
defaultingto10.64.64.64
localIPaddress10.144.202.159
remoteIPaddress10.64.64.64
primaryDNSaddress211.138.200.69
secondaryDNSaddress211.103.13.101
Script/etc/ppp/ip-upstarted(pid4578)
Script/etc/ppp/ip-upfinished(pid4578),status=0x0
使用ctrl+c可以断开连接,这样一般不太好测试是不是连接上了(遇有开发不上的控制台只有一个的原因),可以去掉/etc/ppp
/peers/gprs文件中的nodetach参数,要用ping,你需要将eth0即网口给禁用掉,这样ping才会通过ppp0端口寻找路由连接外
网。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
可以用命令tail-f/var/log/messages看到日志:
Mar2020:
55:
55localhostpppd[4557]:
pppd2.4.4startedbyroot,uid0
Mar2020:
55:
56localhostchat[4558]:
timeoutsetto15seconds
Mar2020:
55:
56localhostchat[4558]:
aborton(\nBUSY\r)
Mar2020:
55:
56localhostchat[4558]:
aborton(\nNOANSWER\r)
Mar2020:
55:
56localhostchat[4558]:
aborton(\nRINGING\r\n\r\nRINGING\r)
Mar2020:
55:
56localhostchat[4558]:
timeoutsetto40seconds
Mar2020:
55:
56localhostchat[4558]:
send(^MAT^M^M)
Mar2020:
55:
56localhostchat[4558]:
expect(OK)
Mar2020:
55:
56localhostchat[4558]:
^M^M
Mar2020:
55:
56localhostchat[4558]:
OK
Mar2020:
55:
56localhostchat[4558]:
--gotit
Mar2020:
55:
56localhostchat[4558]:
send(ATS0=0^M^M)
Mar2020:
55:
56localhostchat[4558]:
expect(OK)
Mar2020:
55:
56localhostchat[4558]:
^M
Mar2020:
55:
56localhostchat[4558]:
AT^M
Mar2020:
55:
56localhostchat[4558]:
OK
Mar2020:
55:
56localhostchat[4558]:
--gotit
Mar2020:
55:
56localhostchat[4558]:
send(ATE0V1^M^M)
Mar2020:
55:
56localhostchat[4558]:
expect(OK)
Mar2020:
55:
56localhostchat[4558]:
^M
Mar2020:
55:
56localhostchat[4558]:
^M^M
Mar2020:
55:
56localhostchat[4558]:
OK
Mar2020:
55:
56localhostchat[4558]:
--gotit
Mar2020:
55:
56localhostchat[4558]:
send(AT+CGDCONT=1,"IP","CMNET"^M^M)
Mar2020:
55:
57localhostchat[4558]:
expect(OK)
Mar2020:
55:
57localhostchat[4558]:
^M
Mar2020:
55:
57localhostchat[4558]:
ATS0=0^M^M
Mar2020:
55:
57localhostchat[4558]:
OK
Mar2020:
55:
57localhostchat[4558]:
--gotit
Mar2020:
55:
57localhostchat[4558]:
send(ATDT*99***1#^M^M)
Mar2020:
55:
57localhostchat[4558]:
expect(CONNECT)
Mar2020:
55:
57localhostchat[4558]:
^M
Mar2020:
55:
57localhostchat[4558]:
^M^M
Mar2020:
55:
57localhostchat[4558]:
OK^M
Mar2020:
55:
57localhostchat[4558]:
ATE0V1^M^M
Mar2020:
55:
57localhostchat[4558]:
OK^M
Mar2020:
55:
57localhostchat[4558]:
^M
Mar2020:
55:
57localhostchat[4558]:
OK^M
Mar2020:
55:
57localhostchat[4558]:
^M
Mar2020:
55:
57localhostchat[4558]:
OK^M
Mar2020:
55:
57localhostchat[455
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPRS 模块 Linux 平台 ppp 拨号上网 总结 心得
![提示](https://static.bdocx.com/images/bang_tan.gif)