Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236566
  • 博文数量: 25
  • 博客积分: 643
  • 博客等级: 上士
  • 技术积分: 359
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-03 13:18
文章分类

全部博文(25)

文章存档

2017年(1)

2013年(1)

2012年(7)

2011年(16)

分类: IT业界

2011-04-15 17:09:00

        

            统:Ubuntu 10.04

         3G模块:华为E1750

安装usb-modeswitch软件

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

      

在网页上下载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调试一个未知的新设备,有两种方式进行调试:

u  使用配置文件

       使用配置文件,需要编写一个与自己硬件相关的配置文件,可参看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信息来编写DefaultVendorDefaultProductTargetVendorTargetProduct等值。

u  使用命令行

使用命令行之前,需要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"

*/

 

中识别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

 

设置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.  

 

安装wvdial拨号软件

       Wvdiallinux下的一款智能化拨号工具,利用wvdialppp可以实现linux下的轻松上网。在整个过程中,wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息;ppp的作用是与拨入放协商传输数据的方法并维持该链接。使用wvdial时,需要使用/etc/wvdial.conf配置文件,这个配置文件可以自动生成,但是可能需要进行一点修改。Wvdial载入wvdial.conf配置文件后,会对modem进行初始化并拨号,拨号后等待拨入方的响应,收到拨入方响应后则启动pppd。注:pppdubuntu10.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: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

ttyUSB_utps_pcui: 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 =

ISDN = 0

; Password =

New PPPD = yes

; Username =

Modem = /dev/ttyUSB_utps_modem

Baud = 9600

 

/*添加PhoneUsernamePassword信息*/

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

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

Password = a

/*生成的/etc/wvdial.conf文件默认是没有设置PhoneUsernamePassword的,如果不设置这些,在使用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   //使用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

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

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

 

阅读(7495) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~