什么是adb设备-l列表?

Pad*_*mar 12 android adb

adb devices -l
devices [-l]                  - list all connected devices
                                ('-l' will also list device qualifiers)
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我变得喜欢

padmakumar@padmakumar-desktop:~$ adb devices -l
List of devices attached 
Medfield14ABxxxx       device usb:2-1.5
Ztedfield14Axxxx       device usb:2-1.6
emulator-5554          device
015d2994ec2xxx         device usb:2-1.5 product:nakasi model:Nexus_7 device:grouper


Medfield14ABA072       device usb:1-1.1 ( changing to different port)
Run Code Online (Sandbox Code Playgroud)

当我改变到不同的端口时,它显示的总线编号为1和2,如lsusb命令中所示

这是什么设备USB:2- 1.5,1.6,1.1

那么-l会做什么,具体是设备限定符的含义吗?

我尝试过,lsusb但adb设备-l的信息不同.

padmakumar@padmakumar-desktop:~$ lsusb
Bus 002 Device 008: ID 18d1:4e42 Google Inc. 
Bus 002 Device 005: ID 17ef:7470 Lenovo 
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 046d:c03d Logitech, Inc. M-BT96a Pilot Optical Mouse
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
Run Code Online (Sandbox Code Playgroud)

Jas*_*key 5

它是USB子系统中设备的路径.例如,2-1.5意味着控制器2,端口1,端口5.在两个端口之间必须有集线器.这似乎与您的lsusb输出相匹配,这表示Bus 002 Device 001是一个集线器.

为了找到这个,我有一个挖掘adb源代码,并发现这被称为devpath.你可以看到它是如何被发现的usb_linux.c.总之,当找到设备时,代码解析符号链接,/sys/dev/char/<major>:<minor>并将最后一个路径组件作为devpath.如果您运行:

$ ls -l /sys/dev/char |grep usb
Run Code Online (Sandbox Code Playgroud)

您可以看到链接指向/sys/devices/platform/...,您应该看到其中一些路径以与设备匹配的组件结束.最后,我在Alan Stern的帖子中找到了这些路径的含义.