1. 简单使用:
1.1 选型:
中国联通:E网时空 EW65 (64元), ZTE中兴 MF637U (160多)
中国电信:Benton/本腾 EQ10B (35元)
中国移动:华为 ET128 (99元), 不要用ZTE A371(Linux下不支持)

更多型号可参考: usb_modeswitch的device_reference.txt

1.2 使用步骤(以windows为例)
a. 接上发现移动硬盘,里面有安装程序和驱动程序
b. 安装完后,移动硬盘消失;
c. 发现新硬件,自动安装好驱动程序后,发现2个串口和一个modem
d. 运行程序即可拨号上网

zeroCD: 3G上网卡自带程序,接到PC后先作为移动硬盘使用,安装程序后切换为modem

对于Linux使用过程:
a. 接上后切换mode: usb_modeswitch
b. 安装驱动程序: linux内核自带, 会出现3个ttyUSB0,1,2
c. 拨号上网:pppd

1.3 交叉编译应用程序并测试
配置内核
-> Device Drivers
  -> Network device support
    <*> PPP (point-to-point protocol) support
    <*> PPP BSD-Compress compression
    <*> PPP Deflate compression
    [*] PPP filtering
    <*> PPP MPPE compression (encryption) (EXPERIMENTAL)
    [*] PPP multilink support (EXPERIMENTAL)
    <*> PPP over Ethernet (EXPERIMENTAL)
    <*> PPP support for async serial ports
    <*> PPP support for sync tty ports
-> Device Drivers
  -> USB support
    <M> USB Serial Converter support
    <M> USB driver for GSM and CDMA modems

make uImage && make modules

应用程序源码:
http://www.draisberghof.de/usb_modeswitch/
http://www.libusb.org/
ftp://ftp.samba.org/pub/ppp/

交叉编译:
libusb:
./configure --host=arm-linux --prefix=$PWD/tmp
make
make install
cd把头文件和库复制进交叉工具链里

cd ./tmp/include/libusb-1.0

sudo cp libusb.h /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

cd ./tmp/lib

sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

把库复制到根文件系统的lib目录下
sudo cp *so* -d /work/nfs_root/fs_mini_mdev_new/lib/

usb_modeswitch:
修改Makefile
CC = arm-linux-gcc
LIBS = -lusb-1.0//根据前面安装的libusb库libusb-1.0 把“ib”去掉

make DESTDIR=$PWD/tmp
make DESTDIR=$PWD/tmp install

cd tmp
sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new

usb-modeswitch-data-20131113:
make DESTDIR=$PWD/tmp install
cd tmp//在usr/share/usb_modeswitch中有一大堆配置文件

sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new

pppd:
修改这6个文件, "$(INSTALL) -s"改为"$(INSTALL) "//-s 在make install的时候会提示一些符号无法识别,具体意思可查看install指令,这里也可以把-s改为-strip-program = arm-linux-strip
chat/Makefile.linux
pppd/plugins/radius/Makefile.linux
pppd/plugins/rp-pppoe/Makefile.linux
pppd/Makefile.linux
pppdump/Makefile.linux
pppstats/Makefile.linux

./configure --host=arm-linux --prefix=$PWD/tmp
make CC=arm-linux-gcc
make CC=arm-linux-gcc install
cd tmp
sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new

