免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2793 | 回复: 0
打印 上一主题 下一主题

ubuntu10.10 使用ppp拨号接入GPRS的经验_P.W. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览
                                   ubuntu10.10 使用ppp拨号接入GPRS的经验

一实验目标和环境:
实验目标:
1.最终的目标是在嵌入式的linux下使用sim4200进行3g制式TD-SCDMA的拨号上网,使得嵌入式能够连接入网络。
2.初步目标:在unbuntu10.10下使用sim4200通过usb转串口来进行GPRS拨号,熟悉拨号环境。
实验环境:
ubuntu10.10 Sim4200 pppd2.4.5

二.解决思路
和PPP连接关系密切的有两个脚本是chat和options两个脚本。其中,chat脚本是用来进行AT呼叫和控制的脚本,而options脚本就影响PPP连接的。

1.  CHAT脚本
   一个简单的chat脚本有下面的结构:
""              AT
OK             ATDT  dialnumber
CONNECT      ""
一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串。这个脚本每一项的具体含义是这样的:
1)    MODEM期望空字符串。这句话的意思直接理解就是MODEM不管收到什么字符串,先发出字符串AT;
2)    期望收到“OK”字符串,然后发送字符串“ATDT dialnumber”
3)    如果收到“CONNECT”,就不再发送,认为数据链路已建立连接。
  这样的chat脚本是最简单的,如果需要进行超时控制,就可以加入如下字段:
TIMEOUT 10
如果要增加对特殊情况的处理,就加入下面字段:
        ABORT           BUSY          
        ABORT           NO ANSWER
        ABORT           RINGING
这三行语句的意思是:如果收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出执行。
所以在考虑到各种特殊情况下,配置一个PPP连接的CHAT脚本就可以像下面这样:
TIMEOUT         30
ABORT           BUSY          
    ABORT           NO ANSWER
    ABORT           RINGING
 ""                 AT
OK                ATDT dialnumber
CONNECT         ""

2.OPTIONS脚本
OPTIONS脚本的内容,为PPP连接指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等。
例如下面的options脚本:
ttyS0 ---- 指定连接使用的设备,例如:ttyS0、ttyS1等
57600 ---- 设置连接使用的控制字符传输速率,可以设置为57600、115200等
debug ---- 如果需要加入调试信息,就加入参数debug
logfile /var/ ppplog ---- 将连接过程中的信息输入到某个文件中
mtu 1500
-detach
noipdefault ---- 不使用默认IP就可以加入参数noipdefault
defaultroute
usepeerdns ---- 使用服务器端协商的DNS就可以设置参数usepeerdns
lcp-echo-failure 4 ---- 当连续4次没有收到发出的LCP回声请求时,就认为服务器端已不再响应,就退出执行。这里的失败次数可以灵活来决定。
-ccp ---- 不使用压缩控制协议
-vj ---- 关掉式IP头压缩
-chap ---- 不使用chap鉴权
-mschap-v2 ---- 不使用mschap鉴权
user
hide-password
connect "/usr/bin/chat -v -t6 -f /var/ chat" ---- 制定了要使用的chat脚本的位置。加上参数-v 告诉 chat命令将其所有的输出/入拷贝到系统记录里(通常是 /var/log/messages)。-t 6 指定了执行chat该命令的时间为6s。chat脚本的位置可以位于/etc/目录下,也可以位于/var下,这个可以更加需要灵活设置。
persist --- 永久链接(自动重拨)
crtscts --- 告诉ppp使用modem的硬件流量控制
modem --- 使ppp使用DCD信号来判断连接是否正常,有无掉线现象
deflate --- 使pppd使用defalte压缩方式
idle --- 设置了一个时间限制,当在300秒的时间内没有数据传送,就断开连接
lock --- 则创建一个锁定文件,其他程序在发现存在这个文件后,就能得知相应的串口已经被使用。
demond --- 参数告诉pppd停留在后台,监视网络数据,一旦有要求就立即进行连网,超时后就断开连接,但pppd仍然停留在后台等待下次数据传送

3. 鉴权脚本
    一般情况下,PPP连接是需要进行身份认证的。签权方式有两种,一种是PAP鉴权,另一种是CHAP鉴权。鉴权需要的用户名和密码是存放在PAP-secrets和chap-secrets脚本中,以如下方式存放:
Username * password
    需要进行鉴权时,通过在options脚本中指定鉴权方式为PAP或CHAP,PPP模块就会从PAP-secrets和chap-secrets脚本中读出用户名和密码,附加到PPP的鉴权包中,发送到服务器端进行身份认证。


4. PPP拨号过程与脚本之间的关系
  脚本设置成功以后,怎么和pppd2.4.4一起工作呢?这个需要从pppd程序的主函数入手。
这个过程是这样的:
  Pppd程序启动以后,就会按照pathname.h中所指定的文家位置去寻找options脚本文件。这个可以按照需要指定文件的位置,确保pppd能够准确找到该文件。
  Pppd找到options文件后,按顺序读入参数行。在这里,就可以获取系统要使用的是哪个设备来进行联网、设备的速率是多少。
  Pppd 将配置的参数解析为程序当中的全局变量标识符,进行pppd连接控制。

