http://blog.csdn.net/haomcu/article/details/7285891
linux下要实现3G拨号上网,除了3G网卡和对应的3G卡外,软件上需要对应的网卡驱动和pppd拨号程序,pppd拨号程序一般较容易得到,如果是嵌入式平台,交叉编译即可,编译过程中可能会遇到一些错误,但都不是大问题,一般很容易解决。而3G网卡驱动对于刚接触的人来说可能稍微难一点,大部分的3G模块内核中已经得到支持。如果不幸内核中没有得到支持,那么自己添加支持也是很容易的。下面介绍两种驱动3G网卡的方法。
linux内核中USB-GSM模块的驱动主要是drivers/usb/serial/options.c文件。看了此文件会非常明了,对一个3G网卡的支持主要就是两个参数,一个是厂商ID,一个是设备ID,只要3G网卡可以被USB识别,那么我们很容易得到这个USB设备的设备ID和厂商ID,得到之后,我们把这两个参数添加进option.c文件重新编译得到option.ko,那么这个3G网卡一般就能正常工作了。
第二种方法是使用usb-modeswitch来是3G网卡正常工作。这种方法我没有实际使用过,下面是从网上看到的一篇文章,可以作位参考。原文章地址为点击打开链接。
我的3G上网卡是华为 E1750,操作系统是openSUSE 11.2,之前只能在虚拟机运行的Windows里上3G,感觉这样实在不方便,于是想到了直接在Linux里连接3G网络。
1. software
http://www.draisberghof.de/usb_modeswitch/
usb-modeswitch
usb-modeswitch-data
libusb
2. install
安装软件
root# tar jxvf usb-modeswitch-1.1.3.tar.bz2
root# cd usb-modeswitch-1.1.3/
root# make install
root# tar jxvf usb-modeswitch-data-20100707.tar.bz2
root# cd usb-modeswitch-data-20100707/
root# make install
then upgrade libusb to the lastest version.
root# cp /usr/share/doc/packages/ppp/scripts/pon /usr/local/sbin
root# cp /usr/share/doc/packages/ppp/scripts/poff /usr/local/sbin
root# chmod ug+x /usr/local/sbin/pon /usr/local/sbin/poff
接下来,接上3G上网卡,可以看到 lsusb 输出的结果多了"USB Modem"字样。
root# lsusb
...
Bus 002 Device 010: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem
...
3. configure
建立3个PPP配置文件。
root# cat /etc/ppp/peers/wcdma
nodetach
lock
/dev/gsmmodem
115200
user "card"
password "card"
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
defaultroute
ipcp-accept-local
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'
root# cat /etc/ppp/peers/wcdma-chat-connect
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'NO DIALTONE'
ABORT 'BUSY'
ABORT 'NO ANSWER'
'' \rAT
OK \rATZ
OK \rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OK ATDT*99#
CONNECT \d\c
root# cat /etc/ppp/peers/wcdma-chat-disconnect
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\nSending break to the modem\n"
'' "\K"
'' "+++ATH"
SAY "\nGoodbay\n"
4. connect
拔号连接
root# pppd call wcdma &
......
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/gsmmodem
CHAP authentication succeeded
CHAP authentication succeeded
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing default route to eth0 [10.217.15.1]
local IP address 172.27.25.133
remote IP address 10.64.64.64
primary DNS address 202.106.195.68
secondary DNS address 202.106.46.151
Script /etc/ppp/ip-up finished (pid 10543), status = 0x0
手工添加DNS
root# echo "nameserver 202.106.46.151" >> /etc/resolv.conf
手工指定默认网关
root# route add default gw 172.27.25.133
测试网络是否可用
root# ping -c 5 www.sina.com.cn
PING libra.sina.com.cn (202.108.33.80) 56(84) bytes of data.
64 bytes from 202.108.33.80: icmp_seq=1 ttl=56 time=39.6 ms
64 bytes from 202.108.33.80: icmp_seq=2 ttl=56 time=48.3 ms
64 bytes from 202.108.33.80: icmp_seq=3 ttl=56 time=46.8 ms
64 bytes from 202.108.33.80: icmp_seq=4 ttl=56 time=44.6 ms
64 bytes from 202.108.33.80: icmp_seq=5 ttl=56 time=44.1 ms
--- libra.sina.com.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 39.670/44.739/48.330/2.957 ms
5. disconnect
root# poff
http://zhuairlunjj.blog.163.com/blog/static/80050945201241401319722/
中兴WCDMA模块 Linux拨号流程
2012-05-14 00:13:19| 分类: linux内核编程之 | 标签: |字号大中小订阅
Version 1.0
目录
1. 测试准备……………………………………………………..…3
2. 拨号脚本………………………………………………………13
3. 拨号过程………………………………………………………16
1. 测试准备
本文档测试模块:MF210(中兴WCDMA模块)
中兴WCDMA模块MF200 / MF205 / MF206 / MF210V / AD3812 / MG3732类似
本文档测试系统:Ubuntu 10.10
因在Linux下无法确认功能端口号,所以只能借助Windows下来查看功能端口号。本公司已经将所有中兴3G模块的VID、PID和端口号归类成册,具体请参阅本公司文档《中兴3G模块Linux下ID和端口号说明V1.0》。
1.1 确认3G模块的VID、PID和各个端口的功能
把装有3G模块的Demo板插到PC的USB端口上,装好驱动Windows端驱动。点击 我的电脑 -> 属性(R)-> 硬件 -> 设备管理器(D),如图1-1所示:
图1-1 3G模块USB映射的端口
图注:
ZTE Proprietary USB Modem #4: USB Modem 拨号端口
ZTE Diagnostics Interface (COM46):调试诊断口
ZTE NMEA Device (COM47):AT命令口
ZTE VoUSB Device (COM5):USB语音口
上面的USB映射的4个端口中,想要知道其在Linux下面对应的端口号,右键某一端口号 -> 属性(R) -> 详细信息。
进入USB Modem口的属性,点击 详细信息 即可看到此模块的VID、PID和USB Modem口对应的端口号为3(即在Linux下面为ttyUSB3),如图1-2所示:
图1-2 3G模块VID、PID和USB Modem端口号
进入Diagnostics Interface口的属性,点击 详细信息 即可看到此模块的VID、PID和Diagnostics Interface口对应的端口号为0(即在Linux下面为ttyUSB0),如图1-3所示:
图1-3 3G模块VID、PID和Diagnostics Interface端口号
进入NMEA Device口的属性,点击 详细信息 即可看到此模块的VID、PID和NMEA Device口对应的端口号为1(即在Linux下面为ttyUSB1),如图1-4所示:
图1-4 3G模块VID、PID和NMEA Device端口号
进入VoUSB Device口的属性,点击 详细信息 即可看到此模块的VID、PID和VoUSB Device口对应的端口号为2(即在Linux下面为ttyUSB2),如图1-5所示:
图1-5 3G模块VID、PID和VoUSB Device端口号
1.2 Linux下查看VID和PID号
把demo板插上PC的USB端口,开启终端,输入 lsusb 即可,如图1-6所示:
图1-6 ubuntu10.10下查看3G模块的VID和PID
上图中反显的一行:
BUS 001 Device 005:ID 19D2:0117 ONDA Communication S.p.A
其中:
VID: 19d2 (中兴所有模块的VID均为0x19d2)
PID: 2003
查看映射的端口号:
ls /dev/ttyUSB*
如果没有发现ttyUSB*任何设备,说明内核还不支持本模块,如图1-7所示:
图1-7 3G模块未被内核支持的情况
解决方法:加载此模块的VID和PID即可。VID 和 PID 可以用 lsusb 查看。加载支持命令如下:
modprobe usbserial vendor=0x19d2 product=PID
注:此处的PID因模块不同而不同。VID中兴统一为0x19d2。
如图1-8所示:
图1-8 加载此模块的VID和PID号
此时使用命令 ls /dev/ttyUSB* 即可列出端口号。如图1-9所示:
图1-9 3G模块USB映射的端口号
其中: 由Windows 2k / Xp / Vista / 7可知
ttyUSB0 : 诊断端口
ttyUSB1 : AT指令端口
ttyUSB2 : VoUSB端口(语音)
ttyUSB3 : Modem端口
1.3 AT指令测试
1.3.1 Minicom安装
将下载的文件解压到当前目录,tar zxvf minicom-2.4.tar.gz
进入cd minicom-2.4,执行./configure
执行命令make
执行命令make install
上述过程参见解压后的README
1.3.2 Minicom配置(需要root用户角色)
执行minicom –s后出现配置界面
==========================
[configuration]
Filename and paths
File transfer and protocols
Serial port setup
Modem and dialing
Screen and keyboard
Save setup as df1
Save setup as……
Exit
Exit from minicom
==========================
使用向下键选择serial port setup(串口设置),按回车出现设置界面
==========================
A — Serial Device: /dev/ttyUSB1
B — lockfile Location : /var/lock
C — Calling Program :
D — Callout Program:
E — Bps/par/Bits: 115200 8N1
F — Hardware Flow Control : NO
G — Software Flow Control : NO
Change with setting?
===========================
按A,设置串口设备为/dev/ttyUSB1 (AT指令端口,因模块而异)
按E:设置为115200 (模块波特率为自适应,推荐值115200)
按F:设置Hardware Flow Control : NO (无硬件流控)
按回车,保存设定,回到主菜单,可以选择Save setup as df1 (设为默认配置)。
设置完成后选择Exit退出
1.3.3 Minicom使用
直接输入minicom,就可以像使用Windows的超级终端一样操作了。
另外在进入minicom后可以通过CTRL+A打开帮助,按Z弹出所有帮助菜单。
其中Q和X可以退出minicom返回shell。
关于测试模块AT命令的串口设置如图1-10所示:
图1-10 minicom设置
AT指令测试过程如图1-11所示:
图1-11 AT指令测试过程
2. 测试脚本
2.1 脚本建立
Root权限进入Ubuntu,在 /etc/ppp/ 下面建立两个目录,如果有就不需要建立了。直接把脚本放进去或者建立新文件即可。
cd /etc/ppp
mkdir peers chat
cd peers
touch wcdma-mf210
vim wcdma-mf210
在wcdma-mf210里填写脚本如下:
#******************************************************************#
# /etc/ppp/peers/wcdma-mf210 #
# this is ppp script for use chinaunicom's WCDMA data service #
# #
# Hangzhou Visure Electronics Technology Co., Ltd #
# Room 606, Zijingang business Building, #656 Gudun Road, Hangzhou #
# TEL: 0571-81021669 #
# FAX: 0571-81021670 #
# More information: manuals, hardware and software on: #
# www.visure.com.cn #
#******************************************************************#
/dev/ttyUSB3
115200
crtscts
connect '/usr/sbin/chat -v -f /etc/ppp/chat/wcdma-connect-chat'
debug
nodetach
ipcp-accept-local
ipcp-accept-remote
defaultroute
usepeerdns
# end of wcdma-mf210
如图2-1所示:
图2-1 3G模块拨号脚本
cd chat
touch wcdma-connect-chat
vim wcdma-connect-chat
在wcdma-connect-chat里填写如下:
#******************************************************************#
# /etc/ppp/chat/wcdma-connect-chat #
# this is the chat script for unicom #
# #
# Hangzhou Visure Electronics Technology Co., Ltd #
# Room 606, Zijingang business Building, #656 Gudun Road, Hangzhou #
# TEL: 0571-81021669 #
# FAX: 0571-81021670 #
# More information: manuals, hardware and software on: #
# www.visure.com.cn #
# *****************************************************************#
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
TIMEOUT 120
"" AT
OK "AT+CGDCONT=1,\"IP\",\"3GNET\""
OK ATD*99#
CONNECT
# end of wcdma-connect-chat
如图2-2 所示:
图2-2 3G模块chat脚本
3 拨号过程
在终端输入 pppd call wcdma-mf210 按Enter(回车)即可。如图3-1所示:
图3-1 3G模块拨号命令
PPP协商过程如图3-2所示:
图3-2 PPP协商过程
测试拨号成功与否,在终端里(需要另开一终端!!!)打入 ifconfig,查看是否有ppp0连接,如图3-3所示:
图3-3 查看网络连接
4 拨号成功后,设置域名服务器
cd /etc
vim resolv.conf
/etc/resolv.conf文件是存放域名服务器地址的地方,它的内容看起来是这样的:
-------------------------------------------
domain your.isp.domain.name
nameserver 202.96.171.92
nameserver 202.96.171.133
-------------------------------------------
你所需做的就是把你的ISP的域名服务器地址填到这个文件里。DNS是拨号以后自动
分配的,从图3-2 ppp协商过程中最后几行可以得到DNS, 因所在地方而异,在我这里设置为:
nameserver 211.136.17.108
nameserver 211.136.20.204
设置为如图3-4所示:
图3-4 设置DNS
ping 命令测试,此命令需要设置DNS。请确认在 /etc/resolv.conf 里已经正确设置DNS。
图3-5 ping 命令测试
Linux -> 嵌入式Linux下3G无线上网卡的驱动
http://hi.baidu.com/liuhelishuang/item/30e17f0b53422de8359902ac
嵌入式Linux下3G无线上网卡的驱动http://blog.chinaunix.net/uid-20759926-id-2437253.html
环境:硬件:合众达DVS365开发板,芯片DaVinci DM365.电信华为EC189的3G无线上网卡。软件:TI定制的嵌入式arm-linux,内核版本2.6.18.简介:由于3G无线上网卡工作模式相同,故其移植也大多雷同,故本次开发同样适用于其他嵌入式开发板,如DM6446,ARM等等。同样,也适用于其他联通、移动或电信的3G上网卡,尤其是华为的上网卡,如最常用的华为E160, E160G, E169, E180, E230, E270(+), E280, E630, E870, E1550, E1612, E1662, E1690, E1692, E1750, E1752, EC168C, K3765, K4505, K4605, MTE WM610, R201, K4605, K3765, K4505。中兴的ZTE MF620,MF622等等等等。其他支持的上网卡型号参见:http://www.draisberghof.de/usb_modeswitch/建议:现在PC机上安装usb_modeswitch和libusb,首先确保PC上的linux能够顺利拨号,再将其移植到开发板上。内核:需要有以下模块:option usbserial usbstorage主要是要在编译内核的时候选中Device Drivers=====USB Support======USB Serial Converter Support=========USB Serial Converter Support(选中)=========USB Generic Serial Driver否则软件pppd执行的时候可能会失败。#make modules //编译外挂模块#make modules_install //安装模块模块编译完后应将其复制到开发板上,并执行以下命令,否则会报找不到modules.dep#/sbin/depmod –a //创建模块的链接软件3个:libusb、usb_modeswitch、pppd(含chat)和1个数据包(纯文本):usb-modeswitch-datalibusb源码下载:http://sourceforge.net/projects/libusb/files/libusb-1.0/usb_modeswitcch下载:http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data:http://www.draisberghof.de/usb_modeswitch/ 这个数据包包含了usb_modeswitch所有支持的3G上网卡的配置文件,对于本次开发,取出其中文件名为12d1:1446的文本文件即可。基本步骤:1.在开发板上USB口插入3G上网卡,注意DVS365开发板要短接J1 2和3管脚才启用USB host模式,否则USB不供电。2.在开发板上输入lsusb会出现以下结果,说明开发板与3G上网卡硬件物理上连接成功,记下12d1:1446这个数字,后边用。:~# lsusbBus 004 Device 002: ID 12d1:1446 HUAWEI XXXX(省略若干)3.在主机上交叉编译usb_modeswitch,因为其要使用libusb,故也要交叉编译libusb。(见后文)4.将主机交叉编译产生的usb_modeswitch单文件、lib文件夹、12d1:1446文件复制到开发板/home目录下上。5.执行usb_modeswitch将3G上网卡U盘模式转换为modem模式 -c 12d1\:1446 屏幕会显示一堆模式转换信息,之后会显示成功 6.检查是否转换成功,执行lsusb,发现1446变为1001,表示转换成功。 # lsusb Bus 004 Device 002: ID 12d1:1001 HUAWEI XXXX(省略若干)7.硬件问题都解决了,开始拨号吧:(电信的拨号脚本,联通、移动的应该会变化,请google)# pppd connect 'chat -v "" "AT" "OK" "ATZ" "OK" "ATDT#777 CONNECT"' user card password card /dev/ttyUSB0 115200 nodetach noauth nocrtscts modem noipdefault debug usepeerdns defaultroute ipcp-accept-local noccp屏幕会显示拨号信息,成功获取到的IP和DNS 8.另外启动一个shell,执行 # route del default add default dev ppp0 尝试ping 8.8.8.8,应该就通了。 注意:如果为其他3G上网卡,只需要将相应的配置文件复制到板子上。如本例为12d1:1446.基本步骤第3步交叉编译过程:A.交叉编译Libusb解压并进入libusb目录,建立子目录install用于存放最后生存的库文件与头文件。[root@libusb-0.1.12]# mkdir install配置并生成Makefile文件[root@libusb-0.1.12]# ./configure --build=i686-linux --host=arm-linux --prefix=/home/libusb-0.1.12/install[root@libusb-0.1.12]# make[root@libusb-0.1.12]# make install此时install目录下应有LIB了B.交叉编译usb_modeswitch(1)、修改Makefile文件 CC = arm_v5t_le-gcc(2)、将libusb里的库头文件拷到交叉编译器的include和lib目录下,或者直接在Makefile文件里直接加上编译选项指令库的路径即可如下:$(PROG):&(OBJS)&(CC) –o $(PROG) &(OBJS) &(CFLAGS) –I /home/libusb-0.1.12/install/include –L /home/libusb-0.1.12/install/lib(3)、make此时应产生usb_modeswitch单文件了将Lib和usb_modeswitch按照基本步骤第四步复制到开发板上。OVER。