转自:

http://blog.csdn.net/liuqz2009/article/details/7942569

1、做android开发的过程,碰到了Linux下adb识别不了android设备的问题,刚开始在网上google下,发现都是针对ubuntu下的一些说明:如google提供的方法:http://developer.android.com/tools/device.html,但发现通过做这些还是有些android设备连接不上,于是通过阅读adb源码,得出了一些方法,和大家一起共勉下:

a、google提到的修改/etc/udev/rules.d/51-android.rules的方法:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

其实这样做的目的无非是为了使adb对创建的usb节点有访问权限,其实只要使用root来启动adb server就不存在此问题。做法如下:在root终端上运行adb start-server ,如果已经有运行adb命令的则需要杀掉adb server,运行 ps aux | grep adb ,找到adb server的pid,然后kill掉,如我机器上:

root       2795  0.0      0.0         30556      1244          pts/2              sl          09:00  0:03           adb fork-server server

执行kill 2795杀掉adb server。

b、通过以上办法还是无法识别android设备的,则可能你的android的VID未能加入adb中,你需要手动添加。

添加的文件位置与你第一次启动adb server有关,如你在root上启动adb server,则其位置在

/root/.android/adb_usb.ini,否则其位置在$HOME/.android/adb_usb.ini下,如果$HOME为空,则在/tmp/.android/adb_usb.ini下。未有文件或目录的请手动添加。以下是一份adb_usb.ini的示例:

#for OKWAP C900

0x14b4

#for K-Touch W606

0x0525

#for lenovo speic

0x2006

其中#开头表注释,其它则表示android的VID,每个VID需要单独一行。

获取VID的方法:插上设备前运行lsusb,插上设备后,再次运行lsusb,多出的那个就是你的设备,而VID就在其中如:

Bus 001 Device 034: ID 2006:5010

其中的2006即为其VID。

在adb_usb.ini中添加好后,杀掉adb server,然后启动adb server,(参考a中提到的方法)。

c、如果按以上执行完以上两步还不行,那就碰到了令人头痛的问题了。

现在有些usb设备叫做“免CD”设备。具体点来说,目前一些新的USB 设备在内部含有windows驱动,当你第一次插入的时候,它作为一个闪存,并提示你安装驱动。在安装驱动之后,驱动会自动切换USB设备的模式,存储设备将会消失(大多数情况),新的设备将会产生(如USB类型的Modem)。这种特征被无线设备的制造商称其为“免CD”的设备。在Linux下是通过usb_modeswitch这个工具自动切换的。你读到这里说明你的设备肯定不在usb_modeswitch支持的列表中。此时你要么等其支持,要么就是自己动手支持了。

要自己手动支持,这是个复杂的过程,你可以参考:http://www.draisberghof.de/usb_modeswitch/

简单的来讲,如果你要自己支持,也就是要抓取Windows下驱动做了哪些事情,让其进行了模式切换。然后你在/etc/usb_modeswitch.d/目录下参照已有的文件,创建自己的配置文件如:2006:5010,在其中添加你抓取到得信息。

备注:windows下没过多研究,一般装上驱动,识别到了adb接口就可以识别到。平板上和Linux下比较类似,不过其$HOME为空,所以添加的目录在/tmp/.android/adb_usb.ini里。

连接金立手机 GiONEE GN9005 。最后通过文中的第二种方法

(1)先在插入usb之前和之后,运行lsusb,获取设备VID

xxx@xxx:~$ lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 17ef:6019 Lenovo
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

xxx@xxx:~$ lsusb
Bus 002 Device 018: ID 271d:c011 
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 17ef:6019 Lenovo 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

得到设备VID为271d

(2)然后在Home路径下的 /.android 路径下新建了文件adb_usb.ini

内容为:

#for GiONEE GN9005
0x271d

(3)然后adb kill-server    adb start-server

成功连上

