linux下GPRS模块ppp拨号上网

------------------------------------------------------------------------------------------------------------------------------

交叉编译器:arm-linux-gcc-4.5.4

Linux内核版本:Linux-3.0

主机操作系统:Centos 6.5

开发板:FL2440

GPRS:SIM900A

在开发SIM900模块之前,开发板已经加载了linux内核以及文件系统,并且开发板串口已经使能。并且一定要注意的是:要有一张没有欠费的电话卡!不要笑,这是个很严肃的问题!

------------------------------------------------------------------------------------------------------------------------------

所需源码:

ppp-2.4.4.tar.gz  http://download.chinaunix.net/download.php?id=35208&ResourceID=8334

注:个人觉得这是一个比较典型又比较简单的移植问题。

大体步骤:添加内核ppp上网的支持-->编译ppp-2.4.4生成一些可执行文件(pppd, chat, pppdump, pppstats)放到开发板的/usr/sbin/目录下-->将可执行脚本放在开发板的指定位置(/etc/ppp/peers/gprs, /etc/ppp/chat-gprs-connect),并执行pppd命令。

一、添加内核支持

Linux-3.0以上的版本中,rt3070的驱动已经加入了内核源码中去了,本篇用的是Linux-3.0的内核,只需要在内核的make menuconfig中选择ppp上网的支持就可以了。

修改如下:

Device Drivers --->
  [*] Network device support --->
    <*> PPP (point-to-point protocol) support
    [*] PPP multilink support (EXPERIMENTAL)
    <*> PPP support for async serial ports
    <*> PPP support for sync tty ports
    <*> SLIP (serial line) support
    [*] CSLIP compressed headers

二、编译ppp-2.4.4

# tar -xzf  ppp-2.4.4.tar.gz

# ./configure

# make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc (交叉编译器)

如果编译成功,则会在pppd, chat, pppdump, pppstats下分别生成可执行程序pppd, chat, pppdump, pppstats。将其拷贝到开发板的/usr/sbin目录下。

三、开发板的配置

# vi /etc/ppp/peers/gprs

 1 # Usage: root>pppd call gprs
 2
 3 #set seriral
 4 /dev/ttyS1
 5
 6 # set baudrate
 7 115200
 8
 9 # set flowdate
10 nocrtscts
11
12 connect ‘/usr/sbin/chat -v -f /etc/ppp/gprs-connect-chat‘
13
14 #set debug ,send message to /var/log/messages
15 debug
16
17 #To keep pppd on the terminal
18 nodetach
19
20 #hide-password
21
22 # Accept the peer‘s idea of our local IP address
23 ipcp-accept-local
24 # Accept the peer‘s idea of its (remote) IP address
25 ipcp-accept-remote
26
27 #dial up connetion as the default route
28 defaultroute
29
30 usepeerdns

# vi /etc/ppp/chat-gprs-connect

 1 #Copyright (c) 2016 guanlei 995318056@qq.com
 2 # This is second part of the ppp dial script. It will perform the connection
 3 #
 4     ABORT           ‘BUSY‘
 5     ABORT           ‘NO ANSWER‘
 6     ABORT           ‘NO CARRIER‘
 7     ABORT           ‘NO DIALTONE‘
 8     ABORT           ‘ERROR‘
 9     ABORT           ‘\nRING\r\n\r\nRING\r‘
10     TIMEOUT         20
11 ‘‘               \rAT
12 #set  apn
13 OK              AT+CGDCONT=1,"IP","cmnet"
14 # ............
15      OK              ATDT*99***1#    //这里要改成相应的运行商的设置
16      SAY             " + requesting data connection\n"
17      CONNECT         ‘‘
18      SAY             " + connected\n"

使能pppd:

# pppd call gprs &  (&表示后台运行)

配置完就可以了,现在可以测试一下上网功能了:

# ping www.baidu.com

PING www.baidu.com (103.235.46.39): 56 data bytes

64 bytes from 103.235.46.39: seq=0 ttl=48 time=555.719 ms

64 bytes from 103.235.46.39: seq=1 ttl=48 time=273.481 ms

--- www.baidu.com ping statistics ---

3 packets transmitted, 2 packets received, 33% packet loss

round-trip min/avg/max = 273.481/414.600/555.719 ms

# ifconfig

ppp0      Link encap:Point-to-Point Protocol

