0

我正在研究 Linux 平台上的 USB HID。键盘、鼠标等是人机接口设备的示例。每当将 HID 插入系统时,首先会发生设备枚举。然后在 /dev 目录中出现一个 hidraw 形式的条目。

在 linux 中,“usbhid 和 hid”是插入 HID 设备时调用的模块。当我禁用这些模块(使用 rmmod 和系统重新启动)时,没有枚举设备,并且 /dev 上没有出现 hidraw 条目(如预期的那样)。

现在我的问题是有什么方法可以知道是否有任何 USB HID 设备连接到上述两个模块被禁用的系统,即在硬件插入时是否会产生任何中断或信号。

我计划在发生此类信号或中断时(在 C 中)执行一些代码。任何形式的帮助表示赞赏。

谢谢,

4

2 回答 2

0

通过 D+ 和 D- 线上发生的电压电平变化来检测设备的插入。我不认为插入 USB 设备会产生任何中断。集线器(根或线路上更远的任何集线器)读取电压电平变化并根据报告给内核。USB 核心驱动程序将收到相同的通知。因此,您可能可以编写针对特定设备的用户空间驱动程序(使用供应商和产品 ID),并通过它执行您的功能。

于 2012-05-21T06:09:27.407 回答
0

如果您在用户模式下执行此操作,您会收到使用udevnetlink内部使用)的通知。

您可以使用规则文件中的 vendorId 和 productId 字段匹配设备。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234"
于 2012-05-21T06:46:32.487 回答