fl2440-3G拨号上网

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

开发板     :fl2440

CPU         : s3c2440

linux内核:linux-3.0

开发模块:3G(SIM5360E)

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

 前言:我使用的这个3G模块是芯讯通无线科技有限公司(SIMCom Wireless Solutions,简称SIMCom)研发的,测试用的是联通卡。

 1.内核配置

1.1.源码修改

在内核目录下,进入:drivers/usb/serial/option.c 无线上网卡的驱动代码都在这。 
添加下面这段代码,使其能识别3G模块。

[zoulei@CentOS linux-3.0]$ vim drivers/usb/serial/option.c

638         { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)},/*Add by zoulei for 3G */
驱动模块是与SIM5218一样的,其中0x9000是设备ID。

1.2.添加内核支持

 配置3G模块驱动支持:

Device Drivers  --->
    [*] USB support  ---> 
        <*>   USB Serial Converter support  --->
            <*>   USB driver for GSM and CDMA modems
添加ppp协议:
Device Drivers  --->
     [*] Network device support  --->
         <*>   PPP (point-to-point protocol) support
        [*]PPP multilink support (EXPERIMENTAL)
        [*]PPP filtering
        <*>PPP support for async serial ports
        <*>PPP support for sync tty ports
        <*>PPP Deflate compression
        <*>PPP BSD-Compress compression
make编译之后重新烧录到开发板。

插上3g模块内核打印如下信息:


同时在开发板上查看/dev/路径下的设备:


发现出现ttyUSB1,2,3,4,则说明我的开发板能够识别我的3G模块,便且加载成功了。

2.ppp移植

