600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > GPRS模块实现拨号上网

GPRS模块实现拨号上网

时间:2022-07-05 11:35:51

相关推荐

GPRS模块实现拨号上网

首先,我用的是广和通公司开发、生产的G600 GSM/GPRS模块开发套件(型号:GT8611-G6)。G600开发套件是广和通公司以FIBOCOM G600 GSM/GPRS模块为基础,按工业标准开发的无线数据通信产品。以下是具体过程:

一.配置内核

在以前的基础上配置内核支持ppp上网功能:

make menuconfig

DeviceDrivers--→

Network devicesupport---→

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

[*]PPPmultilinksupport(EXPERIMENTAL)

<*>PPPsupportforasyncserialports

<*>PPPsupportforsyncttyports

<*>PPPDeflatecompression

<*>PPPBSD-Compresscompression

二、制作chat和pppd工具

lingyun@localhost apps]$ mkdir ppp

[lingyun@localhost apps]$ cd ppp/

[lingyun@localhost ppp]$ ls

[lingyun@localhost ppp]$ wget ftp:///pub/ppp/ppp-2.4.4.tar.gz

[lingyun@localhost ppp]$ tar zxf ppp-2.4.4.tar.gz

[lingyun@localhost ppp]$ ls

ppp-2.4.4 ppp-2.4.4.tar.gz

[lingyun@localhost ppp]$ cd ppp-2.4.4

[lingyun@localhost ppp-2.4.4]$ ls

Changes-2.3 contrib linux pppdump README.eap-srp README.MSCHAP81 scripts

chatetc.ppp modules pppstats README.linux README.pppoe SETUP

common FAQ PLUGINS README README.MPPE README.pwfd solaris

configure include pppd README.cbcp README.MSCHAP80 README.sol2

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

Configuring for Linux

Creating Makefiles.

Makefile <= linux/Makefile.top

pppd/Makefile <= pppd/Makefile.linux

pppstats/Makefile <= pppstats/Makefile.linux

chat/Makefile <= chat/Makefile.linux

pppdump/Makefile <= pppdump/Makefile.linux

pppd/plugins/Makefile <= pppd/plugins/Makefile.linux

pppd/plugins/rp-pppoe/Makefile <= pppd/plugins/rp-pppoe/Makefile.linux

pppd/plugins/radius/Makefile <= pppd/plugins/radius/Makefile.linux

pppd/plugins/pppoatm/Makefile <= pppd/plugins/pppoatm/Makefile.linux

配置chat

[lingyun@localhost ppp-2.4.4]$ cd chat

[lingyun@localhost chat]$ ls

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

[lingyun@localhost chat]$ vim chat.c

168 if (timeout_next) {

1169 timeout_next = 0;

1170 s = clean(s,0); /*add by liuchengdeng*/

1171 timeout = atoi(s);

1172 free(s); /* add by liuchengdeng */

1173

1174 if (timeout <= 0)

1175timeout = DEFAULT_CHAT_TIMEOUT;

[lingyun@localhost chat]$vim Makefile

3 DESTDIR = $(INSTROOT)/usr/local

4 BINDIR = $(DESTDIR)/sbin

5 MANDIR = $(DESTDIR)/share/man/man8

6 CC=/opt/buildroot-.11/arm920t/usr/bin/arm-linux-gcc #add by liuchengdeng

7

8 CDEF1= -DTERMIOS# Use the termios structure

18

19 all: chat

20

21 chat: chat.o

22 $(CC) -static -o chat chat.o # modify by liuchengdeng

23

24 chat.o: chat.c

[lingyun@localhost chat]$ cd ..

[lingyun@localhost ppp-2.4.4]$ ls

Changes-2.3 contrib linux pppd README.cbcp README.MSCHAP80 README.sol2

chatetc.ppp Makefile pppdump README.eap-srp README.MSCHAP81 scripts

common FAQ modules pppstats README.linux README.pppoe SETUP

configure include PLUGINS README README.MPPE README.pwfd solaris

配置 pppd

[lingyun@localhost ppp-2.4.4]$ cd pppd

[lingyun@localhost ppp-2.4.4]$vim Makefile

添加交叉编译器的路径:

CC =/opt/buildroot-.11/arm920t/usr/bin/arm-linux-gcc

注释掉以下几个配置:

48#MPPE=y

53#FILTER=y

70#PLUGIN=y

[lingyun@localhost pppd]$ vim auth.c

修改如下:

1315 hadchap = -1;

1316 //ao->neg_upap = !refuse_pap && (passwd[0] != 0 || get_pap_passwd(NULL));

1317 ao->neg_upap = !refuse_pap; //modify by liuchengdeng

1318 ao->neg_chap = (!refuse_chap || !refuse_mschap || !refuse_mschap_v2)

[lingyun@localhost chat]$ cd ..

[lingyun@localhost ppp-2.4.4]$ make

编译成功后可以看到:

lingyun@localhost ppp-2.4.4]$ cd chat

