统:Ubuntu 10.04

         3G模块:华为E1750

1 安装usb-modeswitch软件

       E1750 无线上网卡并没有提供linux环境下的驱动程序,但我们可以通过USB模式转换来让linux系统能识别并能使用E1750无线模块。USB_ModeSwitch是一个用来控制“flip flop”(多重设备)USB装置的USB模块转换工具,USB_ModeSwitch 从配置文件中读取重要的参数并实现所有初始化以及通讯,其中还需要来自”libusb”的重量级支持。具体信息可参看网页:http://www.draisberghof.de/usb_modeswitch/

      

在网页http://www.draisberghof.de/usb_modeswitch/上下载USB模式转换的软件安装包:

usb-modeswitch-1.1.7.tar.bz2   

usb-modeswitch-data-20110227.tar.bz2   //可以不用

libusb-dev  //可不用下载,直接使用apt-get命令来安装

 

1>安装libusb-dev库文件

$ sudo apt-get install libusb-dev

 

2>安装usb-modeswitch-data

$tar jxvf usb-modeswitch-data-20110227.tar.bz2

$cd usb-modeswitch-data-20110227

$ sudo make install //将会在etc/usb_modeswitch.d中安装一个配置文件,并且在/lib/udev/rules.d中安装udev规则文件

 

3>安装usb-modeswitch

$ tar jxvf usb-modeswitch-1.1.7.tar.bz2

$ cd usb-modeswitch-1.1.7

$ sudo make install  //此时将会在udev中安装一个shell脚本,一个大包装脚本,一个配置文件,man手册和新的二进制编译文件usb_modeswitch。

 

使用usb-modeswitch调试一个未知的新设备,有两种方式进行调试:

使用配置文件

       使用配置文件,需要编写一个与自己硬件相关的配置文件,可参看usb-modeswitch-1.1.7下的device_reference.txt文件中,查找与自己硬件相关的部分,用做配置信息。如对于E1750无线网卡,在device_reference.txt文件中可查找到如下内容:

########################################################

# Huawei E1550

# Huawei E1750

#

# Contributor: Anders Blomdell, Ahmed Soliman

DefaultVendor=  0x12d1

DefaultProduct= 0x1446

TargetVendor=   0x12d1

TargetProduct=  0x1001

MessageContent=”55534243123456780000000000000011060000000000000000000000000000″

       即可将此部分内容复制用来编写自己的配置文件(usb-modeswitch.setup,叫什么名字无所谓,只要在使用usb-modeswitch命令的时候,用“-c”来指定该文件即可),不过可能还需要根据实际检测到得ID信息来编写DefaultVendor,DefaultProduct,TargetVendor,TargetProduct等值。

使用命令行

使用命令行之前,需要usb_modeswitch –h来查看相应的usb_modeswitch命令,在根据

device_reference.txt文件中的相应信息,即可使用。

$ sudo usb_modeswitch -W -v 12d1 -p 1001 -V 12d1 -P 1001 -M

“55534243123456780000000000000011060000000000000000000000000000”

/*此命令行的作用相当于使用sudo usb_modeswitch -W –c usb_modeswitch.setu。

usb_modeswitch.setup文件内容如下:

DefaultVendor=  0x12d1

DefaultProduct= 0x1001

TargetVendor=   0x12d1

TargetProduct=  0x1001

MessageContent=”55534243123456780000000000000011060000000000000000000000000000″

*/

 

2 Ubuntu中识别E1750设备

       以下是我的系统上的做法,因为Windows系统中的设置已将VMware的自动USB检测给禁用了,提示Host USB disable,虚拟机右下角没有USB设备的标识。

解决方法:

1>windows系统中启动VM USB设备

在开始——>运行中执行services.msc命令,找到Vmware USB  Arbitration Service项,并启动。

 

2>重启虚拟机系统

关闭虚拟机,重新启动虚拟机系统。启动虚拟机系统后,系统右下角出现了USB连接的标识。

 

3>连接windows中的E1750模块到虚拟机系统

点击右下角的USB标识,选择连接(从主机断开) ,弹出所示提示信息,选择OK。

 

