打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux ppp拨号上网

 https://blog.51cto.com/whylinux/1891506

二配置内核添加PPP拨号上网

在虚拟机的linux上操作

Device Drivers  --->

      。。。。。。

      [*] Network device support  --->

              。。。。。。

              *** CAIF transport drivers ***

              <*>   PPP (point-to-point protocol) support

              [*]     PPP multilink support (EXPERIMENTAL)

              [*]     PPP filtering

              <*>     PPP support for async serial ports

              <*>     PPP Deflate compression

              <*>     PPP BSD-Compress compression

              <*>     PPP MPPE compression (encryption) (EXPERIMENTAL)

              <*>     PPP over Ethernet (EXPERIMENTAL)

              。。。。。。

在内核路径下再make一次将新生成的内核烧进开发板。

三下载编译ppp-2.4.4.tar.gz 下载源码自己解压编译生成可执行命令用于ppp拨号上网

下载地址http://download.csdn.NET/detail/zhyustar/1531748

以下在虚拟机的linux上执行

自己建个sim900文件夹我自己的路径在/home/zzx/fl2440/3rdparty/sim900将下载的ppp-2.4.4.tar.gz放在该目录下

[zzx@localhost sim900]$ tar -xzf ppp-2.4.4.tar.gz

[zzx@localhost sim900]$ ls

ppp-2.4.4  ppp-2.4.4.tar.gz

[zzx@localhost sim900]$ cd ppp-2.4.4

[zzx@localhost ppp-2.4.4]$ ./configure

[zzx@localhost ppp-2.4.4]$ ls

Changes-2.3  etc.ppp   modules   README          README.MSCHAP80  scripts
chat         FAQ       PLUGINS   README.cbcp     README.MSCHAP81  SETUP
common       include   pppd      README.eap-srp  README.pppoe     solaris
configure    linux     pppdump   README.linux    README.pwfd
contrib      Makefile  pppstats  README.MPPE     README.sol2 

[zzx@localhost ppp-2.4.4]$ cd chat/

[zzx@localhost chat]$ vim chat.c



[zzx@localhost chat]$ vim Makefile


[zzx@localhost chat]$ cd ../pppd

[zzx@localhost ppp-2.4.4]$ vim auth.c 

[zzx@localhost pppd]$ vim auth.c 


注.c文件中用/* */做注释Makefile文件中使用#做注释

[zzx@localhost pppd]$ vim Makefile

 

 

[zzx@localhost pppd]$ cd ..

[zzx@localhost ppp-2.4.4]$ make

[zzx@localhost ppp-2.4.4]$ cd chat/

[zzx@localhost chat]$ ls

chat  chat.8  chat.c  chat.o  Makefile  Makefile.linux  Makefile.sol2

[zzx@localhost chat]$ file chat

chat: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

[zzx@localhost chat]$ cd ../pppd

[zzx@localhost pppd]$ file pppd

pppd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

将生成的chat和pppd文件用tftp放到开发板的/usr/sbin/路径下并给于可执行权限chmod a+x chat pppd

四开发板下脚本的编写

以下在开发板上操作

>: mkdir /etc/ppp

>: cd ppp/

>: vi gprs-connect-chat

 

***************************************************

一个简单的chat脚本有下面的结构 
“” AT 
OK ATDT dialnumber 
CONNECT “” 
1) MODEM期望空字符串。这句话的意思直接理解就是MODEM不管收到什么字符串先发出字符串AT 
2) 期望收到“OK”字符串然后发送字符串“ATDT dialnumber” 
3) 如果收到“CONNECT”就不再发送认为数据链路已建立连接。 
4)如果需要进行超时控制就可以加入如下字段 
TIMEOUT 10 
5)如果要增加对特殊情况的处理就加入下面字段 
ABORT BUSY 
ABORT NO ANSWER 
ABORT RINGING 
意思是如果收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出执行。

三大运营商拨号设置

 

**********************************************

