首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一个Yubico显示为多个设备,hid-泛型和输入有什么区别?

为什么一个Yubico显示为多个设备,hid-泛型和输入有什么区别?
EN

Unix & Linux用户
提问于 2019-04-27 23:15:36
回答 1查看 429关注 0票数 1

当我插入我的Yubikey时,它显示,

代码语言:javascript
复制
usb 1-1: new full-speed USB device number 46 using xhci_hcd
usb 1-1: New USB device found, idVendor=1050, idProduct=0407, bcdDevice= 5.12
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: YubiKey OTP+FIDO+CCID
usb 1-1: Manufacturer: Yubico
input: Yubico YubiKey OTP+FIDO+CCID as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1050:0407.006A/input/input93
hid-generic 0003:1050:0407.006A: input,hidraw0: USB HID v1.10 Keyboard [Yubico YubiKey OTP+FIDO+CCID] on usb-0000:00:14.0-1/input0
hid-generic 0003:1050:0407.006B: hiddev0,hidraw1: USB HID v1.10 Device [Yubico YubiKey OTP+FIDO+CCID] on usb-0000:00:14.0-1/input1

为什么Yubikey有三个输入设备?

代码语言:javascript
复制
/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1050:0407.006A/input/input93
usb-0000:00:14.0-1/input0
usb-0000:00:14.0-1/input1

hid-genericinput有什么区别?hidraw是如何发挥作用的呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-04-28 06:04:54

部分答复:

input内核层是对所有可能的输入设备的抽象,通过所有可能的传输技术。PS/2键盘、串行鼠标、USB键盘、USB摄像头按钮等最终都以输入设备的形式出现。这些设备上的事件可以通过/dev/input/event*获得,您可以使用evtest来显示它们。图层(如X通过evdev或Wayland通过libinput),然后获取这些事件并将它们提供给(图形应用程序)。

在层次结构的另一端,大多数这些设备还具有与特定传输相关联的设备文件。一个重要的类是HID (= ),这些设备(通常是USB)为设备的功能配备了一个标准化描述符("HID描述符“)。因此,设备本身告诉内核,如果它是键盘、鼠标、操纵杆等;它生成哪些键或运动事件,在某种程度上如何配置它,等等。

HID设备也总是得到一个/dev/hidraw*文件,在这里人们可以读取原始的HID事件(如果需要的话)。通常,如果内核能够理解HID描述符,则这些事件由内核处理,然后作为输入层事件使用。

因此,您需要阅读syslog条目如下:

代码语言:javascript
复制
input: Yubico YubiKey OTP+FIDO+CCID as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:1050:0407.006A/input/input93
hid-generic 0003:1050:0407.006A: input,hidraw0: USB HID v1.10 Keyboard [Yubico YubiKey OTP+FIDO+CCID] on usb-0000:00:14.0-1/input0

“有一个USB类键盘接口。内核理解这个类,它将得到一个hidraw0设备文件和一个/dev/input/eventX (可能是X=93)设备文件。hid-generic内核模块检测到这一点,并称为input内核层。”

代码语言:javascript
复制
hid-generic 0003:1050:0407.006B: hiddev0,hidraw1: USB HID v1.10 Device [Yubico YubiKey OTP+FIDO+CCID] on usb-0000:00:14.0-1/input

“有一个带有内核无法理解的类的USB接口。由于它不能被转发到输入层,它将得到一个用于一般HID事件的hiddev0设备文件,它还将得到一个用于原始HID事件的hidraw1设备文件。hid-generic模块检测到了这一点。”

因此,根据您的计数方式,您没有三个,而是两个HID接口,每个接口有两个相关联的设备文件,总共有四个设备文件,其中只有输入层设备文件是自动使用的。

至于Yubikey为什么这样做,只有Yubikey知道。一种合理的猜测是,它们提供了一个通用接口,可以被任何操作系统(键盘HID)接收到,一个接口用于Yubikey的特殊配置,这只能被特定于Yubikey的软件理解。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/515932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档