使用:
A. 以mf637为例
参考 HI3515海思开发板移植3G模块笔记 - 倔强的晓奇 - 博客频道 - CSDN.NET.htm
http://blog.csdn.net/alangdangjia/article/details/9413009
a. 用新内核启动开发板
复制驱动: sudo cp drivers/usb/serial/*.ko /work/nfs_root/fs_mini_mdev_new
b. 接上3G上网卡,用lsusb查看VID/PID
lsusb
Bus 001 Device 002: ID 19d2:2000

c. 使用usb_modeswitch切换工作模式
它需要一个配置文件,使用上面得到的VIP/PID在device_reference.txt里找到一段配置值,
写入一个文件mf637.cfg
把它放到开发板的/etc目录
usb_modeswitch -c /etc/mf637.cfg(执行后lsusb会发现ID值有改变:TargetProduct

d. 安装驱动程序
insmod usbserial.ko
insmod usb_wwan.ko
insmod option.ko

ls /dev/ttyUSB*会发现三个usb设备节点,pppd切换模式的时候使用其中一个串口,需要在/etc/ppp/peers/下的配置文件中指定然后尝试

e. 用pppd拨号
对于mf637:
修改/etc/ppp/peers/wcdma-dailer, 使用/dev/ttyUSB2
pppd call wcdma-dailer &
cp /etc/ppp/resolv.conf /etc/resolv.conf
ping news.qq.com

B. 以EW65为例
在device_refeence.txt里选取一段存为ew65.cfg
板上接入EW65后执行:usb_modeswitch -c /etc/ew65.cfg
修改/etc/ppp/peers/wcdma-dailer, 使用/dev/ttyUSB0
pppd call wcdma-dailer &
cp /etc/ppp/resolv.conf /etc/resolv.conf
ping news.qq.com

C. 中国电信:Benton/本腾 EQ10B (35元)
在device_refeence.txt里选取一段存为eq10b.cfg
板上接入EQ10B后执行:usb_modeswitch -c /etc/eq10b.cfg
修改/etc/ppp/peers/evdo-dailer, 使用/dev/ttyUSB0
pppd call evdo-dailer &
cp /etc/ppp/resolv.conf /etc/resolv.conf
ping news.qq.com

D. 中国移动 ET128
在device_refeence.txt里选取一段存为et128.cfg
板上接入EQ10B后执行:usb_modeswitch -c /etc/et128.cfg

D的设置需要参考下面文章,因为其使用的不是ttyUSB串口,其使用的是ttyACM:
http://wenku.baidu.com/link?url=pVNn9okBYfUAHiNDBdtpGXselQ9uYVj1lKL5WPmEYaOpMawiYamLrtRcdRZgy5LslcPQL28ySW7q282o1VdBqciHZmsjaRsQ5Xj97oYDqce

配置内核:
-> Device Drivers
-> USB support
<M> USB Modem (CDC ACM) support

sudo cp drivers/usb/class/cdc-acm.ko /work/nfs_root/fs_mini_mdev_new/

ls /dev/ttyACM*
/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2

根据下面的贴子修改td-dailer脚本:
http://wenku.baidu.com/link?url=pVNn9okBYfUAHiNDBdtpGXselQ9uYVj1lKL5WPmEYaOpMawiYamLrtRcdRZgy5LslcPQL28ySW7q282o1VdBqciHZmsjaRsQ5Xj97oYDqce

pppd call td-dailer &

2. 编写控制程序自动使用各种型号3G上网卡
a. usb_modeswitch -c /etc/... // 1. 对于不同的3G上网卡配置信息不一样
b. insmod ...
c. pppd call wcdma-dailer // 2. 对于不同的3G上网卡使用不同的/dev/ttyUSB
pppd call evdo-dailer
pppd call td-dailer

写一个控制程序:
a. 接上3G上网卡后它会调用usb_modeswitch并提供对应的配置信息
b. 当识别出/dev/ttyUSB...后, 它创建一个链接文件/dev/gsmmodem指向拨号时要用的/dev/ttyUSB

参考PC上对3G上网卡的识别过程:
在PC上编译、安装: libusb-1.0.9.tar.bz2, usb-modeswitch-2.0.1.tar.bz2, usb-modeswitch-data-20131113.tar.bz2, ppp-2.4.5.tar.gz7
重启电脑
接上USB 3G上网卡
分析PC操作过程:
a. 从/lib/udev/rules.d/40-usb_modeswitch.rules可知
接上3G上网卡后将执行: usb_modeswitch '%b/%k'
执行的是:/lib/udev/usb_modeswitch
它又会调用/usr/sbin/usb_modeswitch_dispatcher
b. /usr/sbin/usb_modeswitch_dispatcher会调用usb_modeswitch进行模式切换
它调用:/usr/sbin/usb_modeswitch -W -D -s 20 $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f "$configBuffer"
它并不使用配置文件,而是使用-f参数, 这些参数来自/usr/share/usb_modeswitch
在/usr/share/usb_modeswitch里有众多文件,已"vid:pid"为名

/usr/sbin/usb_modeswitch_dispatcher根据3G上网卡的vid,pid找到/usr/share/usb_modeswitch里的文件,
然后执行:usb_modeswitch -V vid -P pid -f "文件里的内容"

以上操作见源码中写的应用程序,同时修改/etc/mdev.conf ,添加:

usbdev[0-9]+.[0-9]+ 0:0 777 @ 3g_manager switch &MDEV > /dev/console//MDEV就是指的usbdev1.X设备

可以实现插入网卡后自动切换
c. 怎么创建接文件/dev/gsmmodem:(见代码里面的ln指令,同时修改\etc\ppp\peers下的配置文件把/dev/TTYUSBX改为/dev/gsmmodem)下面说明在/usr/sbin/usb_modeswitch_dispatcher中
# The facility to add a symbolic link pointing to the
# ttyUSB port which provides interrupt transfer, i.e.
# the port to connect through.
# Will check for interrupt endpoint in ttyUSB port (lowest if
# there is more than one); if found, return "gsmmodem[n]" name
# to udev for symlink creation
/dev/gsmmodem是指向一个/dev/ttyUSBX, 这个/dev/ttyUSBX所对应的interface含有"中断类型的端点"
如果有多个/dev/ttyUSBX有中断类型端点, 则/dev/gsmmodem指向最小的/dev/ttyUSBX

以上操作见源码中写的应用程序,同时修改/etc/mdev.conf ,添加:

TTYUSB[0-9]+ 0:0 777 @ 3g_manager link &MDEV > /dev/console//MDEV就是指的usbdev1.X设备

可以实现插入网卡后自动切换

怎么判断ttyUSB有无中断类型端点:
# In case the device path is returned as /sys/class/tty/ttyUSB,
# get the USB device path from linked tree "device"
/* 1. 对于每一个/dev/ttyUSBX
* 都有一个对应的/sys/class/tty/ttyUSBX
* 2. 它是一个链接文件, 指向: /sys/......../1-1:1.0/ttyUSB0/tty/ttyUSB0(ls ttyUSB* -l)
* 3. 进入/sys/......../1-1:1.0/   目录下查看,
* 里面有多个"ep_"的子目录cat ep_01/type 可以查看端点类型
* 4. 子目录里有名为type的文件
* 5. 如果这个文件的内容为Interrupt, 则返回1
*
*/

