歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux環境使用中移動TD上網卡實錄

[背景] 

上周三,高升橋有個會。到了會議室,趕緊拿出本本,想看看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高速上網的樂趣吧~~~

Copyright © Linux教程網 All Rights Reserved