linux - 有没有办法使用 libusb API 获取 USB 设备的设备节点?

标签 linux libusb

我正在尝试获取 USB 设备的设备节点(例如/dev/sdb)。

我想知道是否有任何 libusb API 可以为我提供与 USB 设备关联的特定设备节点。

如果没有 API,是否还有其他替代方法可以实现此目的?对此的任何见解都会证明非常有帮助。

提前致谢。

最佳答案

在 Linux 上,探索连接的 USB 设备及其属性的最简单方法是简单地扫描目录 /sys/bus/usb/devices。这个虚拟目录列出了所有连接的设备。每个条目都有非常简单的结构,并且对于每个连接了从设备的设备(比如通过集线器连接的设备)都有虚拟子目录。 还有一个好处是,通常您无需成为 root 用户即可读取大量设备属性,例如制造商或序列号。

这个接口(interface)的另一个非常好的特性是它是半稳定的。也就是说,每个设备都有唯一的 ID,如 a-b.c.d.e:x.y(a - 总线编号,b,c - 根集线器,下一个集线器,端口等,x,y - 功能,子功能),并且如果一个设备连接或断开连接,此设备枚举不会突然改变所有设备。

您还可以轻松地将这些设备 ID 映射到 libusb 样式的总线/设备编号(但这些并不稳定)。

不幸的是,这是特定于 Linux 的,似乎不适用于其他操作系统。我希望 libusb 已经实现了类似的东西,但它没有。 无论如何,祝你好运!

关于linux - 有没有办法使用 libusb API 获取 USB 设备的设备节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132714/

相关文章:

c# - ControlTransfer 指令未从 LibUsbDotNet 中的设置打包器发送值参数

c - 迁移到实验性 gradle Android Studio 2.0+ 时包含的问题

node.js - 为什么安装了node js 8.xx版本却还是显示v6.3.1版本?

linux - 我需要一个 TCP 选项 (ioctl) 来立即发送数据

windows - 在 Windows 64 位上将 libusb 与 Delphi 一起使用?

linux - libusb接口(interface)已经声明

c - linux函数openat vs open, "at"是什么意思?

java - 无法将 Java 客户端连接到 C 服务器

python - 使用 Linux 在启动时运行 python 应用程序/脚本

python - 在 python 中导入 hid 会导致错误 "hid.so: undefined symbol: libusb_open"