利用这个 USB ID 仓库识别更多 Linux 上的设备


利用这个 USB ID 仓库识别更多 Linux 上的设备

文章插图
 
这是一个包含了所有已知 USB 设备 ID 的开源项目 。
• 来源:linux.cn • 作者:Alan Formy-duval • 译者:geekpi •
【利用这个 USB ID 仓库识别更多 Linux 上的设备】(本文字数:6115,阅读时长大约:7 分钟)
 
市场上有成千上万的 USB 设备:键盘、扫描仪、打印机、鼠标和其他无数的设备,都能在 Linux 上工作 。它们的供应商详情都存储在 USB ID 仓库中 。
lsusbLinux lsusb 命令列出了连接到系统的 USB 设备的信息,但有时信息不完整 。例如,我最近注意到我的一个 USB 设备的品牌没有被识别 。设备是可以使用的,但是在列出我所连接的 USB 设备的详情中没有提供任何识别信息 。以下是我的 lsusb 命令的输出:
$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 004: ID 046d:082c Logitech, Inc.Bus 001 Device 003: ID 0951:16d2 Kingston TechnologyBus 001 Device 002: ID 18f8:1486  Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power SupplyBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub正如你在最后一栏中看到的,有一个设备没有制造商描述 。要确定这个设备是什么,我必须对我的 USB 设备树进行更深入的检查 。幸运的是,lsusb 命令有更多的选项 。其中一个选项是 -D device,来获取每个设备的详细信息,正如手册页面所解释的那样:
“不会扫描 /dev/bus/usb 目录,而只显示给定设备文件所属设备的信息 。设备文件应该是类似 /dev/bus/usb/001/001 这样的文件 。这个选项会像 v 选项一样显示详细信息,但你必须是 root 用户才行 。"
我认为如何将设备路径传递给 lsusb 命令并不容易,但在仔细阅读手册页和初始输出后,我能够确定如何构造它 。USB 设备驻留在 UDEV 文件系统中 。它们的设备路径始于 USB 设备目录 /dev/bus/usb/ 。路径的其余部分由设备的总线 ID 和设备 ID 组成 。我的无描述设备是 Bus 001 Device 002,被翻译成了 001/002,完成的路径为 /dev/bus/usb/001/002 。现在我可以把这个路径传给 lsusb 。我还会用管道传给 more,因为这里往往有很多信息:
$ lsusb -D /dev/bus/usb/001/002 |moreDevice: ID 18f8:1486  Device Descriptor:  bLength                18  bDescriptorType         1  bcdUSB               1.10  bDeviceClass            0 (Defined at Interface level)  bDeviceSubClass         0  bDeviceProtocol         0  bMaxPacketSize0         8  idVendor           0x18f8  idProduct          0x1486  bcdDevice            1.00  iManufacturer           0  iProduct                1  iSerial                 0  bNumConfigurations      1  Configuration Descriptor:    bLength                 9    bDescriptorType         2    wTotalLength           59    bNumInterfaces          2    bConfigurationValue     1    iConfiguration          0    bmAttributes         0xa0      (Bus Powered)      Remote Wakeup    MaxPower              100mA    Interface Descriptor:      bLength                 9      bDescriptorType         4      bInterfaceNumber        0      bAlternateSetting       0      bNumEndpoints           1      bInterfaceClass         3 Human Interface Device      bInterfaceSubClass      1 Boot Interface Subclass      bInterfaceProtocol      2 Mouse      iInterface              0        HID Device Descriptor:不幸的是,这里并没有提供我希望找到的细节 。初始输出中出现的两个字段 idVendor 和 idProduct 都是空的 。这有些帮助,因为往下看一下,就会发现 Mouse 这个词 。所以,这个设备就是我的鼠标 。


推荐阅读