我正在尝试获取 USB 设备的设备节点(例如 /dev/sdb)。
我想知道是否有任何 libusb API 可以为我提供与 USB 设备关联的特定设备节点。
如果没有 API,是否还有其他替代方法可以实现这一点?对此的任何见解都会被证明是非常有帮助的。
提前致谢。
在 Linux 上,探索连接的 USB 设备及其属性的最简单方法是简单地扫描目录/sys/bus/usb/devices
。此虚拟目录列出了所有连接的设备。每个条目的结构都非常简单,每个连接了从属设备(如通过集线器连接的设备)都有一个虚拟子目录。还有什么好处是,通常您无需成为 root 即可读取大量设备属性,例如制造商或序列号。
这个接口的另一个非常好的特性是它是半稳定的。也就是说,每个设备都有唯一的 id,例如a-b.c.d.e:x.y
(a - 总线号,b,c - 根集线器,下一个集线器,端口等,x,y - 功能,子功能),并且此设备枚举不会突然改变如果一台设备已连接或断开连接,则适用于所有设备。
您还可以轻松地将这些设备 ID 映射到 libusb 样式的总线/设备编号(但这些并不稳定)。
不幸的是,这是特定于 Linux 的,似乎不适用于其他操作系统。我希望 libusb 已经实现了这样的东西,但它没有。无论如何,祝你好运!