在Linux下adb连接不上android手机的终极解决方案的更多相关文章

  1. Linux下PHP连接MS SQLServer的办法

    Linux下PHP连接MS SQLServer的办法分析问题 本来PHP脚本读写SQLServer是没有什么问题的,在Apache for windows和Windows IIS下可以工作的很好,一般 ...

  2. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  3. Linux下远程备份、上传工程,重启服务器

    Linux下远程备份.上传工程,重启服务器 Linux服务器实现远程,原项目的备份.删除,新项目上传,以及远程重启服务器!分成一个主shell调用三个shell文件步骤完成.mainsh.sh一次按顺 ...

  4. linux下动态连接变为静态打包,使用statifier_S展翅飞_新浪博客

    linux下动态连接变为静态打包,使用statifier_S展翅飞_新浪博客 linux下动态连接变为静态打包,使用statifier (2013-04-27 14:38:19) 转载▼

  5. 怎么找到占用usb的模块,linux下Jlink连接失败

    问题是这样产生的,我在linux下安装jlink,启动JLinkExe执行,总是提示不能通过usb连接: SEGGER J-Link Commander V5.10q (Compiled Mar :: ...

  6. adb连接不上手机

    昨天电脑重装了系统,今天打开之前的eclips工作环境,点击run as -> android application,一直报各种诡异的错误,总之就是连接不上手机. 其中包括 Adb conne ...

  7. Linux下C连接MySql数据库

    目录: 一.解决小的问题: 二.大问题,如果你不小心把/usr/lib的所属用户改了导致sudo命令用不了: 三.C连接MySql编程本身: 其实写这个程序真的很简单,十多分钟的事情,只是以前没在Li ...

  8. ADB连接不上手机,端口5037被占用的情况解决

    最近在搞手机APP自动化测试,adb连接手机时提示端口被占用 检测5037端口被谁占用,cmd窗口输入命令:netstat -ano | findstr "5037" (注意”50 ...

  9. linux下mysql连接jar包的位置在哪里?

    linux下连接mysql数据库,肯定也会用到驱动jar包. 该jar包应该被置于jdk安装路径下jre文件夹lib目录的ext文件夹下.例如我的JDK安装路径为/usr/java/jdk1.6.0_ ...

随机推荐

  1. codeforces 777C.Alyona and Spreadsheet 解题报告

    题目链接:http://codeforces.com/problemset/problem/777/C 题目意思:给出一个 n * m 的矩阵,然后问 [l, r] 行之间是否存在至少一列是非递减序列 ...

  2. review16

    java.lang包中的Math类包含许多用来进行科学计算的方法,这些方法可以直接通过类名调用. Math类中还有两个静态常量E和PI,分别表示自然对数和圆周率. 以下是Math类的常用方法 pulb ...

  3. php:file()与file_get_contents():讲日志文件没行读为数组形式

    file()与file_get_contents()一样,都是读取某文件的内容.file_get_contents()输出的是整个文件(不能读取TXT里的首行缩进和换行符). file() 函数把整个 ...

  4. 简单实用的磁带转MP3方法图解

    读完这篇文章,然后在看看文章的最后部分. [图文]磁带转Mp3教程 来源:  作者:netseeker 一.工具 1.音频线一条. 在一般的电器铺都能买到,8-15元不等,两头的接口是一样的,可以混用 ...

  5. nexus上传jar带依赖

    编写pom文件 比如我上传alipay-sdk-java.jar   依赖是commons-logging.jar <project> <modelVersion>1.3.1& ...

  6. PKUSC2018 Slay The Spire

    有攻击牌和强化牌各 $n$ 张,强化牌可以让之后所有攻击牌攻击力乘一个大于 $1$ 的系数,攻击牌可以造成伤害 求所有“抽出 $m$ 张然后打 $k$ 张”能造成的伤害之和 $k,m,2n \leq ...

  7. Redis底层探秘(五):Redis对象

    前面几篇文章,我们一起学习了redis用到的所有主要数据结构,比如简单动态字符串(sds).双端链表.字典.压缩列表.整数集合等等. redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这 ...

  8. CODE FESTIVAL 2017 qual A--B-fLIP(换种想法,暴力枚举)

    个人心得:开始拿着题目还是有点懵逼的,以前做过相同的,不过那是按一个位置行列全都反之,当时也是没有深究.现在在打比赛不得不 重新构思,后面一想把所有的状态都找出来,因为每次确定了已经按下的行和列后,按 ...

  9. 消息队列mq总结(重点看,比较了主流消息队列框架)

    转自:http://blog.csdn.net/konglongaa/article/details/52208273 http://blog.csdn.net/oMaverick1/article/ ...

  10. SQL Server 学习系列之五

    SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...