ubuntu系统无法连接识别到adb设备和fastboot设备解决方法

最近在使用adb连接安卓设备(mtk安卓设备)的时候出现一个问题:

问题一:adb无法识别到设备。

这种情况首先需要确认下你的安卓设备的usb口是不是配置成了OTG模式(看代码确认,一般在dts配置),OTG功能就是可以根据你接入的设备,本机自动切换成为host设备或者device设备,host设备通常是作为主机来用,比如你接入u盘的时候,我可以去读取你的u盘,你把usb口接入电脑的usb的时候,我可以成为device,也就是从设备,这时候你可以读取我设备的信息,或者操作我的设备等。

我这里usb OTG口和网络共用了一个usb口,需要手动切换一下usb的模式:现在的软件做了节点切换。
echo 0 > sys/class/device_ctrl/device_ctrl/val //对这个节点写0,就可以使用USB线连接ADB。写1就切换回网络

问题二:
在windows设备可以识别到adb设备和fastboot设备,但是在ubuntu系统却无法识别到设备,而且lsusb已经识别到设备的vid和pid了
如下所示,第一个是我的安卓设备,是一个MTK平台的设备:

root@ubuntu:~# lsusb
Bus 001 Device 060: ID 0e8d:2003 MediaTek Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

网上有说是权限的问题,也试过切换到root或者使用sudo来操作对应adb的命令,但是依然识别不到设备。

后来在网上查找资料才发现,原因是"adb内建有一个知名的厂商ID列表,对于列表内的设备,adb可以直接连接,而不在列表中的设备,它会直接返回,这也就是为什么android设备的驱动已经安装好了,
而adb连接不上的原因。"

解决办法:

  1. 首先使用lsusb命令查询usb设备id()
root@ubuntu:~# lsusb
Bus 001 Device 060: ID 0e8d:2003 MediaTek Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

上面的Device 060是我的安卓设备,usb设备的vid(也就是厂商的ID)为0e8d。

  1. cd进入~/.android/目录,创建adb_usb.ini文件;

  2. 编辑adb_usb.ini文件,将设备的vid添加到文件里(注意添加0x,表示16进制格式)

0x0e8d
  1. adb kill-server杀掉adb服务;

  2. 然后用adb devices重新查找设备,就可以找到了;

如果要查看所有 USB 设备的信息,可以这样做:先不插入设备然后查看一下有哪些设备,然后插入设备再查看一次就能确定当前 USB 设备的信息,包括 PID 和 VID。

cat /sys/kernel/debug/usb/devices 

问题三:lsusb可以识别到设备,但是fastboot识别不到设备
原因分析:很有可能跟fastboot工具有关,如果不行就换个工具,我当时在网上下载了几个工具也不行,后面找到对应fastboot源码,修改以下接口函数即可以识别fastboot设备,修改的内容也就是把你的设备的VID(厂商ID,这个一般是固定的)添加到match_fastboot_with_serial接口函数中

--- a/fastboot.c
+++ b/fastboot.c
@@ -209,7 +209,8 @@ int match_fastboot_with_serial(usb_ifc_info *info, const char *local_serial)
        (info->dev_vendor != 0x413c) &&  // DELL
        (info->dev_vendor != 0x2314) &&  // INQ Mobile
        (info->dev_vendor != 0x0b05) &&  // Asus
-       (info->dev_vendor != 0x0bb4))    // HTC
+       (info->dev_vendor != 0x0bb4) &&  // HTC
+       (info->dev_vendor != 0x0e8d))    // MTK
             return -1;
     if(info->ifc_class != 0xff) return -1;
     if(info->ifc_subclass != 0x42) return -1;
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零意@

您的打赏将是我继续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值