参考文章:
嵌入式Linux下3G USB Modem的使用 - 空之轨迹~约修亚 - 博客频道 - CSDN.NET.htm
http://blog.csdn.net/ling1874/article/details/8148822
http://wenku.baidu.com/link?url=HLRk3U9Jbr2Zx35e5knamYeUKYs14bhV3F9-hzC6rWMwdxCu2gTtAR89VBAdpoAF4UC9LmxCPxGLbjAu_XoSXuy065ZbbvfwtWm9vLy5UWe

配置文件最全:
HI3515海思开发板移植3G模块笔记 - 倔强的晓奇 - 博客频道 - CSDN.NET.htm
http://blog.csdn.net/alangdangjia/article/details/9413009

好文章:ppp及usb_modeswitch等工具移植说明_百度文库.htm
http://wenku.baidu.com/link?url=Y7gsW5izmXwzur3VS3hGYWV_k_glZwzmu7Prdh_F69LuFxcOGT1LwhtsmXA3TVhR6F0l8_ozspcQvO08nlHex2yss0EW7wWIzysw9cZn-wu

1. http://www.draisberghof.de/usb_modeswitch/
http://www.libusb.org/

wvdial arm移植笔记 .-UP-NETARM2410-ChinaUnix博客.htm
http://blog.chinaunix.net/uid-20759926-id-3337026.html

wvdial:
http://alumnit.ca/wiki/index.php?page=WvDial