PPP(点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。

点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。

ppp下载,安装,移植:

[zoulei@CentOS tftp]$ cd 3G/
[zoulei@CentOS 3G]$wget https://coding.net/u/sfantree/p/OSS2/git/raw/master/source/ppp-2.4.5.tar.gz
[zoulei@CentOS 3G]$ cd ppp-2.4.5
[zoulei@CentOS ppp-2.4.5]$ ./configure
[zoulei@CentOS ppp-2.4.5]$ cd chat/
[zoulei@CentOS chat]$ vim chat.c
1168     if (timeout_next) {
1169         timeout_next = 0;
1170         s=clean(s,0); /*Add by zoulei*/
1171         timeout = atoi(s);
1172         free(s);/*Add by zoulei*/
1173         if (timeout <= 0)
1174             timeout = DEFAULT_CHAT_TIMEOUT;
1175 
1176         if (verbose)
1177             msgf("timeout set to %d seconds", timeout);
1178 
1179         return;
1180     }

[zoulei@CentOSchat]$ vim Makefile

16 INSTALL= install
 17 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc  #add by zoulei
 18 
 19 all:    chat
 20 
 21 chat:   chat.o
 22         $(CC) -static -o chat chat.o #Add zoulei
 23         $(CC) -o chat chat.o
[zoulei@CentOS chat]$ cd ../pppd
[zoulei@CentOS pppd]$ vim auth.c
1326 /*Modify by zoulei */
1327     ao->neg_upap = !refuse_pap; //&& (passwd[0] != 0 || get_pap_passwd(NULL));
1328     ao->neg_chap = (!refuse_chap || !refuse_mschap || !refuse_mschap_v2)
[zoulei@CentOS pppd]$ vim Makefile
 33 CC = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc  #add by zoulei
 46 #MPPE=y   #modify by zoulei
 51 #FILTER=y   #modify by zoulei
 56 #HAVE_MULTILINK=y   #modify by zoulei
 68 #PLUGIN=y   #modify by zoulei
[zoulei@CentOS ppp-2.4.5]$ make
[zoulei@CentOS ppp-2.4.5]$ cd chat/
[zoulei@CentOS chat]$ ls
chat  chat.8  chat.c  chat.o  Makefile  Makefile.linux  Makefile.sol2
[zoulei@CentOS chat]$ file chat

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

[zoulei@CentOS chat]$ cd ../pppd
[zoulei@CentOS pppd]$ file pppd
pppd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
把chat和pppd下载到开发板的/usr/sbin中,并给予777权限

3.编写脚本

开发板上操作:

>: mkdir -p /etc/ppp/peers

>: cd etc/ppp/peers/

>: pwd/etc/ppp/peers

3.1.编写全局配置文件

>: vi wcdma

#set debug ,send message to /var/log/messages
debug
#To keep pppd on the terminal
nodetach
lock
#set seriral
/dev/ttyUSB3
# set baudrate
115200
user "zoulei"
password "zoulei"
# set flowrate
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
# Accept the peer's idea of our local IP address
ipcp-accept-local
# ipcp-accept-remote
ipcp-accept-remote
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'

它的作用是给pppd进程提供配置参数:

3.2.编写拨号脚本:

>: vi wcdma-chat-connect

ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'
'' \rAT
OK \rATZ
#联通3g接入点:3gnet
OK \rAT+CGDCONT=1,"IP","3gnet",,0,0
#这里要注意是哪个运营商,拨号号码是不同的。如此处的是联通的拨号设置
OK-AT-OK ATDT*99#
CONNECT \d\c
3.3. 编写拨号错误处理脚本:
>: vi wcdma-chat-disconnect

ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\nSending break to the modem\n"
'' "\K"
'' "+++ATH"
SAY "\nGoodbay\n"

查看三个文件:

> : pwd

/etc/ppp/peers

>:ls

wcdma wcdma-chat-connect wcdma-chat-disconnect
*********************************************************************************************************************

注意:pppd调用chat会话进程接入对端isp,启动对端的pppd,然后本地pppd与对端的pppd一起进行协商网络参数和chap/pap认证,

成功后,再进行ncp层的ip的分配。

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

4.拨号

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

注意:在拨号之前一定要先检测SIM卡是否准备好,microcom命令串口调试,查看AT命令是否有OK回显。这一步至关重要!!!

本人就因为没有注意这一步,结果SIM卡没有插好。导致一直拨号失败,就因为这一步浪费了很多时间,深刻的教训啊!(>.<)

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

>:microcom -s 115200 /dev/ttyUSB3


信号太差了!这里的usb接口3G模块需要一个一个试,我的开发板上有4个usb接口,但是经过测试只有ttyUSB3是可以用的,ttyUSB2会卡死,

拨号命令:>:pppdcall wcdma&

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

说明:加上&符号主要是因为拨号成功后,程序会一直执行不退出,所以采用后台运行的方式执行,假如有多个3G卡可能就会产生多个ttyUSB*的设备

文件,同时会需要多个wcdma文件此时可以采用pppd call wcdma1来为3G模块1进行ppp拨号,pppd call wcdma是作用是建立协议,并生成网络

接口ppp0。

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

拨号成功会打印如下信息,且能够获取ip地址。如果获取不了ip,一般是信号不好,这时候加一根GPRS天线即可。


看到分配完IP即为拨号成功,并且ifconfig下会添加ppp0接口:


这时候直接上外网是不行的,还没有设置DNS,这就需要设置DNS。

>:vi /etc/resolv.conf 
nameserver 4.2.2.2 
nameserver 114.114.114.114
>: mv /etc/resolv.conf /etc/resolv.conf.bak
>: ln -s /etc/ppp/resolv.conf /etc/resolv.conf
//建立一个软链接,链接到全局DNS才能访问。
>:route add default gw 10.64.64.64 //添加默认网关
ping 测试:



遇到的问题:

1.pppd拨号一直失败:


解决:SIM卡没有放好,正确放好SIM卡问题得以解决。

2.pppd拨号获取不了IP和DNS

解决:原因是信号不好,在3G模块加根gprs/gps天线得以解决。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值