选择OK后,激活虚拟机中的USB设备,此时USB标识成激活状态,并且在虚拟机系统桌面上自动挂在WCDMA的标识。

 

4>使用lsusb命令查看E1750设备ID等信息

$ lsusb    //显示当前挂在的USB模块信息

Bus 002 Device 002: ID 0e0f:0002 VMware, Inc. Virtual USB Hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 036: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

3 设置usb-modeswitch配置文件

1>创建usb_modeswitch.setup配置文件

$ sudo gedit usb_modeswitch.setup   //新建usb_modeswitch.setup,写入如下器件模块信息

########################################################

# Huawei E1750

DefaultVendor=0x12d1

DefaultProduct=0x1446

TargetVendor=0x12d1

TargetProduct=0x1001

MessageContent=”55534243123456780000000000000011060000000000000000000000000000″

       注:usb_modeswitch.setup中保存了要进行USB模式转换的设备ID的信息,可参考usb-modeswitch-1.1.7文件夹下的device_reference.txt文件来选择相应的设备信息。

        

2>加载usb_modeswitch.setup配置文件

$ sudo usb_modeswitch -c usb_modeswitch.setup

[sudo] password for user:

Looking for target devices …

 Found devices in target mode or class (1)

Looking for default devices …

 No devices in default mode found. Nothing to do. Bye.  //器件默认的模块类型错误

user@Ubuntu1004:/etc$

 

3>修改usb_modeswitch.setup配置文件

在虚拟终端中执行lsusb命令,打印当前挂在的USB设备,可看出3G模块的默认模块类型为0x12d1:0x1001。

$ lsusb

Bus 002 Device 002: ID 0e0f:0002 VMware, Inc. Virtual USB Hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 002: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

$ sudo gedit usb_modeswitch.setup   //修改usb_modeswitch.setup文件

########################################################

# Huawei E1750

DefaultVendor=0x12d1

DefaultProduct=0x1001

TargetVendor=0x12d1

TargetProduct=0x1001

MessageContent=”55534243123456780000000000000011060000000000000000000000000000″

 

4>加载usb_modeswitch.setup配置文件

$ sudo usb_modeswitch -W -c usb_modeswitch.setup

 

Reading config file: usb_modeswitch.setup

 

 * usb_modeswitch: handle USB devices with multiple modes

 * Version 1.1.6 (C) Josua Dietze 2010

 * Based on libusb0 (0.1.12 and above)

 

 ! PLEASE REPORT NEW CONFIGURATIONS !

 

DefaultVendor=  0x12d1   //这个ID号是在usb-switch转换之看到的ID信息

DefaultProduct= 0x1001    //这个ID号是在usb-switch转换之看到的ID信息

TargetVendor=   0x12d1   //这个ID号是在usb-switch转换之看到的ID信息

TargetProduct=  0x1001    //这个ID号是在usb-switch转换之看到的ID信息

TargetClass=    not set

TargetProductList=””

 

DetachStorageOnly=0

HuaweiMode=0

SierraMode=0

SonyMode=0

GCTMode=0

KobilMode=0

MessageEndpoint=  not set

MessageContent=”55534243123456780000000000000011060000000000000000000000000000″

NeedResponse=0

ResponseEndpoint= not set

Interface=0x00

 

InquireDevice enabled (default)

Success check disabled

System integration mode disabled

 

usb_set_debug: Setting debugging level to 15 (on)

usb_os_find_busses: Found 002

usb_os_find_busses: Found 001

usb_os_find_devices: Found 002 on 002

usb_os_find_devices: Found 001 on 002

usb_os_find_devices: Found 005 on 001

usb_os_find_devices: Found 001 on 001

error obtaining child information: Inappropriate ioctl for device

 

Looking for target devices …

  searching devices, found USB ID 0e0f:0002

  searching devices, found USB ID 1d6b:0001

  searching devices, found USB ID 12d1:1001

   found matching vendor ID

   found matching product ID

   adding device

  searching devices, found USB ID 1d6b:0002

 Found devices in target mode or class (1)