How to interface USB modem to ARM board (for android or linux)
http://embeddlinux.blogspot.com/2013/01/how-to-interface-usb-modem-to-arm-board.html

嵌入式Linux下3G无线上网卡的驱动移植
http://www.embeddedlinux.org.cn/html/yingjianqudong/201303/15-2489.html

pppd
ftp://ftp.samba.org/pub/ppp/

嵌入式Linux下3G USB Modem的使用 - 空之轨迹~约修亚 - 博客频道 - CSDN.NET.htm
http://blog.csdn.net/ling1874/article/details/8148822
http://wenku.baidu.com/link?url=HLRk3U9Jbr2Zx35e5knamYeUKYs14bhV3F9-hzC6rWMwdxCu2gTtAR89VBAdpoAF4UC9LmxCPxGLbjAu_XoSXuy065ZbbvfwtWm9vLy5UWe

配置文件最全:
HI3515海思开发板移植3G模块笔记 - 倔强的晓奇 - 博客频道 - CSDN.NET.htm
http://blog.csdn.net/alangdangjia/article/details/9413009

好文章:ppp及usb_modeswitch等工具移植说明_百度文库.htm
http://wenku.baidu.com/link?url=Y7gsW5izmXwzur3VS3hGYWV_k_glZwzmu7Prdh_F69LuFxcOGT1LwhtsmXA3TVhR6F0l8_ozspcQvO08nlHex2yss0EW7wWIzysw9cZn-wu

udev详解-ChinaUnix操作系统频道.htm
http://os.chinaunix.net/a2008/0626/982/000000982085.shtml

Linux USB FAQ.htm
http://www.linux-usb.org/FAQ.html

lsusb
https://www.kernel.org/pub/linux/utils/usb/usbutils/

/lib/udev/usb_modeswitch /1-1
if [ -e "/etc/init/usb-modeswitch-upstart.conf" ]; then
exec /sbin/initctl emit --no-wait usb-modeswitch-upstart UMS_PARAM=$1

/usr/sbin/usb_modeswitch_dispatcher --switch-upstart /1-1
/sbin/initctl emit --no-wait usb-modeswitch-upstart UMS_PARAM=/1-1

/usr/sbin/usb_modeswitch_dispatcher --switch-mode $1

/usr/sbin/usb_modeswitch -W -D -s 20 -u -1 -b 1 -g 7 -v 19d2 -p 2000 -f # ZTE devices TargetVendor= 0x19d2 TargetProductList="0001,0002,0015,0016,0017,0019,0031,0037,0052,0055,0061,0063,0064,0066,0091,0108,0117,0128,0157,0177,1402,2002,2003" MessageContent="5553424312345678000000000000061e000000000000000000000000000000" MessageContent2="5553424312345679000000000000061b000000020000000000000000000000" MessageContent3="55534243123456702000000080000c85010101180101010101000000000000" NeedResponse=1

# The facility to add a symbolic link pointing to the
# ttyUSB port which provides interrupt transfer, i.e.
# the port to connect through.
# Will check for interrupt endpoint in ttyUSB port (lowest if
# there is more than one); if found, return "gsmmodem[n]" name
# to udev for symlink creation

# This is run once for every port of LISTED devices by
# an udev rule

# In case the device path is returned as /class/tty/ttyUSB,
# get the USB device path from linked tree "device"

