fl2440-3G拨号上网
来源:互联网 发布:时尚芭莎 知乎 编辑:程序博客网 时间:2024/06/01 09:14
***********************************************************************************************************************************************************************************
开发板 :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 compressionmake编译之后重新烧录到开发板。
插上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/messagesdebug#To keep pppd on the terminalnodetachlock#set seriral/dev/ttyUSB3# set baudrate115200user "zoulei"password "zoulei"# set flowratecrtsctsshow-passwordusepeerdnsnoauthnoipdefaultnovjnovjccompnoccp# Accept the peer's idea of our local IP addressipcp-accept-local# ipcp-accept-remoteipcp-accept-remoteconnect '/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''' \rATOK \rATZ#联通3g接入点:3gnetOK \rAT+CGDCONT=1,"IP","3gnet",,0,0#这里要注意是哪个运营商,拨号号码是不同的。如此处的是联通的拨号设置OK-AT-OK ATDT*99#CONNECT \d\c3.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天线得以解决。
- fl2440-3G拨号上网
- fl2440模块学习——3G拨号上网
- 3G拨号上网
- FL2440 3G上网卡拨号上网,并实现mdev自动挂载
- Openwrt 3G拨号上网
- 华为3G模块拨号上网
- 3G模块拨号上网设置
- Openwrt 3G拨号上网
- Openwrt 3G拨号上网
- fl2440 3G拨号
- linux下使用3G拨号上网
- linux下使用3G拨号上网
- 开发板 3G 网卡拨号上网
- 3G拨号上网之一,内核编译
- 3G模块SIM5360E实现拨号上网功能
- arm9+linux fl2440 GPRS SIM卡 模块 ppp拨号上网
- fl2440添加SIM5900B GPRS模块,进行拨号上网,打电话。
- 3G模块在WinCE系统上拨号上网配置过程描述
- 记住密码实现登陆功能,简单,易懂。
- AngularJs自定义指令实例
- 苹果App Store应用程序分级系统工作原理
- centos 镜像文件各个版本的区别
- Python学习之旅-12
- fl2440-3G拨号上网
- HBase hbck 命令
- 128. Longest Consecutive Sequence(第十六周)
- 五分钟理解一致性哈希算法(consistent hashing)
- MMQ在.NET中的使用
- 音频架构
- warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the c
- 使用WKWebView替换UIWebView
- 编辑文章