usb_modeswitch如何安装

来源:互联网 发布:淘宝微海报在哪里展示 编辑:程序博客网 时间:2024/06/07 08:14

在前面的博客里有关于usb_ modeswitch的详细介绍,这里我们来说说如何安装这个工具:
一、下载安装包

  1. usb_modeswitch-2.2.1.tar.bz2(http://www.draisberghof.de/usb_modeswitch/#download)版本更新比较快,点开下载最新的安装包,下同。

Usb_modeswitch是对USB设备的工作模式进行转换一种万能工具,当然这种宝贝,只有在linux下才能体现其巨大的作用。随着移动通信,无线通信的发展,越来越多的设备被制作成USB接口,像一些无线网卡,3G数据卡等等。这些设备的厂家一般都会提供windows 下驱动,这些设备在第一次插上机子的时候,它们处于CDROM+闪存模式,可以从中提供驱动程序安装驱动,在驱动程序安装完成后,驱动会转换成3G模式,此时就会出现usb modem设备,目前的3G卡片全都是这样,这就是所谓的“ZeroCD”。

而在linux下我们可没有那么好的待遇,厂家一般不会给我们提供linux下面的驱动,而目前的内核还不能自动识别并驱动。所以我们需要用usb_modeswitch这个工具来进行模式转换,设备模式依赖usb-storage和usbserial模式,所以,在开发板上需要有这两种模块的支持,设备并能够正常工作于这两种模式下。

2.usb_modeswitch-current_data.tar.bz2(http://www.draisberghof.de/usb_modeswitch/)这个包里包括提供给UDEV的驱动设备信息,和很多设备使用usb_mdoeswitch进行转换模式时需要配置的参数,下载它用于参考。

3 . libusb-1.0.6.tar.bz2 (http://sourceforge.net/projects/libusb/files/libusb-1.0/)Libusb才是我们的真正骨干力量,提供给usb_modeswitch一套系统API,所以,自然usb_modeswitch这个包工头要想工作,肯定不能离开libusb这个工人为其服务。

4.libusb-compat-0.1.3.tar.bz2 (http://www.linuxfromscratch.org/blfs/view/svn/general/libusb-compat.html)
或者在这个网站下载3和4,http://www.linuxfromscratch.org/blfs/view/svn/general/libusb-compat.html
libusb分为0.1和1.0两年版本,而1.0版本与0.1有较大的不同,并不向下兼容,必须依赖libusb-compat。

二. 交叉编译usb_modeswitc,

  1. 交叉编译 libusb

A. 解压并进入libusb-1.0.6目录,建立子目录install用于存放最后生存的库文件与头文件。

[Anson@libusb-1.0.6]# mkdir install

B. 配置并生成Makefile文件

[Anson@libusb-1.0.6]#./configure --build=i686-linux --host=arm-linux --prefix=/home/Anson/libusb-1.0.6/install

C. [Anson@libusb-1.0.6]#make

D. [Anson@libusb-1.0.6]# make install

  1. 设置PKG_CONFIG_PATH环境变量,以使我们后面的编译能够顺利找到libusb库

A.设置环境变量

[Anson@libusb-1.0.6]# export PKG_CONFIG_PATH=/home/Anson/libusb-1.0.6/install/lib/pkgconfig:$PKG_CONFIG_PATH

B.查看是否设置正确

[Anson@libusb-1.0.6]#echo $PKG_CONFIG_PATH
  1. 交叉编译lib_compat

与上面编译libusb的方法类似:

A.[Anson@libusb-compat-0.1.3]#.mkdir installB . [Anson@libusb-compat-0.1.3]#./configure --build=i686-linux --host=arm-linux --prefix=/home/Anson/libusb-compat-0.1.3/installC. [Anson@libusb-compat-0.1.3]#makeD. [Anson@libusb-compat-0.1.3]#make install

说明:如果此时出现”-Wno-pointer-sign”、”-fvisibility=hidden”这类错误,则是由于编译器版本过低不支持导致的,可以直接在Makefile和libusb/Makefile文件中删除这些编译选项即可。

  1. 交叉编译usb_modeswitch

A.修改Makefile文件

修改STRIP和CC选项为:

STRIP = arm-xxx-linux-strip

CC = arm-xxx-linux-gcc

B. 可以将上面的libusb和libusb-compat的库和头文件拷贝到交叉编译器的lib和include目录下,或者直接加上编译选项指令库的路径即可如下:

INCLUDEDIR = /home/anson//libusb-1.0.6/install/include/libusb-1.0LIBDIR = /home/anson/libusb-1.0.6/install/lib$(PROG): $(OBJS)$(CC) $(CCFLAGS) -I $(INCLUDEDIR) -L $(LIBDIR) -o $(PROG) $(OBJS)//如果不行动态链接-lpthreadINCLUDEDIR = /home/anson//libusb-1.0.6/install/include/libusb-1.0LIBDIR = /home/anson/libusb-1.0.6/install/lib$(PROG): $(OBJS)$(CC) $(CCFLAGS) -I $(INCLUDEDIR) -L $(LIBDIR) -o $(PROG) $(OBJS)

这里的usb.h就是libusb-compat目录下的,如果没有usb.h,usb_modeswitch是编译不过去的。

C. make

5 . 安装完成,查看/usr/share/usb_modeswitch搜索你的设备是否支持(在终端输入lsusb查看你的设备id),如果你的设备不受支持,编辑etc目录下的usb_modeswitch.conf文件,在该文件中加入你要转换的设备ID等信息,如:

DefaultVendor= 0x12d1//转换的设备生产上id

DefaultProduct= 0x1446//设备id

TargetVendor = 0x12d1//生成设备生产商id

TargetProduct= 0x1001//生成设备id

MessageContent=”55534243000000000000000000000011060000000000000000000000000000”(不一定所有设备的MessageContent值是一样的,可以使使用SniffUSB工具查看)

MessageEndpoint=0x01

CheckSuccess=5

HuaweiMode=0 (特别注意这个参数,我在开发板上的麻烦就出在这个参数上面)

6、如果是第一种情况则可以:usb_modeswitch -v 12d1 -p 1f01 -M”55534243123456780000000000000011062000000100000000000000000000”运行,第二种情况在终端下输出:usb_modswitch -W -c /etc/usb_modeswitch.conf
根据提示如果转换成功,使用ls /dev/ttyUSB*查看转换后的设备。

原创粉丝点击