[lingyun@localhost chat]$ ls

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

[lingyun@localhost chat]$ cd ..

[lingyun@localhost ppp-2.4.4]$ cd pppd

[lingyun@localhost pppd]$ ls

auth.c chap_ms.o eui64.c ipxcp.omd4.cplugins spinlock.h upap.c

auth.o chap-new.c eui64.h lcp.cmd4.hpppcrypt.c spinlock.o upap.h

cbcp.c chap-new.h fsm.c lcp.hmd4.opppcrypt.h srp-entry.8 upap.o

cbcp.h chap-new.o fsm.h lcp.omd5.cpppcrypt.o srp-entry.c utils.c

ccp.c demand.c fsm.o magic.cmd5.hpppd sys-linux.c utils.o

ccp.h demand.o ipcp.c magic.hmd5.opppd.8 sys-linux.o

ccp.o eap.c ipcp.h magic.omultilink.c pppd.h sys-solaris.c

chap-md5.c eap.h ipcp.o main.cmultilink.o ppp.pam tdb.c

chap-md5.h eap.o ipv6cp.c main.ooptions.c sha1.c tdb.h

chap-md5.o ecp.c ipv6cp.h Makefile options.o sha1.h tdb.o

chap_ms.c ecp.h ipxcp.c Makefile.linux patchlevel.h sha1.o tty.c

chap_ms.h ecp.o ipxcp.h Makefile.sol2 pathnames.h spinlock.c tty.o

把编译生成的chat和pppd文件下载到开发板的usr/sbin/目录下如下

[root@root /]# ls usr/sbin/

apmevent_button msm_test s3c_adc test

chatgprs-chat my_msm_test s3c_button test_s3c_led

dev_adc ifup-ppp plat_led_test serial

dropbear led_test pppdssh

三、配置上网相关的脚本

添加默认路由文件:

[root@root /]#mkdirapps/etc/ppp/gprs-chat

[root@root /]# cd etc

[root@root /etc]# vim resolv.conf

nameserver 4.2.2.2

nameserver 8.8.8.8

配置拨号脚本:

[root@root /]# cd usr/sbin/

[root@root sbin]# vim ifup-ppp

#!/bin/sh

# FILE:/usr/sbin/ifup-ppp

# This file used to do PPP dial up.

#--------------------------------------------------

# Function definition here

#--------------------------------------------------

usage()

{

prog=`basename $0`

echo "$prog Usage: $prog [-d /dev/ttyUSB0] [-a apn] [-u username] [-p password] [-v chap/pap] [-i ip

echo ""

echo " This shell script used to do pppd dial up on GPRS/3G modem, if no options gived, it"

echo "will use the default configure file \"$network_cfg_dir/ifcfg-pppXX\". If get options"

echo "in this command, it will use the option from the command line, and be careful the -d"

echo "option must be given to specify the modem device."

echo ""

echo "pppXX: Required, specify the dial up generated PPP device, such as ppp10."

echo "-d: Required, if use command line options, specify the modem TTY device."

echo "-a: Option, APN(Access Point Name) for the SIM card provider."

echo "-u: Option, username for the GPRS login if needed."

echo "-p: Option, password for the GPRS login if needed."

echo "-v: Option, authenticate method, pap or chap."

echo "-i: Option, <local_IP_address>:<remote_IP_address> such as 0.0.0.0:0.0.0.0 "

echo "Example: ifup-ppp -d /dev/ttyUSB0 -a 3gnet -u uid -p pwd ppp10"

echo ""

echo "Copyright (C) GuoWenxue <guowenxue@>"

exit

}

