[背景]
上周三,高升桥有个会。到了会议室,赶紧拿出本本,想看看LINUX环境能否通过信息中心的无线上网安全认证,几经周折,CMCC的网络能连接上,网关也能ping通,但就TM不能打开网页。后来想想这种方式不用试也知道肯定是行不通的,因为信息中心早就要求过,要登录公司网络,必须安装安全认证终端软件。问题是这个软件只有WINDOWS版本,并无LINUX版本。其实,也有一个解决方案——WINE。WINE全称叫Wine Is Not an Emulator,呵呵,又一个GNU(GNU’s Not Unix)风格的命名,典型的程序员玩笑。我这个人有点偏执,一直认为在LINUX环境下装个转换层来运行WIN程序是种不伦不类的行为,宁愿不用这个程序。没辙,这条路走不同,想其他方法。
09年夏,公司为增强员工移动办公效率(也可以视为福利啦),同时也是为测试TD网络,特为每人配备了一个G3上网卡。当时有两类品牌,华为和中兴,我选的是华为的,毕竟是国际大牌子,哈哈。以前在WINDOWS环境下用过几次,感觉效果还不错,下载电影一般能达到130KB/S左右的速度(没买的赶快弄一个,@_@),后来转到LINUX环境,由于没有对应驱动,家里有宽带、单位又有台式机,也就没花时间去研究G3上网卡如何在LINUX中使用。嘿,这次找到使用场景了,想法在LINUX下驱动G3上网卡,以后开会就不会再回到没有网络的原始社会啦~~~
[环境]
笔记本: THINKPAD T410I
操作系统: openSUSE 11.3
内核: 2.6.34.7
G3上网卡: HUAWEI G3 (ET 18,型号好像是这个,背面磨花了)
应用程序: usb_modeswitch、wvdial
[原理]
非常简单,先识别设备,再拨号联网,搞定。想急着操作的童鞋直接调到下节,要了解细节的朋友继续哈。
1. 系统识别G3上网卡。HUAWEI G3上网卡官方只发布过WIN下的驱动,并未见LINUX下的,如何让LINUX识别它?告诉你,其实你电脑里早就安装好它的驱动程序,只是你不知道罢了。不信,试试,先插好上网卡,执行lsusb | grep “Huawei”,系统提示Bus 002 Device 003: ID 12d1:1da1 Huawei Technologies Co., Ltd.信息则说明驱动程序已经安装好了。我明明没下载LINUX下的驱动程序,更没点击安装,怎么会自动就有了呢?这个还得说说LINUX和WINDOWS对驱动程序的不同管理方式,简单地说,LINUX将世面常见设备驱动程序都包含在内核中,无须单独下载,WIN则需要到设备官网单独下载安装,至于为何LINUX要采用这种方式则不在本文探讨范围内。那系统既然已经识别到上网卡,是否可以立即使用?不行!LINUX虽识别到它,但默认是把他视为一个USB的存储设备,你必须想法告诉系统,这个东东不是简单的U盘,而是个具备拨号功能的MODEN,如何告诉,哒哒哒哒哒哒~~,上面让你准备的usb_modeswitch派上用场了,从这个程序名可以看出来,它能实现USB设备模式切换的功能;
2. G3上网卡拨号上网。好了,现在系统正确识别到你的G3上网卡,执行拨号命令即可大功告成,wvdial,简单应用的拨号程序。
[操作]
1. 获取G3上网卡USB信息。执行
lsusb | grep “Huawei”
系统显示类似如下
Bus 002 Device 003: ID 12d1:1da1 Huawei Technologies Co., Ltd.
记录下你对应12d1:1da1位置的信息;
2. 将G3上网卡从U盘模式转换为MODEN模式。
1) 指定要进行模式转换的设备。用如下信息替换/etc/usb_modeswitch.conf内容
DefaultVendor=0x12d1
DefaultProduct=0x1da1
TargetVendor=0x12d1
TargetProduct=0x1da1
HuaweiMode=1
2) 进行模式转换。执行
usb_modeswitch -c /etc/usb_modeswitch.conf
显示如下信息
Looking for target devices …
Found devices in target mode or class (1)
Looking for default devices …
Found devices in default mode or class (1)
Accessing device 012 on bus 001 …
Using endpoints 0x05 (out) and 0x85 (in)
Inquiring device details; driver will be detached …
Looking for active driver …
OK, driver found (“dummy”)
OK, driver “dummy” detached
SCSI inquiry data (for identification)
————————-
Vendor String: HUAWEI
Model String: Mobile CMCC CD
Revision String: 1.25
————————-
USB description data (for identification)
————————-
Manufacturer: HUAWEI Mobile
Product: HUAWEI Mobile System Solution
Serial No.: 111111-11-111111
————————-
Sending Huawei control message …
OK, Huawei control message sent
-> Run lsusb to note any changes. Bye.
注:这一步可能命令执行过程可能僵死,重新插拔试下;
3) 转换完成。执行第一步命令显示如下信息
Bus 002 Device 009: ID 12d1:1d09 Huawei Technologies Co., Ltd.
如果先前的1da1变为 1d09那么恭喜你,最重要一步已经成功了;
4) 确认是否生成对应设备。执行
ls /dev/ttyA*
输出
ttyACM0 ttyACM1 ttyACM2
3. MODEN拨号上网。
1) 生成G3上网卡拨号配置文件。执行
wvdialconf
输出
Editing `/etc/wvdial.conf’.
Scanning your serial ports for a modem.
Modem Port Scan<*1>: S0 S1 S2 S3
WvModem<*1>: Cannot get information for serial port.
ttyACM0<*1>: ATQ0 V1 E1 — OK
ttyACM0<*1>: ATQ0 V1 E1 Z — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyACM0<*1>: Modem Identifier: ATI — Manufacturer: HuaWei
ttyACM0<*1>: Speed 4800: AT — OK
ttyACM0<*1>: Speed 9600: AT — OK
ttyACM0<*1>: Speed 19200: AT — OK
ttyACM0<*1>: Speed 38400: AT — OK
ttyACM0<*1>: Speed 57600: AT — OK
ttyACM0<*1>: Speed 115200: AT — OK
ttyACM0<*1>: Speed 230400: AT — OK
ttyACM0<*1>: Speed 460800: AT — OK
ttyACM0<*1>: Max speed is 460800; that should be safe.
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
WvModem<*1>: Cannot get information for serial port.
ttyACM1<*1>: ATQ0 V1 E1 — OK
ttyACM1<*1>: ATQ0 V1 E1 Z — OK
ttyACM1<*1>: ATQ0 V1 E1 S0=0 — OK
ttyACM1<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyACM1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyACM1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyACM1<*1>: Modem Identifier: ATI — Manufacturer: HuaWei
ttyACM1<*1>: Speed 4800: AT — OK
ttyACM1<*1>: Speed 9600: AT — OK
ttyACM1<*1>: Speed 19200: AT — OK
ttyACM1<*1>: Speed 38400: AT — OK
ttyACM1<*1>: Speed 57600: AT — OK
ttyACM1<*1>: Speed 115200: AT — OK
ttyACM1<*1>: Speed 230400: AT — OK
ttyACM1<*1>: Speed 460800: AT — OK
ttyACM1<*1>: Max speed is 460800; that should be safe.
ttyACM1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
WvModem<*1>: Cannot get information for serial port.
ttyACM2<*1>: ATQ0 V1 E1 — OK
ttyACM2<*1>: ATQ0 V1 E1 Z — OK
ttyACM2<*1>: ATQ0 V1 E1 S0=0 — OK
ttyACM2<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyACM2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyACM2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyACM2<*1>: Modem Identifier: ATI — Manufacturer: HuaWei
ttyACM2<*1>: Speed 4800: AT — OK
ttyACM2<*1>: Speed 9600: AT — OK
ttyACM2<*1>: Speed 19200: AT — OK
ttyACM2<*1>: Speed 38400: AT — OK
ttyACM2<*1>: Speed 57600: AT — OK
ttyACM2<*1>: Speed 115200: AT — OK
ttyACM2<*1>: Speed 230400: AT — OK
ttyACM2<*1>: Speed 460800: AT — OK
ttyACM2<*1>: Max speed is 460800; that should be safe.
ttyACM2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
Found an USB modem _disibledevent=0 &C1 &D2 +FCLASS=0″
ttyACM1<Info>: Speed 460800; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0”
ttyACM2<Info>: Speed 460800; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0”
2) 修改拨号配置文件。将/etc/wvdial.conf文件内容替换为
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Password = any
Phone = *99***1#
Modem Type = USB Modem
Stupid Mode = 1
Baud = 460800
New PPPD = yes
Modem = /dev/ttyACM0
ISDN = 0
username = any
3) 拨号。执行
wvdial
输出
–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
–> Modem initialized.
–> Sending: ATDT*99***1#
–> Waiting for carrier.
ATDT*99***1#
CONNECT 2800000
–> Carrier detected. Starting PPP immediately.
–> Starting pppd at Mon Jun 22 11:11:50 2009
–> Pid of pppd: 4134
–> Using interface ppp0
–> local IP address 10.140.162.111
–> remote IP address 192.200.1.21
–> primary DNS address 221.130.33.60
–> secondary DNS address 221.130.33.52
–> Connected… Press Ctrl-C to disconnect
注:拨号前,必须先关闭系统自带的网络管理程序。在openSUSE中,你可以这样:Yast中,Network Devices –> Network Settings –> Globa Options –> Network Setup Methods –> Traditional method with ifup (instead of Network Manager)
好了,享受中移动TD高速上网的乐趣吧~~~