使用 udev 检测 USB 设备类型

使用 udev 检测 USB 设备类型

我正在编写一个程序,用于libudev检测系统上的 USB 设备连接。我想知道连接的每个设备的类型是什么。我认为 udev 没有明确说明 USB 的类型,例如我想知道连接的设备是打印机、网络摄像头还是键盘。我怎样才能做到这一点?任何想法?

答案1

任何 USB 设备的类型均使用bDeviceClassbDeviceSubClass属性来标识,其值由相关 USB 协议规范定义:请参阅https://www.usb.org/define-class-codes获取类别代码列表。

如果 USB 设备具有多种功能,您可能还需要检查bInterfaceClassbInterfaceSubClass属性,以识别各个功能。

如果类代码结果为0xff,这意味着“特定于供应商”,您很可能需要识别实际的设备模型(使用idProductidVendor属性)来确定设备是什么。

答案2

我认为udev没有明确说明USB的类型是什么,

udev 基本上以属性的形式报告内核所知道的有关 USB 设备的所有信息,例如供应商和产品 ID 以及类别。看看例如这些示例规则并查看 USB 设备上的属性以查看更多信息。

对于例如键盘 (HID) USB 设备和摄像头来说,已经有相当多的自动化正在进行,因此无论您正在编写什么,请确保它符合现有的 udev 规则和内核操作。

相关内容