#===============================

# Global variable declare =

#===============================

modem=

inf=

apn=

uid=

pwd=

# Configure file

if [ -z "$network_cfg_dir" ]; then

export network_cfg_dir=/apps/etc/network

fi

#===============================

# Shell body start here =

#===============================

if [ $# -lt 1 ] ; then

usage;

elif [ $# -eq 1 ] ; then

inf=$1

conf=ifcfg-$inf

cd $network_cfg_dir

if [ ! -f $conf ]; then

echo "================================================================================="

echo "ERROR: $inf dial up configure file \"$network_cfg_dir/$conf\" not found!"

echo "================================================================================="

echo ""

usage;

exit;

fi

. $conf

modem=$MODEM

apn=$APN

uid=$USERNAME

pwd=$PASSWORD

vrfy=$VERIFY

ipaddr=$IPADDR

cd -

else

while getopts "a:d:u:p:v:hi:" Option

do

case $Option in

d) modem=$OPTARG ;;

i) ipaddr=$OPTARG ;;

a) apn=$OPTARG ;;

u) uid=$OPTARG ;;

p) pwd=$OPTARG ;;

v) vrfy=$OPTARG ;;

h) pwd=$OPTARG; usage ;;

esac

done

shift $(($OPTIND - 1))

inf=$*

fi

if [ -z "$modem" ] ; then

usage;

exit;

fi

if [ ! -c "$modem" ] ; then

echo "ERROR: Modem device $modem doesn't exist!"

exit

fi

inf=$( echo $inf | tr -cd '[0-9]\n' )

# Chat script need these two variable

export APN=$apn

export DIALNUM="*99***1#"

chat_script="/etc/ppp/gprs-chat"

#======================

# The pppd options #

#======================

options="$modem 115200"

if [ -n "$uid" -a -n "pwd" ]; then

options=$options" name $uid"

options=$options" password $pwd"

fi

if [ -n "$inf" ] ; then

options=$options" unit $inf"

fi

if [ "$vrfy" == "chap" ] ; then

options=$options" require-chap"

else

options=$options" require-pap"

fi

# Restart after idle X second

options=$options" idle 86400"

options=$options" refuse-mschap refuse-mschap-v2 refuse-eap"

options=$options" nodefaultroute updetach"

options=$options" debug"

options=$options" lcp-echo-failure 3 lcp-echo-interval 5"

options=$options" ipcp-accept-local ipcp-accept-remote ipcp-restart 50"

options=$options" modem crtscts"

if [ -n "$ipaddr" ] ; then

options=$options" $ipaddr"

fi

# Let the phone figure out all the IP addresses

options=$options" noipdefault"

options=$options" noauth"

# No ppp compression

options=$options" novj noccp novjccomp"

# For sanity, keep a lock on the serial line

options=$options" lock"

#=================================

# PPP dial up command start up #

#=================================

set -x

#chat option should can be: -v -E -V -f

pppd $options connect "/usr/sbin/chat -v -E -f $chat_script"

if [ -d /sys/class/net/ppp$inf ] ; then

ip route add default dev ppp$inf metric 10

#ip route add default dev ppp$inf

/apps/tools/gatewayD > /dev/null 2>&1

fi

以上是我们实验室用的拨号脚本。

当GPRS模块都准备好后(SIM可以工作),直接运行拨号脚本就可以了。

四、拨号上网

[root@root /]# ifup-ppp -d /dev/ttyS1 -a 3gnet ppp10 (/dev/ttyS1 是串口设备文件,3gnet 表示是联通的卡,PPP10创建的网卡名字)

+ pppd /dev/ttyS1 115200 unit 10 require-pap idle 86400 refuse-mschap refuse-mschap-v2 refuse-eap nodefaultroute updetach debug lcp-echo-failure 3 lcp-echo-interval 5 ipcp-accept-local ipcp-accept-remote ipcp-restart 50 modem crtscts noipdefault noauth novj noccp novjccomp lock connect /usr/sbin/chat -v -E -f /etc/ppp/gprs-chat