inet addr:10.110.1.110  P-t-P:192.200.1.21  Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

RX packets:10 errors:0 dropped:0 overruns:0 frame:0

TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:686 (686.0 B)  TX bytes:557 (557.0 B)

时间: 08-15

linux下GPRS模块ppp拨号上网的相关文章

sim900GPRS模块ppp拨号上网

一:编辑Linux内核,使其支持PPP拨号上网 [[email protected] linux-3.0]$ make menuconfig Device dirver --->Network device *** CAIF transport drivers *** <*> PPP (point-to-point protocol) support [*] PPP multilink support (EXPERIMENTAL) [*] PPP filtering <*>

linux下利用PPPOE实现拨号上网

PPPOE实现拨号上网 PPPOE简介: 与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL 就使用了PPPoE协议. 随着低成本的宽带技术变得日益流行,DSL(Digital Subscriber Line)数字用户线技术更是使得许多计算机在互联网上能够酣畅淋漓的冲浪了.但是这也增加了DSL服务提供商们对于网络安全的担心. 通过ADSL方式上网的计算机大都是通过以太网卡(Ethernet)与互联网相连的.同样使用的

linux下nginx模块开发入门

本文模块编写参考http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 之前讲了nginx的安装,算是对nginx有了最初步的了解,在配置完之后,我们就可以进行简单的nginx模块开发了. 下面本文展示一个简单的Nginx模块开发全过程,我们开发一个叫echo的handler模块,这个模块功能非常简单,它接收“echo”指令,指令可指定一个字符串参数,模块会输出这个字符串作为HTTP响应.例如,对ngi

关于ppp拨号gprs上网的一些问题

在没有ppp的情况下,我们是在程序中去用at指令与gprs模块进行交互的,但是有了ppp后,ppp内部就做了at指令与gprs模块交互的部分了. 开始的时候,ppp内部的chat脚本,这个chat脚本是用于与gprs模块进行AT指令交互的聊天脚本.这个chat脚本用AT指令与gprs进行交互,从而激活PDP,就是进行联网成功了,终端(只的是我们向gprs发消息的那个终端)向移动终端(指的就是gprs)发送一些要联网的信息,gprs收到后,又向上级,也就是gprs的网关节点(GGSN)等等进行发送

0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)

ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令使gprs上网,两者之间有不同.ppp是一个将用at指令使gprs上网的那一部分给封装了起来.只要你将ppp成功的移植到了你的根文件系统中,那么你使用pppd call的时候就相当于用at指令让gprs上网了,封装的部分,包括一部分at命令,认证等等一些列的过程.最后双方认证通过,达成一致后,给了你

简单实例讲解linux的module模块编译步骤(转)

注:原博文讲述较为详尽细致,故转到本地--aaronGao ------------------------------------------------------------------------------------------------------------------------------------------- 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,

linux下ppp拨号无线上网

linux下用ppp上网需要两个程序:pppd和chat.ubuntu自带pppd和chat,可以使用man查看具体使用方法. 典型的ppp拨号需要准备几个文件: 1. pppd脚本. 2. chat脚本. 3. chap-secrets文件. 4. pap-secrets文件. chat脚本是真正AT指令的发送和接收脚本,chat脚本主要有TIMEOUT,ABORT和AT指令交互等构成.TIMEOUT超时,ABORT指定AT指令交互时,出现什么样的错误chat将退出.AT指令交互是“接收”“发

LINUX下的拨号利器:wvdial和pppd —— 转载

wvdial是LINUX下的智能化拨号工具,利用wvdial和ppp可以实现linux下的轻松上网.在整个过程中wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息:ppp的作用是与拨入方协商传输数据的方法并维持该连接. 一.wvdial及其相关配置 wvdial的功能很强大,会试探着去猜测如何拨号及登录到服务器,同时它还会对常见的错误智能的进行处理,不象chat一样,要求你去写登录脚本.wvdial只有一个配置文件:/etc/wvdial.conf. wvdial的启

升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法

原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨号连接,连上后两三秒就断了: 2.经过多次按照网上方法修改奇怪的配置,最终根本连不上: 3.删掉DSL Connection重新建立一个,同样的问题: 4.尝试删掉NetworkManager的配置文件,Wired Connection和DSL Connection都删了重启服务,企图恢复最原始的样