如果之前是正常的,突然识别不了设备了:
- 先拔掉USB线,两端都拔掉,然后模块关机重启,重启后再插上USB线,看是否能识别
- 如果不行,换个USB口再试试
- 如果还不能识别,按照同样的流程,再把电脑也关机重启试试
如果一开始就不正常,先检查开发者选项有没有打开调试模式,user版本的系统默认都没有打开,需要手动去打开
不成功请尝试
1、执行
lsusb
查看USB的VID和PID
2、执行
sudo gedit /etc/udev/rules.d/51-android.rules
在文件中添加
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6",ATTRS{idProduct}=="901f",MODE="0666"
其中ATTR{idVendor}为冒号左边的值,ATTRS{idProduct}为冒号右边的值
3、给51-android.rules文件添加权限
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
4、重启udev服务
sudo service udev restart
#或者
sudo /etc/init.d/udev restart
5、重新拔插USB,然后重启adb
adb kill-server
adb devices
如果还没有显示设备,则执行
sudo gedit ~/.android/adb_usb.ini
复制0x05c6到该文件,然后保存,然后重启udev服务后重新拔插USB
一般到这里都能OK,如果仍然不成功,继续往下执行
sudo gedit /lib/udev/rules.d/50-udev-default.rules
查找关键字usb_device,修改权限为MODE=“0666”
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
同时在该目录下添加新的rules文件
sudo gedit /lib/udev/rules.d/51-android.rules
添加内容
SUBSYSTEM="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="05c6", MODE="0666"
保存退出后,再设置一下权限
sudo chmod a+rx /lib/udev/rules.d/51-android.rules
重启udev服务,重新拔插USB,然后重启adb
如果以上所有方式都试过了,还是不成功,那么很有可能就是多个adb冲突了,什么意思呢
就是当我重装Ubuntu后会安装各种环境,其中会通过sudo apt-get install adb或者sudo apt-get android-tools-adb来安装adb,这种方式会默认安装到/usr/bin/目录下,通过which adb可查看adb安装路径,而当我安装了Android Studio之后,再在AS里面下载SDK时,SDK会自带adb,而且是比较新的版本,可以进入到SDK根目录下的platform-tools目录里,执行./adb version查看adb版本,而SDK里面的adb似乎会优先于/usr/bin/adb执行,而我们执行adb devces时,其实是执行的/usr/bin/adb,而此时adb的端口号5037已经被SDK的adb占用了,当然不会生效啦,具体验证方法:可以分别进入到/SDK根目录/platform-tools/和/usr/bin/,然后执行./adb devices,看看哪个能显示设备,就表明哪个正在占用5037的端口,也可以通过查看5037端口所占用的程序来证明
好啦,说了这么多,如何解决这个问题呢,很简单,就是把/usr/bin/adb卸载掉
执行
sudo apt-get remove adb
然后把platform-tools/adb拷贝到/usr/bin/目录下,然后给adb增加权限
sudo chmod 777 /usr/bin/adb
这样再在任何目录使用adb devices查看设备时就不会有问题啦!
后期还遇到这种情况,adb总是反复断开重连,当不断执行adb devices时会出现一会儿有,一会儿没有的情况,执行fastboot devices不会出现这种情况,但是单刷img镜像时会报错:FAILED (Write to device failed (Protocol error)),这种问题的原因可能有以下几种情况(都是根据google楼主提供的):
- 数据线插在USB3.0的接口上了
插到USB2.0的接口上即可 - 数据线的问题
换一根短一点的USB线 - usb线接触不良
- adb端口被其他进程占用,比如Android Studio,wps,电脑管家,电脑手机助手等