我有一个作为 USB HID 连接的伽马能谱仪。当它被插入时,dmesg
它会告诉我有两个设备文件是为其创建的,hiddev0
并且hidraw2
(显然,编号并不重要。)
根据文档和字节的目视检查,我想从hidraw2
.但我很好奇正在传输什么样的数据hiddev0
,因为在我注意到它存在之前,我花了一段时间试图弄清楚它hidraw2
。
以下是来自 的一些示例数据hiddev0
。
00000000 01 00 00 ff 0d 00 00 00 01 00 00 ff 81 00 00 00 |................|
00000010 01 00 00 ff 0b 00 00 00 01 00 00 ff 00 00 00 00 |................|
00000020 01 00 00 ff 0e 00 00 00 01 00 00 ff c1 00 00 00 |................|
00000030 01 00 00 ff 08 00 00 00 01 00 00 ff 01 00 00 00 |................|
00000040 01 00 00 ff 08 00 00 00 01 00 00 ff 41 00 00 00 |............A...|
00000050 01 00 00 ff 0b 00 00 00 01 00 00 ff 31 00 00 00 |............1...|
00000060 01 00 00 ff 07 00 00 00 01 00 00 ff b1 00 00 00 |................|
00000070 01 00 00 ff 09 00 00 00 01 00 00 ff 01 00 00 00 |................|
00000080 01 00 00 ff 08 00 00 00 01 00 00 ff b1 00 00 00 |................|
00000090 01 00 00 ff 08 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000a0 01 00 00 ff 1d 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000b0 01 00 00 ff 0a 00 00 00 01 00 00 ff f1 00 00 00 |................|
000000c0 01 00 00 ff 08 00 00 00 01 00 00 ff 51 00 00 00 |............Q...|
000000d0 01 00 00 ff 34 00 00 00 01 00 00 ff 91 00 00 00 |....4...........|
根据要求,这是来自 的行dmesg
。
[411407.529580] hid-generic 0003:04D8:0023.0003: hiddev0,hidraw2: USB HID v1.01 Device [Kromek SIGMA50] on usb-0000:00:1a.1-2/input0
答案1
部分答案:
驱动程序是hid-generic
,因此下一步是查看 HID 描述符。作为根用户,执行以下操作:
mount -t debugfs none /sys/kernel/debug
然后查看 的内容/sys/kernel/debug/hid/<dev>/rdesc
,其中<dev>
标识您的设备。
HID 描述符描述了您可以从描述符中读取和写入的内容的格式hidraw
(也许对您也很重要)。这些由内核 HID 解析器处理,然后发送到hiddev
描述符。至少对于输入设备,上面的文件还包含有关内核解析器如何处理这些信息的信息,但我不确定hid-generic
.
比较您在hidraw
和上看到的内容hiddev
应该可以对内核解析器的功能进行一些很好的猜测,并且有疑问的人可以阅读源代码。
您可以在内核源代码中Documentation/hid/hidraw.txt
找到更多信息。/Documentation/hid/hiddev.txt
这“隐藏页”评论中有 HID 标准,如果您想阅读这些标准。