Looking for default devices …

  searching devices, found USB ID 0e0f:0002

  searching devices, found USB ID 1d6b:0001

  searching devices, found USB ID 12d1:1001

   found matching vendor ID

   found matching product ID

   adding device

  searching devices, found USB ID 1d6b:0002

 Found devices in default mode, class or configuration (1)

Accessing device 005 on bus 001 …

Getting the current device configuration …

 OK, got current device configuration (1)

Using endpoints 0x01 (out) and 0x82 (in)

Using endpoints 0x01 (out) and 0x82 (in)

Not a storage device, skipping SCSI inquiry

 

USB description data (for identification)

————————-

Manufacturer: HUAWEI Technology

     Product: HUAWEI Mobile

  Serial No.: not provided

————————-

Looking for active driver …

 OK, driver found (“option”)

 OK, driver “option” detached

Setting up communication with interface 0 …

Using endpoint 0x01 for message sending …

Trying to send message 1 to endpoint 0x01 …

 OK, message successfully sent

Resetting response endpoint 0x82

Resetting message endpoint 0x01

-> Run lsusb to note any changes. Bye.  

 

4 安装wvdial拨号软件

       Wvdial是linux下的一款智能化拨号工具,利用wvdial和ppp可以实现linux下的轻松上网。在整个过程中,wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息;ppp的作用是与拨入放协商传输数据的方法并维持该链接。使用wvdial时,需要使用/etc/wvdial.conf配置文件,这个配置文件可以自动生成,但是可能需要进行一点修改。Wvdial载入wvdial.conf配置文件后,会对modem进行初始化并拨号,拨号后等待拨入方的响应,收到拨入方响应后则启动pppd。注:pppd在ubuntu10.04上已经安装了,所以这里就不需要管它。

 

1>下载安装wvdail

$ sudo apt-get install wvdial

 

2>配置wvdail,创建/etc/wvdial.conf文件

$ sudo wvdialconf /etc/wvdial.conf

