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 设备检测的主要内容,如果未能解决你的问题,请参考以下文章

如何检测使用 USB HID API 推送的游戏手柄触发器?

将 USB 设备连接到 Android 模拟器?

使用NFC检测HID感应卡

usb蓝牙转hid

USB-HID的介绍

检测连接的 USB 设备