Ubuntu/debian 下GPRS拨号上网

因为要保证ppp应用程序能够在uClinux下能够成功运行,首先你得在自己的linux主机上实现。先谈linux主机下的问题,我在UBUNTU 8.10以及debian下都实践过,都成功了。接下来把一些东西贴出来(都是用的root权限): 1.对于UBUNTU/debian,首先你得安装ppp,用sudo apt-get install ppp,相信都很熟悉了。 2.在/etc/ppp 目录下,建立3个文件(pap-secrets、chap-secrets、gprs-connect-chat)和一个目录:peer;在peers目录下建立一个文件gprs。 3.这4个文件的内容如下,其中pap-secrets和chap-secrets内容相同,两种不同的验证文件,一种基于PAP协议,另一种基于CHAP协议。 /etc/ppp/chap-secrets 和/etc/ppp/pap-secrets文件内容如下: # Secrets for authentication using CHAP # client server secret IP addresses itlanger * 123456 * /etc/ppp/peers/gprs文件内容如下: #/etc/ppp/peers/gprs # Usage: root>pppd call gprs /dev/ttyUSB0 115200 nocrtscts modem lock noauth debug nodetach #hide-password usepeerdns noipdefault defaultroute asyncmap 0 user itlanger #设置接入的用户名,在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-failure 12 #lcp-echo-interval 3 noccp #不需要压缩控制协议,有可能对端不需要,根据自己的isp的情况 #novj #novjccomp #-mn persist #保证在连接断开的情况下不退出,并尝试重新打开连接 connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat' /etc/ppp/gprs-connect-chat内容如下 #/etc/ppp/gprs-connect-chat TIMEOUT 15 ABORT '/nBUSY/r' ABORT '/nNO ANSWER/r' ABORT '/nRINGING/r/n/r/nRINGING/r' #'' AT #'OK-+++/c-OK' ATH0 TIMEOUT 40 #'' /rAT #OK ATS0=0 #这些都是标准的at命令,建议查看随模块的at命令手册 #OK ATE0V1 '' ATZ OK ATE1 # OK AT+CGDCONT=1,"IP","CMNET" OK 'ATDT*99***1#' CONNECT '' 注意一个非常重要地方,很多时候直接拷贝脚本的时候不注意,运行 pppd call gprs,会出先serial looped back或者Lcp : timeout sending config-requests错误,这很可能是回车符惹的祸,你应该留心你的脚本,看看/etc/ppp/gprs-connect-chat脚本第一个空行(脚本结尾)是不是以 ~ 这个字符开头的(魔兽里面选中闲置农民的那个键),用Gvim编辑器很容易看得到,不是的话会报错。 还有一个问题,就是我看到有的博客里面在/etc/ppp/peers目录下的gprs脚本直接用connect /etc/ppp/gprs-connect-chat 语句,然后在把/etc/ppp/gprs-connect-chat写成#!/bin/sh -e exec chat -v形式的,这种写法可能会出现刚开始提到的那两个错误,建议把chat命令放到/etc/ppp/peers/gprs配置脚本里面比较好,我自己就是这个原因弄了老半天。 完了之后,root权限终端输入pppd call gprs 就行了,等到看到了local ip,remote ip ,status 0x0就表示成功了,你ifconfig一下,就会发现多了个ppp0设备,用ifconfig eth0 down关掉eth0,就可以上网了。 我上面用的这几个脚本,在我的同学的debian系统上直接把配置文件拷贝过去就成功了。 对于在arm7板子上实现GPRS无线上网,我依然遇到一点问题。我们小组另外还做了一个给手机发送短信的应用程序,成功实现,但之前一直无法发送数据,这里要特别感谢一下晚风拂柳,他博客里面的一句“改用交叉线”启发了我们,原来我们板子的UART1串口和GPRS串口是直连的(2-2,3-3),应该是用交叉的(2-3,3-2),于是用小刀、打火机把串口线拨开,把2,3脚交叉接了一下,就OK了。 因为uClinux本身自带pppd chat应用程序,所以没有下源码编译,虽然pppd应用程序貌似移植成功了(pppd,不断出现乱码),但当把上面四个脚本(其中,/etc/ppp /peers/gprs,注释了usepeerdns,也在ppp目录下写了resolv.conf文件,这些google一下就OK了)编译到 uClinux文件系统中时,直接用pppd或者pppd call gprs时候,会出现所谓的内存释放错误,munmap of non-mmaped memory by process xx .. ;参考了晚风拂柳的做法,把chat命令路径也全,但错误依旧。硬下头皮来看pppd的源码main.c,但实在是有点难看懂,没法了,当时已经过了0点了,第二天上午就要答辩了,就只能这样了。不过,我怀疑是不是源码的问题。只能怀疑,第一次接触arm和uClinux,算是长了点见识吧。 建议可以自己尝试一下下pppd源码编译,或许可以解决问题。解决了的过客,希望贴个地址,感激不尽
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值