GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx

上传人:b****5 文档编号:16431196 上传时间:2022-11-23 格式:DOCX 页数:14 大小:22.24KB
下载 相关 举报
GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx_第1页
第1页 / 共14页
GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx_第2页
第2页 / 共14页
GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx_第3页
第3页 / 共14页
GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx_第4页
第4页 / 共14页
GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx

《GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx》由会员分享,可在线阅读,更多相关《GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

GPRS模块在Linux平台上ppp拨号上网总结与心得Word文件下载.docx

)、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'

\nNOANSWER\r'

\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)##########

(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];

kill-INT`cat/var/run/$DEVICE.pid`

#Ifthekilldidnotworkthenthereisnoprocessrunningforthis

#pid.Itmayalsomeanthatthelockfilewillbeleft.Youmaywish

#todeletethelockfileatthesametime.

if[!

$?

0"

rm-f/var/run/$DEVICE.pid

echo"

ERROR:

Removedstalepidfile"

exit1

fi

#Success.Letpppdcleanupitsownjunk.

PPPlinkto$DEVICEterminated."

exit0

#Thepppprocessisnotrunningforppp0

echo"

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)

^M

AT^M

send(ATE0V1^M^M)

send(AT+CGDCONT=1,"

^M^M)

ATS0=0^M^M

send(ATDT*99***1#^M^M)

expect(CONNECT)

OK^M

ATE0V1^M^M

CONNECT

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

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

56localhostchat[4558]:

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)

^M

AT^M

send(ATE0V1^M^M)

send(AT+CGDCONT=1,"

57localhostchat[4558]:

ATS0=0^M^M

send(ATDT*99***1#^M^M)

expect(CONNECT)

OK^M

ATE0V1^M^M

57localhostchat[455

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1