USB HID 设备检测
Posted
技术标签:
【中文标题】USB HID 设备检测【英文标题】:USB HID device detection 【发布时间】:2012-05-10 19:47:04 【问题描述】:我正在尝试在 Ubuntu(kernel-3.0) 下访问 USB HID 设备。我想编写一个程序,它可以在 USB 设备连接到总线时通知我,即每当插入 USB 设备时是否会生成任何事件,我可以监控。我研究过 DBus 和 HAL 没有任何成功。但是我不希望linux在设备插入时加载其当前模块(USBHID和HID)。我还想问一下提到的模块是否也是用于HID设备的设备驱动程序。
我的唯一目的是在 USB 设备插入总线时运行一个脚本,该脚本将间接调用上述模块。
我正在用 C 编写代码。我对 linux 很陌生。因此,如果有人能指出我正确的方向,那将是非常有帮助的。
谢谢..
【问题讨论】:
【参考方案1】:UDisks 守护程序将在插入 USB 驱动器时发送 D-Bus 信号“DeviceAdded”,并且可能会为驱动器上的每个分区发送另一个“DeviceAdded”信号。如果您有自动挂载,则在挂载分区时也会收到“DeviceChanged”信号。然后,您可以查询 UDisk 接口以及各个设备的属性,例如。您可以在此处找到有关 UDisks 界面的更多信息:http://hal.freedesktop.org/docs/udisks/UDisks.html
要更熟悉 D-Bus 上的块设备(或其他)发生的事情,一种方法是安装和使用 D-Feet 来检查总线。 UDisk 出现在系统总线上。您可以查看其中的内容并检查各个设备的属性以及 UDisk 接口本身。
另一种方法,也可以让您查看总线上传输的信号,是从命令行运行 dbus-monitor。
【讨论】:
我写了一个程序(类似于signal11.us/oss/udev/udev_example.c)which使用libudev监视器来查找HID设备添加事件。它在/dev下查找仅在设备被枚举后出现的hidraw条目。所以我想我除了编写内核驱动程序之外别无选择。感谢您的链接.. 我很高兴这个答案至少在某种程度上有所帮助。 答案有点没抓住重点。 OP 要求为插入/拔出 USB 人机交互设备 (HID) 而不是 USB 存储设备生成事件。显然我们必须像 @pattu777 列出的 C 程序中所做的那样直接监控 udev。以上是关于USB HID 设备检测的主要内容,如果未能解决你的问题,请参考以下文章