编写gprs脚本编写gprs脚本为PPP连接指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等

在/etc/ppp/peers路径下编写gprs脚本注意默认路径为/etc/ppp/peers

>: mkdir peers

>: cd peers/

>: vi gprs 

 

注加上参数-v 告诉 chat命令将其所有的输出入拷贝到系统记录里通常是 #/var/log/messageschat脚本的位置可以位/etc/目录下也可以位于/var下这个可以根据需要灵活设置

测试ppp拨号上网

注意需要将eth0即网口给禁用掉这样ping命令才会通过ppp0端口寻找路由连接外网 

>: ifconfig eth0 down

>: pppd call gprs &        //&为后台运行符
>: abort on (BUSY)
abort on (NO ANSWER)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
abort on (\nRING\r\n\r\nRING\r)
timeout set to 20 seconds
send (^MAT^M)
expect (OK)
^MAT^M^M
OK
 -- got it

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

send (ATDT*99#^M)
Waiting for connect...
expect (CONNECT)
^M
ATDT*99#^M^M
CONNECT
 -- got it

send (^M)
Connect Success!
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x20790fc3> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0xa0000> <auth pap>]
sent [LCP ConfAck id=0x1 <asyncmap 0xa0000> <auth pap>]
rcvd [LCP ConfRej id=0x1 <magic 0x20790fc3> <pcomp> <accomp>]
sent [LCP ConfReq id=0x2 <asyncmap 0x0>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0x0>]
No secret found for PAP login
sent [PAP AuthReq id=0x1 user="root" password=<hidden>]
rcvd [PAP AuthAck id=0x1 "Login OK"]
Remote message: Login OK
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 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=0x2 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
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 [IPCP ConfReq id=0x1 <addr 192.200.1.21>]
sent [IPCP ConfAck id=0x1 <addr 192.200.1.21>]
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.217.45.236> <ms-dns1 218.106.127.114> <ms-dns3 218.104.111.122>]
sent [IPCP ConfReq id=0x3 <addr 10.217.45.236> <ms-dns1 218.106.127.114> <ms-dns3 218.104.111.122>]
rcvd [IPCP ConfAck id=0x3 <addr 10.217.45.236> <ms-dns1 218.106.127.114> <ms-dns3 218.104.111.122>]
local  IP address 10.217.45.236
remote IP address 192.200.1.21
primary   DNS address 218.106.127.114
secondary DNS address 218.104.111.122

>: ifconfig
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.217.45.236  P-t-P:192.200.1.21  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:64 (64.0 B)  TX bytes:125 (125.0 B)

>: ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2): 56 data bytes
64 bytes from 4.2.2.2: seq=0 ttl=51 time=1223.093 ms
64 bytes from 4.2.2.2: seq=1 ttl=51 time=896.179 ms
64 bytes from 4.2.2.2: seq=2 ttl=51 time=629.710 ms
64 bytes from 4.2.2.2: seq=3 ttl=51 time=584.789 ms

--- 4.2.2.2 ping statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max = 584.789/833.442/1223.093 ms 

>: ping www.baidu.com
PING www.baidu.com (180.97.33.107): 56 data bytes
64 bytes from 180.97.33.107: seq=0 ttl=50 time=2204.226 ms
64 bytes from 180.97.33.107: seq=1 ttl=50 time=1383.368 ms
64 bytes from 180.97.33.107: seq=2 ttl=50 time=599.730 ms

--- www.baidu.com ping statistics ---
5 packets transmitted, 3 packets received, 40% packet loss
round-trip min/avg/max = 599.730/1395.774/2204.226 ms 

连接外网成功在/etc/ppp目录下

**************************************

若运行pppd call gprs & 出现下面错误

 

解决先用>: microcom -s 115200 /dev/ttyS1 进行AT串口通信测试  注CTRL+x 为取消microcom指令