+ requesting data connection

+ connected

Script /usr/sbin/chat -v -E -f /etc/ppp/gprs-chat finished (pid 824), status = 0x0

Serial connection established.

using channel 4

Using interface ppp10

Connect: ppp10 <--> /dev/ttyS1

sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x424c7c9f> <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 0x424c7c9f> <pcomp> <accomp>]

sent [LCP ConfReq id=0x2 <asyncmap 0x0>]

rcvd [LCP ConfAck id=0x2 <asyncmap 0x0>]

sent [LCP EchoReq id=0x0 magic=0x0]

No secret found for PAP login

sent [PAP AuthReq id=0x1 user="root" password=<hidden>]

rcvd [LCP EchoRep id=0x0 magic=0x0]

rcvd [PAP AuthAck id=0x1 "Login OK"]

Remote message: Login OK

PAP authentication succeeded

sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]

sent [LCP EchoReq id=0x1 magic=0x0]

rcvd [LCP EchoRep id=0x1 magic=0x0]

sent [LCP EchoReq id=0x2 magic=0x0]

rcvd [LCP EchoRep id=0x2 magic=0x0]

sent [LCP EchoReq id=0x3 magic=0x0]

rcvd [LCP EchoRep id=0x3 magic=0x0]

sent [LCP EchoReq id=0x4 magic=0x0]

rcvd [LCP EchoRep id=0x4 magic=0x0]

sent [LCP EchoReq id=0x5 magic=0x0]

rcvd [LCP EchoRep id=0x5 magic=0x0]

sent [LCP EchoReq id=0x6 magic=0x0]

rcvd [LCP EchoRep id=0x6 magic=0x0]

sent [LCP EchoReq id=0x7 magic=0x0]

rcvd [LCP EchoRep id=0x7 magic=0x0]

sent [LCP EchoReq id=0x8 magic=0x0]

rcvd [LCP EchoRep id=0x8 magic=0x0]

sent [LCP EchoReq id=0x9 magic=0x0]

rcvd [LCP EchoRep id=0x9 magic=0x0]

sent [IPCP ConfReq id=0x1 <addr 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 ConfNak id=0x1 <addr 10.15.95.177>]

sent [IPCP ConfReq id=0x2 <addr 10.15.95.177>]

sent [LCP EchoReq id=0xa magic=0x0]

rcvd [IPCP ConfAck id=0x2 <addr 10.15.95.177>]

local IP address 10.15.95.177

remote IP address 192.200.1.21

+ [ -d /sys/class/net/ppp10 ]

+ ip route add default dev ppp10 metric 10

+ /apps/tools/gatewayD

说明成功了

[root@root /]# ifconfig

eth0 Link encap:Ethernet HWaddr 72:93:14:05:0A:A3

inet addr:192.168.1.111 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:26449 errors:0 dropped:4 overruns:0 frame:0

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

collisions:0 txqueuelen:1000

RX bytes:4704472 (4.4 MiB) TX bytes:2261973 (2.1 MiB)

Interrupt:51 Base address:0x4300

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

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

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

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

ppp10 Link encap:Point-to-Point Protocol

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

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

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

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

collisions:0 txqueuelen:3

RX bytes:30 (30.0 B) TX bytes:40 (40.0 B)

[root@root /]# 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=48 time=897.936 ms

64 bytes from 4.2.2.2: seq=1 ttl=48 time=591.802 ms

64 bytes from 4.2.2.2: seq=2 ttl=48 time=573.460 ms

^C

--- 4.2.2.2 ping statistics ---

4 packets transmitted, 3 packets received, 25% packet loss

round-trip min/avg/max = 573.460/687.732/897.936 ms

[root@root /]# wget ftp:///pub/ppp/ppp-2.4.4.tar.gz

Connecting to (216.83.154.106:21)

ppp-2.4.4.tar.gz 1% | | 9436 0:04:48 ETA^

(我手机流量有限在这里就停止下载了)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。