linux下使用3G拨号上网 以及3g驱动设置

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内核编程之 |  标签: |字号订阅

 

 

 

 

 

中兴WCDMA模块 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 命令测试

 

 

 

 

2012-02-27 15:40

 

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。

 

 

 

 

posted @ 2013-01-08 22:28  s--1  阅读(4561)  评论(0编辑  收藏  举报