>: microcom -s 115200 /dev/ttyS1           //使用microcom命令来进行串口通信相当于pc机上的串口通信软件
AT       //测试串口是否连接上返回OK成功
OK
AT+CPIN?     //测试sim卡是否在位返回READY OK表明检测到卡
+CPIN: READY

OK
AT+CREG?   //判断卡是否注册
+CREG: 1,1     //1 代表当网络注册状态改变时激活网络注册结果码   1代注册到了本地网络 

OK
AT+CSQ      //测试信号强度
+CSQ: 18,0     // 31为最强

OK

我出现上述截图问题是因为没有用大的卡套本人的是小卡所以sim卡没有被检测到

以下为一些常用的检测AT指令

先要用AT命令看看
1 AT有没有反映判断模块是否上电
2 AT+CPIN? 判断卡是否在位 -> AT+CREG? 判断卡是否注册上 

然后才是pppd拨号
只有卡注册到移动运营商上了才能pppd拨号 

AT+CREG
命令解释网络注册及状态查询
命令格式AT+CREG=MODE<CR>
命令返回OK  
    如果输入 AT+CREG? <CR>则返回+CREG: <mode>, <stat> [ ,<lac>,<ci> ]  
    注: <mode>的值共有三个选项,分别是 0 or 1 or 2,  其中0代表关闭网络注册结果码, 1代表当网络注册状态改变时激活网络注册结果码, 2 代表激活网络注册结果码同时显示区域和小区信息.
    <stat>的返回值共有三个,分别是 0, 1, 2,3,4,5 ,  其中 0 代表没有注册网络同时模块没有找到运营商, 1代注册到了本地网络, 2 代表找到运营商但没有注册网络, 3 代表注册被拒绝, 4 代表未知的数据, 5代表注册在漫游状态.
   <lac>表示所属网络区域代码,十六进制格式显示,如: “ 279C” 
   <ci>表示所属网络的小区 ID,十六进制格式显示,如: “ 0EB2”                     
    注: <mode>的值设定为 0 或1 的话, <lac>,<ci>的返回值则不显示.
测试结果A T+CREG=0 <CR>
OK
AT+CREG? <CR>
+CREG: 0,1
 
AT+CREG=1 <CR>
OK
AT+CREG? <CR>
+CREG: 1,1
 
AT+CREG=2 <CR>
OK
AT+CREG? <CR>
+CREG: 2,1, “ 279C” , “ 0EB2” 

AT+CSQ

+CSQ: 12,0 信号强度弱31最强

AT+CGATT?

+CGATT: 1      覆盖到GPRS网络如果返回值是零则可能是SIM卡内没有钱了或者是覆盖不到GPRS网络 

******************************************

*****************************************

还有个错误就是我们将sim卡插到gprs模块后打开开关还需要长按复位键然后一个led灯会变成常闪状态说明正常gprs模块工作之前我的那个灯常闪了十秒左右就又熄灭了后来看上一位使用这个模块的同学博客说是硬件原因将5V-2A的电源线换成9V-2A的就可以保持常闪状态了。他的博客原文地址http://www.cnblogs.com/xiaohexiansheng/p/5723994.html 

*******************************************

*******************************************

有一个问题没能解决就是在执行pppd call gprs &指令后再使用microcom -s 115200 /dev/ttyS1 命令串口不能通信输入AT后并没有得到回显OK先用ps指令查看系统进程用kill指令杀掉pppd call gprs &指令再执行microcom时AT又正常回显了难道是不能同时执行这两个暂不清楚

本文内容出自http://blog.csdn.net/xiongzhizhu/article/details/52202026#comments

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GPRS模块在Linux平台上ppp拨号上网总结与心得
arm中实现pppd连接GPRS上网的相关笔记,含GPRS自动拨号脚本(真正的实时监控,断线自动重拨)
在ARM-linux上实现4G模块PPP拨号上网
嵌入式车载平台的GPRS网络实现
Ubuntu下关闭apache和mysql的开机启动
【转】用伪终端实现GSM模组多路复用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服