成功实现Linux下pppd通过GPRS拨号上网

时间:2010-10-23 00:22:28  来源:本站收集整理  作者:学无止境
昨天把开发板的bootloader删了,没办法,只得在PC上调GPRS拨号了.先在windows下拨号成功,然后用工具看拨号时具体使用了哪些AT 命令,再使用这些命令到linux下使用pppd来拨号,最后终于成功了,之前开发板上不能成功拨号极有可就是AT指令有问题,现在只有等开发板回来后再到ARM7上调了.
   下面贴一下拨号使用的几个脚本,GPRS模块是使用的华为的GTM900-B:
1,  /etc/ppp/peers/gprs:
复制内容到剪贴板
代码:
#/etc/ppp/peers/gprs
# This is pppd script for China Mobile, used Huawei GTM900-B GPRS Module
# Usage:   root>pppd call gprs
/dev/ttyS0
19200
crtscts
modem
#noauth
debug
nodetach
#hide-password
usepeerdns
noipdefault
defaultroute
user "cmnet"
0.0.0.0:0.0.0.0
#ipcp-accept-local
#ipcp-accept-remote
#lcp-echo-failure  12
#lcp-echo-interval 3
#noccp
#novj
#novjccomp
#persist
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
#connect '/bin/chat -v -s -f /etc/ppp/gprs-connect-chat'
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
2,  gprs-connect-chat:
复制内容到剪贴板
代码:
#/etc/ppp/gprs-connect-chat
# chat script for China Mobile, used HuaWei GTM900-B GPRS module.
TIMEOUT         15
ABORT           "DELAYED"
ABORT           "BUSY"
ABORT           "ERROR"
ABORT           "NO DIALTONE"
ABORT           "NO CARRIER"
TIMEOUT         40
''              \rAT
OK                ATS0=0
OK              ATE0V1
OK              AT+CGDCONT=1,"IP","CMNET"
OK              ATDT*99***1#
CONNECT         ''
3, 用于chap认证的密码文件:chap-secrets,由于移动的GPRS服务不需要用户名和密码,所以刚开始没设用户名和密码,结果在chap认证的时候总不能通过.后来在gprs里添加user "cmnet"和这个密码文件后就OK了.
复制内容到剪贴板
代码:
#/etc/ppp/chap-secrets
#client    server secret IP address
"cmnet"    *     "cmnet"    *
4, 另外还有个可选的,断开连接的脚本如下:
复制内容到剪贴板
代码:
ABORT        OK
ABORT        BUSY
ABORT        DELAYED
ABORT        "NO ANSWER"
ABORT        "NO CARRIER"
ABORT        "NO DIALTONE"
ABORT        VOICE
ABORT        ERROR
ABORT        RINGING
TIMEOUT        12
""        \\k\\k\\k\\d+++ATH
"
使用: 将PC上的DNS删掉后运行如下:
[root@localhost ppp]# pppd call gprs
timeout set to 15 seconds
abort on (DELAYED)
abort on (BUSY)
abort on (ERROR)
abort on (NO DIALTONE)
abort on (NO CARRIER)
timeout set to 40 seconds
send (^MAT^M)
expect (OK)
^M^M
OK
-- got it

send (ATS0=0^M)
expect (OK)
^M
AT^M
OK
-- got it

send (ATE0V1^M)
expect (OK)
^M
ATS0=0^M^M
OK
-- got it

send (AT+CGDCONT=1,"IP","CMNET"^M)
expect (OK)
^M
ATE0V1^M^M
OK
-- got it

send (ATDT*99***1#^M)
expect (CONNECT)
^M
^M
OK^M
^M
CONNECT
-- got it

send (^M)
Serial connection established.
using channel 42
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x8c5e3d45> <pcomp> <accomp>]
rcvd [LCP ConfRej id=0x1 <magic 0x8c5e3d45>]
sent [LCP ConfReq id=0x2 <asyncmap 0x0> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <auth chap MD5> <pcomp> <accomp>]
rcvd [CHAP Challenge id=0x1 <fb17db52a81bc14997f72e2932ab0b342bab961d49c611>, name = ""]
sent [CHAP Response id=0x1 <2c757eac52b8d9a7d80ca7a77c419ad9>, name = "cmnet"]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [LCP ProtRej id=0x1 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00]
rcvd [IPCP ConfReq id=0x1 <addr 221.177.160.163>]
sent [IPCP ConfAck id=0x1 <addr 221.177.160.163>]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfNak id=0x2 <addr 10.165.226.25> <ms-dns1 211.137.64.163> <ms-dns3 211.136.20.203>]
sent [IPCP ConfReq id=0x3 <addr 10.165.226.25> <ms-dns1 211.137.64.163> <ms-dns3 211.136.20.203>]
rcvd [IPCP ConfAck id=0x3 <addr 10.165.226.25> <ms-dns1 211.137.64.163> <ms-dns3 211.136.20.203>]
local  IP address 10.165.226.25
remote IP address 221.177.160.163
primary   DNS address 211.137.64.163
secondary DNS address 211.136.20.203

再将这里的DNS给PC或作个连接到/etc/ppp/resolf.conf应该就OK了.
有IP,网关,DNS之后就能上网了。

相关文章

文章评论

共有  1  位网友发表了评论 此处只显示部分留言 点击查看完整评论页面