ubuntu 10.04 使能新设备的adb功能

来源:互联网 发布:广联达软件销售电话 编辑:程序博客网 时间:2024/06/06 01:11

linux系统不认终端adb端口有两种情况,一是终端的vID和pID在udev的rules里面没有对应项,在

http://blog.csdn.net/yang_hui1986527/article/details/7665989#comments

的文章提到了怎么解决这个问题。


另外一种情况是,终端映射出来的vID和pID不是adb interface的vID/pID:目前的手机或者数据卡连接PC的时候会首先映射出一个U盘或者光驱,里面会包含驱动或拨号工具等等必需软件,windows在碰到这样的设备的时候会自动切换(mode switch)终端的功能(所谓的ZeroCD功能,厂商可省掉驱动光盘的成本)。


在linux界自然也有对应的办法来处理这种情况,这就是usb_modeswitch工具。我机器上安装的是“老迈”的ubuntu 10.04,默认连usb_modeswitch也没有,于是C8812连接之后使用lsusb看到的ID是12d1:1031,adb不可用;在别人11.10系统上lsusb看到的是12d1:1035,必然是没有进行切换了。用apt-get install安装之后发现自动安装的是2010年的版本,里面的切换规则也不全。谷歌了一通发现usb_modeswitch的最新版本已经到了1.2.3,支持的设备列表也更新到了2012-05-19,遂决定安装最新版,操作过程如下:


1,下载usb-modeswitch-1.2.3.tar.bz2和usb-modeswitch-data(这俩好基友好最好下同一版本的)和device_reference.txt

2,sudo apt-get install libusb-dev安装usb-modeswitch所需的库libusb

3,解压usb-modeswitch-1.2.3.tar.bz2后,进入该目录make install(如果之前安装过旧版本,先make uninstall)

4,解压usb-modeswitch-data后,进入该目录make install

整完这4步之后,C8812连PC之后adb已经可以用了,lsusb看到切换到了12d1:1035。


如果以后有新设备linux认不出来,可以下载最新的device_reference.txt,使用命令usb_modeswitch -C device_reference.txt导入新的规则来支持新设备。

(其实之前2010版的usb_modeswitch也可以通过这种方式更新规则,不需重新安装)


简单看下/usr/share/usb_modeswitch(应该是根据usb-modeswitch-data里的usb_modeswitch.d生成的)里有一个名字是12d1:1031的文件,内容如下:

  1 # Huawei U8110 / Joy, Vodafone 845 (Android smartphone)  2   3 TargetVendor=  0x12d1  4 TargetProduct= 0x1035  5   6 MessageContent="55534243123456780600000080010a11060000000000000000000000000000"  7   8 # for Android SDK  9 NoDriverLoading=1

可以看到这个就是切换的规则。


usb_modeswitch相关参考以及下载链接:

http://www.draisberghof.de/usb_modeswitch/

原创粉丝点击