Mini210 USB3G网卡拨号上网

一、拨号上网总体流程

mini210的linux文件系统中有“友善之臂”----"3G拨号上网"的选项,但是它的代码没有开源,用户不方便在自己的程序里面主动拨号。
其实使用USB3G网卡的步骤就三步:
1.设置usb转串口驱动支持用户使用的网卡
(modem接受和发送的都是串行数据,现在把modem连接在USB接口上,必然需要USB转串口驱动以实现数据串行发送和串行接收)
2.设置网卡为modem模式
(在window上插上USB网卡后,设备模式首先是作为一个储存设备,里面存放的就是它的驱动,windows系统提醒你安装驱动,当驱动装好后,该设备就转换为一个Modem)
但是在linux下面不能实现从存储模式到Modem模式自动转换,需要用户设置)
3..拨号上网
(家里面装过宽带的人都知道,上网要拨号,拨号成功后,网络提供商就给你分配一个ip用于你和互联网的通信)
二、拨号上网具体设置
2.1 配置内核支持USB转串口
配置内核make menuconfig,确保下面的被选中
Device Drivers---→
   [*]USB support---→
       <*>USB SerialConverter support--→
             [*]USB Generic Serial Driver
            <*>USB driver for GSM and CDMA modems
usb串口驱动在/driver/usb/serial/目录下的usb-serial.c和option.c,根据设备描述符查看该文件中是否支持你的USB设备,如果不支持的话,在源码中,添加
#define    XXXX_VENDOR_ID          0x19d2
#define    XXXX_PRODUCT_ID       0x1234
在option_ids[]的数组中添加
{ USB_DEVICE(XXXX_VENDOR_ID, XXXX_PRODUCT_ID  },完成后,重新编译即可。
设备描述符的获取:
在USB网卡插入前在开发板上(或者PC上)执行lsusb
在USB网卡插入后再开发板上(或者PC上)执行lsusb
这两次多出来的那个设备就是USB网卡,然根据设备描述符看option.c是否支持它。
2.2 USB网卡的模式转换
有很多方法可以实现USB网卡模式转换,这里使用usb_modeswitch这款软件,该软件使用便捷,安装该软件后,唯一需要做的就是配置usb_modeswitch.setup(或usb_modeswitch.conf)文件。该文件的主要功能就是当usb_modeswitch程序运行的时候会根据usb_modeswitch.setup里面硬件信息对USB设备发送转换指令,该文件是根据不同的硬件来设置的。usb_modeswitch.setup的位置在usb_modeswitch源码中有设置,一般放在/etc/usb_modeswitch.setup,也可以程序运行时指定。编译usb_modeswitch需要libusb库的支持。所以usb_modeswitch移植过程如下:
#tar zxf libusb-0.1.12.tar.gz
# ./configure --build=i686-linux --host=arm-linux --prefix=/usr/local/libusb
#make
#make install
安装好后在/usr/local/libusb生成bin include lib这些目录
#tar zxf usb-modeswitch-1.1.2.tar.gz
#vim Makefile
修改它的Makefile使其在编译的时候能够找到libusb的库和头文件
CC  = arm-linux-gcc
$(PROG): $(OBJS)
        $(CC) -o $(PROG) $(OBJS) $(CFLAGS) -I/usr/local/libusb/include -L/usr/local/libusb/lib
#make
#make install
在源码目录的顶层将生成usb_modeswitch可执行文件
将libusb的库文件拷贝到开发板的/usr/lib下,将usb_modeswitch拷贝到/usr/bin,将usb_modeswitch.setup拷贝到/etc目录下。
usb_modeswitch.setup文件格式如下:
这只是很多网卡中的一项,该文件中包括很多网卡的设置,其中一项如下:
########################################################            
# AnyDATA ADU-500A, ADU-510A, ADU-510L, ADU-520A(网卡的型号)
#
# This ID gets an "Option" treatment by newer kernels.                
# Use module option "option_zero_cd=2" with usb-storage.
# A kernel patch to fix the problem is pending
#                                                                 
# Contributor: Vladimir Poluektov, Gabriel Smolar                  
DefaultVendor=  0x05c6 (usb_modeswitch前的设备描述符,或者设备作为储存设备时的设备描述符)                                
DefaultProduct= 0x1000
TargetVendor=   0x05c6((usb_modeswitch后的设备描述符,或者设备作为modem设备时的设备描述符)
TargetProduct=  0x6000 (一个设备的Vendor不变,可以根据它在option.c中找到转换后的设备号,打开它们和关闭usb_modeswitch都成功)                                                              
 # only for reference and 0.x versions(发送usb转换命令的端点号,仅供参考,不一定正确,打开它usb_modeswitch失败) 
; MessageEndpoint=0x08(加;表示关闭该选项,去掉就打开该选项)
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"(转换命令的内容)
########################################################
将上面的文件拷贝到开发板后运行
#./usb_modeswitch      将在/dev目录下产生ttyUSB0~ttyUSB4这几个设备。
2.3 拨号上网
拨号上网使用p2p协议所以需要配置内核支持它。配置选项如下:
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                         
              <*>  PPP Deflate compression                               
              <*>  PPP BSD-Compress compression
我们使用ppp-2.4.4.tar.gz来进行pppd拨号
#tar zxf ppp-2.4.4.tar.gz
#./configure 
#make  CC= arm-linux-gcc 
拨号所用到的程序就是ppp-2.4.4/pppd下的pppd和ppp-2.4.4/chat下的chat可执行程序,将交叉编译出来的这两个应用程序拷贝到开发板 /usr/sbin目录下,更改其属性为可执行文件。该软件可以进行cdma2000,wcdma等拨号,如何根据具体的网卡网络的类型而进行不同的设置呢???

那就是拨号脚本的任务了,我们针对每种网络新建相应的脚本即可,针对我使用的电信网卡最好新建cdma2000,chat-cdma2000-connect,chat-cdma2000-disconnect这3个脚本文件(存放位置/etc/ppp/peers)。

cdma2000内容可如下:(为PPP连接指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等)

nodetach
lock
/dev/ttyUSB0           //指定连接使用的设备
921600                 //设置连接使用的控制字符传输速率
user "ctnet@mycdma.cn" //用户名
password "vnet.mobi"   //密码
crtscts                //告诉ppp使用modem的硬件流量控制
hide-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-cdma2000-connect'  //制定了要使用的chat脚本的位置。加上参数-v 告诉 chat命令将其所有的输出/入拷贝到系统记录里(通常是 /var/log/messages)chat脚本的位置可以位于/etc/目录下,也可以位于/var下,这个可以更加需要灵活设置。
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-cdma2000-disconnect'
chat-cdma2000-connect内容如下:(用来进行AT呼叫和控制的脚本)
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'   //如果收到字符串“NO CARRIER”,“BUSY”,“NO ANSWER”、“NO DIALTONE”就退出执行
'' AT               //MODEM不管收到什么字符串,先发出字符串AT
OK ATZ              //如果收到“OK”字符串,然后发送字符串“ATZ”
OK AT+CFUN=1        //如果收到“OK”字符串,然后发送字符串“AT+CFUN=1”
OK ATDT#777         //如果收到“OK”字符串,然后发送字符串“ATDT#777”
CONNECT ''          //如果收到“CONNECT”字符串,,就不再发送,认为数据链路已建立连接。
chat-cdma2000-disconnect内容如下:
ABORT  OK
ABORT  BUSY
ABORT  DELAYED
ABORT  "NO ANSWER"
ABORT  "NO CARRIER"
ABORT  "NO DIALTONE"
ABORT  VOICE
ABORT  ERROR
ABORT  RINGING         //如果收到以上字符就退出
TIMEOUT  12            //超时时间为12s
""  \K
""  \K
""  \K
""  +++ATH
""  +++ATH
""  +++ATH
""  ATZ                //连续发送 “\K”“\K”“\K”“+++ATH”“+++ATH”“+++ATH”“ATZ ”
SAY "\nGoodbye\n"      //如果收到“SAY”就发送“\nGoodbye\n,认为数据链路已建立断开。

在开发板上执行:
#pppd call cdma2000 就可以开始拨号了
三、mini210拨号过程
3.1 配置内核支持USB转串口(系统自带,无需更改)
3.2 USB网卡的模式转换
按上面的步骤移植好usb_modeswitch后,根据你的USB网卡设置usb_modeswitch.setup,然后再开发板上直接#./usb_modeswitch即可
3.3 拨号上网(系统已做了pppd和chat程序的移植,无需再移植)
直接运行#./pppd chat cdma2000

参考文献:

pppd脚本设置

linux下CDMA拨号

嵌入式linux下USB Modem的使用

嵌入式linux下使用3g卡上网

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值