《嵌入式Linux下通过PPP拨号上网.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux下通过PPP拨号上网.docx(6页珍藏版)》请在三一办公上搜索。
1、嵌入式Linux下通过PPP拨号上网 嵌入式Linux下通过PPP拨号上网 收藏 这里记录在嵌入式Linux环境下,通过PPP拨号,先GPRS上网,后面再写3G上网。 一般的过程,先参考了。本人使用FriendlyARM开发板与GPRS模块,PPP的拨号上网,方法如下: 1.首先得让内核支持PPP,进入Linux 内核目录,执行 #make menuconfig 添加如下内核选项: Device Drivers - Network device support - PPP (point-to-point protocol) support * PPP multilink support PPP
2、 support for async serial ports PPP support for sync tty ports SLIP (serial line) support * CSLIP compressed headers 添加完成后保存并退出,执行# make zImage 编译完成以后,在内核目录的arch/arm/boot 目录下便会生成一个 zImage 内核文件,烧到开发板中,这样开发板内核就支持了PPP了。 2.下载ppp-2.4.4.tar.gz 或其他版本PPP 拨号程序源码,可以上网搜索 进入ppp-2.4.4.tar.gz的目录执行解压命令 #tar zxf pp
3、p-2.4.4.tar.gz 解压后出现 ppp-2.4.4 文件夹,进入该目录,执行配置命令 #./configure 然后执行 #make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc 编译完成后,进入下一步。 3.修改相关拨号脚本 进入 ppp-2.4.4 目录下的 script 目录,可以找到 ppp-on 、ppp-off 、ppp-dial-on 等多个脚本文件 执行#vi ppp-on 内容如下,修改一下里面的内容 TELEPHONE=555-1212 改为 TELEPHONE=*99*1# exec /usr/sbin/pppd debug
4、 lock modem crtscts /dev/ttyS0 38400 asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT 改为 exec /bin/pppd debug lock modem nocrtscts 你的串口设备 你的波特率 asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMA
5、SK defaultroute connect $DIALER_SCRIPT ppp-on 修改完成后执行 ESC 和 :wq! 强制保存。 然后修改ppp-on-dialer 执行#vi ppp-on-dialer 删除最后两行关于 拨号帐户密码的。 到此修改结束 4 复制相关文件到开发板 以下$(PPP)为 计算机上ppp-2.4.4 的目录 ,$(EMB_BIN)代表 开发板中的 /bin 目录,$(EMB_ETC)代表开发板中的 /etc 目录 #cp $(PPP)/chat/chat $(EMB_BIN)#cp $(PPP)/pppd/pppd $(EMB_BIN) #cp $(PP
6、P)/pppdump/pppdump $(EMB_BIN)#cp $(PPP)/pppstats/pppstats $(EMB_BIN) #mkdir $(EMB_ETC)/ppp #cp $(PPP)/etc.ppp/* $(EMB_ETC)/ppp #cp $(PPP)/scripts/ppp-on $(EMB_BIN) #cp $(PPP)/scripts/ppp-off $(EMB_BIN) #cp $(PPP)/scripts/ppp-on-dialer $(EMB_ETC)/ppp 复制完成(其实放到相应的/usr/sbin目录也是可以的,只要你仔细看ppp-on的脚本) 此后,连
7、接好ARM与GPRS模块后,便可以输入命令 #ppp-on 执行拨号了! 执行上面的ppp-on 命令以后 等一会,你可以看见GPRS模块上面的指示灯快速而稳定地闪烁,表明拨号成功了 这时候你可以在开发板上执行#ifconfig 命令,可以看见新建了一个 ppp0 的设备 ,上面还有IP地址等信息呢! 经过这部后,还要修改DNS服务器地址 #vi /etc/resolv.conf 添加 nameserver 202.116.160.33 西安 中国移动CMNET primary DNS address 211.137.130.3 secondary DNS address 211.137.13
8、0.19 保存退出 尝试一下 ping 看看能够ping出什么东西来?,如果ping不通,使用#ifconfig发现有ppp0设备,也有eth设备,可以先关掉eth设备试下#ifconfig eth0 down 如果这样就搞定了,我想我也不用写了,呵呵!当发现还是不成功,而且看上去还是有很多不明白的时候可以再接着上面的步骤继续如下操作。 首先是ppp-on,ppp-off,ppp-on-dialer只是一些写好的脚本,自己可以查看,不是很难。下面主要参考了以及其中提到的HOWTO文档等等。 主要步骤是先在板子的/etc/ppp/peers目录下建立文件gprs,写入拨号参数。接着在/etc/p
9、pp目录下建立gprs-connect-chat、chap-secret,最后调用#pppd call gprs(前提是你已经在前面的步骤中把pppd等文件复制指定目录下了),可以通过#tail -f /var/log/messages命令查看日志。最后关闭掉eth设备,即可通过ppp0设备上网了。下面给出各个文件的内容 1. #/etc/ppp/peers/gprs # This is pppd script for China Mobile, used GPRS Module # Usage: rootpppd call gprs /dev/ttyUSB0 #自己的设备文件名,首先最后在p
10、pp拨号上网前保证你的模块能正确接收和返回AT命令吧 115200 #波特率 nocrtscts #无硬件流控的 modem #noauth #想让ppp在后台运行可以去掉注释 debug #nodetach #hide-password usepeerdns noipdefault defaultroute user cmnet #你的用户名,最好随便起个,不加双引号也可以的 0.0.0.0:0.0.0.0 #从远端分配ip地址等 ipcp-accept-local #ipcp-accept-remote #lcp-echo-failure 12 #lcp-echo-interval 3 #
11、noccp #novj #novjccomp #persist #connect /usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat connect /usr/sbin/chat -v -s -f /etc/ppp/gprs-connect-chat #disconnect /bin/chat -v -f /etc/ppp/gprs-disconnect-chat 具体内容解释可以查看中的HOWTO,大部分还是中文的。可以根据自己的需要和文件存放的位置修改,切忌直接复制啊! 2. #/etc/ppp/gprs-connect-chat # ch
12、at script for China Mobile, used GPRS module. TIMEOUT 15 ABORT DELAYED ABORT BUSY ABORT ERROR ABORT NO DIALTONE ABORT NO CARRIER TIMEOUT 40 AT OK AT+CFUN=1 #都是标准的AT命令,如果采用的3G网卡的话需要这个命令,不是则应该删除 OK ATS0=0 OK ATE0V1 OK AT+CGDCONT=1,IP,CMNET #中移动的 OK ATDT*99*1# CONNECT 3. #/etc/ppp/chap-secrets #client server secret IP address cmnet * cmnet * 现在一般都采用chap认证,也有pap认证的。具体意义参看了啊。 最后想关闭ppp了,那么可以用上面的ppp-off,也可以直接ps下,再kill了啊!呵呵!