35、在JZ2440上使用3G上网卡的更多相关文章

  1. openwrt使用3G上网卡

    尊敬的大大.感谢你抽空指导我 我的设备是db120 mu350 和广东无限卡 版本是OpenWrt Backfire 10.03.336 DIY full 一.        没有安装到kmod-us ...

  2. 电信3G上网卡自己主动重拨

    须要使用电信3G无线上网卡做一个測试,由于要长时间使用,在使用的过程中老掉线,所以做了一个自己主动重连的批处理,好了,闲话少叙,开工: 先建立一个拨号连接: 001.png watermark/2/t ...

  3. 3g 上网卡使用

    控制面板\网络和 Internet\网络连接每个USB孔都会分配网路名 --cisco vpn 连接问题解决 启动(以管理员身份运行) sc stop SharedAccess ---完美解决win7 ...

  4. Thinkpad X201 Gobi2000 上电信3G网络

    网上的教程大多有点小问题,许多都不完整,今天放出系统化.理论化的设置方法,附送上所有软件. 一.本教程适用范围:1.gobi 2000 正式版 FRU:60Y3263 (带MEID.IMEI)2.- ...

  5. 34、JZ2440上WIFI网卡使用

    :http://wireless.kernel.org在这个网站上的document中有下面说有内容的介绍 1. 准备工作(虚拟机,开发板)及配置内核选择WIFI驱动1.1 选型:确定网卡的VID,P ...

  6. 3G? 2G? 2.5G? 4G? 与 WIFI, GPRS,CDMA 3G无线上网

    首先说说无线上网有哪几种形式? WIFI, GPRS, CDMA 3G无线上网 1>wifi全称wireless fidelity,是当今使用最广的一种无线网络传输技术.实际上就是把有线网络信号 ...

  7. 3G/4G网卡使用

    整体架构: pppd call option & ----------↓---------- option脚本(设置PPP连接) ----------↓---------- chat脚本(进行 ...

  8. TP-Link wr703N 使用华为HiLink系列上网卡的设置【转】

    转自:http://www.right.com.cn/forum/thread-103082-1-1.html 最近买了一个华为的E303s的上网卡,之前703的openwrt是按照需要拨号和使用U盘 ...

  9. 3G下的无压缩视频传输(基于嵌入式linux) (转载)

    本课题研究嵌入式系统在数据采集,3G无线通信方面的应用,开发集视频采集.地理信息采集.无线传输.客户机/服务器模式于一体的车载终端,实现终端采集视频与GPS信息的传输,支持服务器端显示视频与GPS信息 ...

随机推荐

  1. 2229: [Zjoi2011]最小割(最小割树)

    Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中 ...

  2. CMDB学习之一

    CMDB - 配置管理数据库 资产管理 自动化相关的平台(基础 CMDB): 1. 发布系统 2. 监控 3. 配管系统.装机 4. 堡垒机 CMDB的目的: 1. 替代EXCEL资产管理 —— 资产 ...

  3. 图片上传5-多个图片上传,独立项目Demo和源码

    图片上传,一次性可以上传多个图片,每个图片可以有名字.URL.排序.备注等字段.这是区别于使用百度WebUploader等多图上传工具的地方. 项目相关图片 Jar包管理:Maven用到的框架:Spr ...

  4. 【Android】利用安卓的数据接口、多媒体处理编写内存卡Mp3播放器app

    通过调用安卓的MediaPlayer能够直接完毕Mp3等主流音频的播放,同一时候利用ContentResolver与Cursor能够直接读取安卓内在数据库的信息.直接获取当前sdcard中全部音频的列 ...

  5. Mysql数据库存储引擎--转

    原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...

  6. BZOJ1576: [Usaco2009 Jan]安全路经Travel(树链剖分)

    Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, b_i,和t_i Output * 第1..N-1行: 第i行包含一个数 ...

  7. 微信小程序简单常见首页demo

    wxml <view class='index-contier'> <view class="index-left"> <view>电池剩余&l ...

  8. Writing buffer overflow exploits - a tutorial for beginners

    Buffer overflows in user input dependent buffers have become one of the biggest security hazards on ...

  9. AutoCAD 出现“安全系统(软件锁许可管理器)不起作用或未正确安装”的解决方法

    感谢高飞鸟提供解决方案.当AutoCAD或自动桌子公司的其它产品在启动过程中突然停电或其它原因造成操作系统重启时,可能会造成这些产品的许可出错而无法再运行.一般出错后第一次进入时,会提示你“产品需要激 ...

  10. 发送 email 过程

    发送 email 过程 SMTP基本命令集: 命令 描述 ---------- HELO 向服务器标识用户身份发送者能欺骗,说谎,但一般情况下服务器都能检测到. MAIL 初始化邮件传输 mail f ...