35、在JZ2440上使用3G上网卡
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上网卡的更多相关文章
- openwrt使用3G上网卡
尊敬的大大.感谢你抽空指导我 我的设备是db120 mu350 和广东无限卡 版本是OpenWrt Backfire 10.03.336 DIY full 一. 没有安装到kmod-us ...
- 电信3G上网卡自己主动重拨
须要使用电信3G无线上网卡做一个測试,由于要长时间使用,在使用的过程中老掉线,所以做了一个自己主动重连的批处理,好了,闲话少叙,开工: 先建立一个拨号连接: 001.png watermark/2/t ...
- 3g 上网卡使用
控制面板\网络和 Internet\网络连接每个USB孔都会分配网路名 --cisco vpn 连接问题解决 启动(以管理员身份运行) sc stop SharedAccess ---完美解决win7 ...
- Thinkpad X201 Gobi2000 上电信3G网络
网上的教程大多有点小问题,许多都不完整,今天放出系统化.理论化的设置方法,附送上所有软件. 一.本教程适用范围:1.gobi 2000 正式版 FRU:60Y3263 (带MEID.IMEI)2.- ...
- 34、JZ2440上WIFI网卡使用
:http://wireless.kernel.org在这个网站上的document中有下面说有内容的介绍 1. 准备工作(虚拟机,开发板)及配置内核选择WIFI驱动1.1 选型:确定网卡的VID,P ...
- 3G? 2G? 2.5G? 4G? 与 WIFI, GPRS,CDMA 3G无线上网
首先说说无线上网有哪几种形式? WIFI, GPRS, CDMA 3G无线上网 1>wifi全称wireless fidelity,是当今使用最广的一种无线网络传输技术.实际上就是把有线网络信号 ...
- 3G/4G网卡使用
整体架构: pppd call option & ----------↓---------- option脚本(设置PPP连接) ----------↓---------- chat脚本(进行 ...
- TP-Link wr703N 使用华为HiLink系列上网卡的设置【转】
转自:http://www.right.com.cn/forum/thread-103082-1-1.html 最近买了一个华为的E303s的上网卡,之前703的openwrt是按照需要拨号和使用U盘 ...
- 3G下的无压缩视频传输(基于嵌入式linux) (转载)
本课题研究嵌入式系统在数据采集,3G无线通信方面的应用,开发集视频采集.地理信息采集.无线传输.客户机/服务器模式于一体的车载终端,实现终端采集视频与GPS信息的传输,支持服务器端显示视频与GPS信息 ...
随机推荐
- Linux硬件信息查看
more /proc/cpuinfo more /proc/meminfo more /proc/*info lspci 查看主板信息等cat /proc/cpuinfo CPU信息cat /proc ...
- 今日题解------codeforces 895C
题意:给你一个数列,然后找任意数量的数字(除了空集),使得他们的乘机为一个数的平方 我们发现元素最大70,所以我们可以从这里入手,平方数有个性质就是它的所有质因子的指数为偶数 比如:36 = 2*2* ...
- 【Codeforces Round #457 (Div. 2) C】Jamie and Interesting Graph
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找比n-1大的最小的素数x 1-2,2-3..(n-2)-(n-1)长度都为1 然后(n-1)-n长度为(x-(n-2)) 然后其他 ...
- HTML中行内元素与块级元素有哪些及区别
二.行内元素与块级元素有什么不同? 块级元素和行内元素的区别是,块级元素会占一行显示,而行内元素可以在一行并排显示. 通过样式控制,它们可以相互转换. 1.尺寸-块级元素和行内元素之间的一个重要的不同 ...
- Android-CheckBox 实现计算器
源码下载地址:http://download.csdn.net/detail/wu20093346/7718055 使用CheckBox的OnCheckedChangeListener做事件触发,效果 ...
- CentOS不能进入登录界面
http://blog.csdn.net/powerzone/article/details/6798646
- 洛谷——P1073 最优贸易 ([NOIP2009] )
https://www.luogu.org/problem/show?pid=1073 题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多 ...
- 阻止事件冒泡js jquery
jQuery之防止冒泡事件 冒泡事件就是点击子节点,会向上触发父节点.祖先节点的点击事件. 以下是html代码部分: <body> <div id="content&quo ...
- [JWT] JWT with HS256
The advantages of JWT over traditional session based validation is: it effectively removing all auth ...
- A题之拼音转数字
输入是一个仅仅包括拼音的字符串,请输出相应的数字序列.转换关系例如以下: 描写叙述: 拼音 yi er san si wu liu qi ba jiu 阿拉伯数字 1 2 3 4 5 6 ...