Editing `/etc/wvdial.conf\’.

Scanning your serial ports for a modem.   //自动扫描外部硬件模块生成相应的配置文件

ttyS0<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud

ttyS0<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud

ttyS0<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.

ttyS1<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud

ttyS1<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud

ttyS1<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.

Modem Port Scan<*1>: S2   S3  

WvModem<*1>: Cannot get information for serial port.

ttyUSB_utps_diag<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud

ttyUSB_utps_diag<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud

ttyUSB_utps_diag<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.

WvModem<*1>: Cannot get information for serial port.

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 — OK

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 Z — OK

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 S0=0 — OK

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 S0=0 &C1 — OK

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

ttyUSB_utps_modem<*1>: Modem Identifier: ATI — Manufacturer: huawei

ttyUSB_utps_modem<*1>: Speed 9600: AT — OK

ttyUSB_utps_modem<*1>: Max speed is 9600; that should be safe.

ttyUSB_utps_modem<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

WvModem<*1>: Cannot get information for serial port.

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 — OK

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 Z — OK

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 S0=0 — OK

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 S0=0 &C1 — OK

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

ttyUSB_utps_pcui<*1>: Modem Identifier: ATI — Manufacturer: huawei

ttyUSB_utps_pcui<*1>: Speed 9600: AT — OK

ttyUSB_utps_pcui<*1>: Max speed is 9600; that should be safe.

ttyUSB_utps_pcui<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

 

Found a modem on /dev/ttyUSB_utps_modem.  //找到E1750经过usb转换后的linux设备文件

Modem configuration written to /etc/wvdial.conf. //创建/etc/wvdial.conf配置文件

ttyUSB_utps_modem<Info>: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0”

ttyUSB_utps_pcui<Info>: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0”

 

3>检查etc/wvdial.conf文件

$ sudo gedit /etc/wvdial.conf

[Dialer Defaults]

Init1 = ATZ

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0

Modem Type = Analog Modem

; Phone = <Target Phone Number>

ISDN = 0

; Password = <Your Password>

New PPPD = yes

; Username = <Your Login Name>

Modem = /dev/ttyUSB_utps_modem

Baud = 9600

 

/*添加Phone,Username和Password信息*/

Phone = *99#  //设置联通WCDMA接入点

Username = a  //注意,无线上网卡上网是没有用户及密码的,这里可以随便写个就行

Password = a

/*生成的/etc/wvdial.conf文件默认是没有设置Phone,Username和Password的,如果不设置这些,在使用wvdial时会出现如下错误

–> Modem initialized.

–> Configuration does not specify a valid phone number.

–> Configuration does not specify a valid login name.

–> Configuration does not specify a valid password.

 */

 

4>拨号入网

$ sudo wvdial   //使用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#

–> Waiting for carrier.

ATDT*99#

CONNECT 7200000

–> Carrier detected.  Waiting for prompt.

–> Don\’t know what to do!  Starting pppd and hoping for the best.

–> Starting pppd at Thu Apr 14 21:22:35 2011

–> Pid of pppd: 2539

–> Using interface ppp0

–> pppd: (U{[08]@S{[08]

–> pppd: (U{[08]@S{[08]

–> pppd: (U{[08]@S{[08]

–> pppd: (U{[08]@S{[08]

–> pppd: (U{[08]@S{[08]

–> pppd: (U{[08]@S{[08]

–> local  IP address 172.17.79.184

–> pppd: (U{[08]@S{[08]

–> remote IP address 10.64.64.64

–> pppd: (U{[08]@S{[08]

–> primary   DNS address 210.21.196.6

–> pppd: (U{[08]@S{[08]

–> secondary DNS address 221.5.88.88

–> pppd: (U{[08]@S{[08]    //有pppd设置好IP地址和DNS地址后,wvdial程序停在这里,这时已经接入了internet。

如果要停止网络,使用ctrl+C命令,可以中断连接。

–> Disconnecting at Thu Apr 14 21:34:12 2011

 

5>网络测试

$ sudo ifconfig  //查看系统中的网络连接

[sudo] password for user:

eth6      Link encap:Ethernet  HWaddr 00:0c:29:96:62:c4 

          inet6 addr: fe80::20c:29ff:fe96:62c4/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:9465 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5312 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:14096309 (14.0 MB)  TX bytes:307928 (307.9 KB)

          Interrupt:19 Base address:0x2024

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:116 errors:0 dropped:0 overruns:0 frame:0

          TX packets:116 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:9624 (9.6 KB)  TX bytes:9624 (9.6 KB)

 

ppp0      Link encap:Point-to-Point Protocol  //使用3G模块接入的PPP0节点

          inet addr:172.17.79.184  P-t-P:10.64.64.64  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:7 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3

          RX bytes:118 (118.0 B)  TX bytes:157 (157.0 B)

 

$ sudo ifconfig eth6 down  //将接入的有线网卡ethx关闭,使用3G模块接入的PPP0节点

$ sudo ifconfig           //

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:116 errors:0 dropped:0 overruns:0 frame:0

          TX packets:116 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:9624 (9.6 KB)  TX bytes:9624 (9.6 KB)

 

ppp0      Link encap:Point-to-Point Protocol 

          inet addr:172.17.79.184  P-t-P:10.64.64.64  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:7 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3

          RX bytes:118 (118.0 B)  TX bytes:157 (157.0 B)

 

$ ping www.baidu.com  //使用ping命令来测试网络

PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.

64 bytes from 61.135.169.105: icmp_seq=1 ttl=50 time=140 ms

64 bytes from 61.135.169.105: icmp_seq=2 ttl=50 time=156 ms

 

— www.a.shifen.com ping statistics —

7 packets transmitted, 7 received, 0% packet loss, time 31656ms

rtt min/avg/max/mdev = 124.525/154.563/171.575/15.575 ms

       如上,能够ping通baidu等网络站点,说明3G模块在ubuntu系统中已经能够接入网络了。

   注:在ubuntu下wvdial连入网络后,在使用浏览器打开网页时,主页在浏览器的file->work offline,我之前就是不知道,这项被选上了,死活都不能使用浏览器,还以为是哪里有问题呢!最后把file->work offline前的勾去掉,就能浏览internet了。(*^__^*) 嘻嘻……

 

 

版权声明:本文为subo_peng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/subo_peng/p/5166398.html