三.试验脚本
二里面的信息我参考别人的其测试环境是pppd2.4.4,而自己采用的是pppd2.4.5。所以请自己甄别。
****************************************************************************
(1)chat脚本(文件信息/etc/ppp/gprs-connect-chat)内容如下,前面的1 2 3 标号是vim的行号:

 
  1 TIMEOUT 15
  2 ABORT BUSY
  3 ABORT "NO CARRIER"
  4 ABORT "NO ANSWER"
  5 ABORT RINGING
  6 TIMEOUT 40
  7
  8 '' \rAT
  9 OK ATSO=0
 10 #OK ATEOV1
 11 '' ATZ
 12 OK ATE1
 13 OK AT+CGDCONT=1,"IP","CMNET"
 14 OK ATDT*99***1#
 15 CONNECT ''

 #有些是介绍采用AT+CGDCONT=1,"IP","CMWAP",接入的网络服务点不一样的,可以尝试。
注意 chat文件中是不可以使用#........ 来进行注释的。

 13 OK AT+CGDCONT=1,"IP","CMNET"#有些是介绍采用AT+CGDCONT=1,"IP","CMWAP"
如果13行改为这样就会冒出CME ERROR:100 的错误的,CME ERROR :100是unknown error
一般人为出错的可能行是很大的。
****************************************************************************
2.options脚本(文件信息:/etc/ppp/peers/gprs)
 
  1. 1 # example configuration for a dialup connection authenticated with PAP or CHAP
  2. 2 #
  3. 3 # This is the default configuration used by pon(1) and poff(1).
  4. 4 # See the manual page pppd(8) for information on all the options.
  5. 5
  6. 6 # MUST CHANGE: replace myusername@realm with the PPP login name given to
  7. 7 # your by your provider.
  8. 8 # There should be a matching entry with the password in /etc/ppp/pap-secrets
  9. 9 # and/or /etc/ppp/chap-secrets.
  10. 10 #user "myusername@realm"
  11. 11
  12. 12 # MUST CHANGE: replace ******** with the phone number of your provider.
  13. 13 # The /etc/chatscripts/pap chat script may be modified to change the
  14. 14 # modem initialization string.
  15. 15 #connect "/usr/sbin/chat -s -v -f /etc/chatscripts/pap -T ********"
  16. 16
  17. 17 connect "/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat"
  18. 18 # Serial device to which the modem is connected.
  19. 19 #/dev/modem
  20. 20 #由于我自己采用的是usb转串口,所以是使用ttyUSB0
  21. 21 /dev/ttyUSB0
  22. 22
  23. 23 # Speed of the serial line.
  24. 24 # 波特率设置
  25. 25 115200
  26. 26
  27. 27 #没有硬件流量检测
  28. 28 nocrtscts
  29. 29
  30. 30 #使ppp使用DCD信号来判断连接是否正常,有无掉线现象
  31. 31 modem
  32. 32
  33. 33 #创建锁定文件,在ppp拨号时其他程序使用该串口时会发现已经被锁住
  34. 34 lock
  35. 35
  36. 36 #加入调试信息
  37. 37 debug
  38. 38
  39. 39 nodetach
  40. 40 # Assumes that your IP address is allocated dynamically by the ISP.noipdefault
    41 # Try to get the name server addresses from the ISP.
    42 usepeerdns
    43 # Use this connection as the default route.
    44 defaultroute
    45
    46 # Makes pppd "dial again" when the connection is lost.
    47 persist
    48
    49 # Do not ask the remote to authenticate.
    50 noauth
    51
    52 defaultroute
    53
    54 asyncmap 0
    55
    56 #设置接入的用户名,在chap-secrests 和pap-secrets中使用
    57 user "ming"
    58
    59 0.0.0.0:0.0.0.0 #本地和远端的ip都设为0使得接入的isp分配本地的ip地址
    60
    61 ipcp-accept-local #要求peer也就是isp给自己分配动态的ip地址
    62
    63 #ipcp-accept-remote
    64 #lcp-echo-failure 12
    65 #lcp-echo-interval 3
    66 noccp #不需要压缩控制协议,有可能对端不需要,根据自己的isp的情况确定
    67 #novj
    68 #novjccomp
    69 #-mn
    70
    71 #更多其他参数含义请参照PPPD2.4.5中的option.c中的注释


****************************************************************************
鉴权文件chap-secrets和pap-secrets的文件内容都一样的如下,(文件信息:/etc/ppp/pap-secrets /etc/ppp/chap-secrets):

  1. 1 # Secrets for authentication using CHAP
  2. 2 # client server secret IP addresses
  3. 3 ming * 123456 *
  4. 4
***************************************************************************
启动方式:
在root权限下 进入/etc/ppp/peers 文件中 在终端里面输入 pppd call gprs 就进行拨号了
当回显示中有出现:
local  IP address 59.64.150.223
remote IP address 59.64.150.223
恭喜你,你的GPRS网络接通了。
**********************************************************************
希望在嵌入式linux下实验网络接入的朋友都顺利。
接下来项目进展是进行TD-SCDMA网络的接入,敬请期待。
装载请说明文章来源:http://blog.chinaunix.net/space.php?uid=25617967&do=blog&id=199924
作者:Phenixwhite

参考文档:
http://blog.csdn.net/linweig/archive/2010/04/02/5446429.aspx
http://blogold.chinaunix.net/u3/90973/showart_1998886.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP