![단일 Yubico가 여러 장치로 나타나는 이유는 무엇이며, hid-generic과 입력의 차이점은 무엇입니까?](https://linux55.com/image/152592/%EB%8B%A8%EC%9D%BC%20Yubico%EA%B0%80%20%EC%97%AC%EB%9F%AC%20%EC%9E%A5%EC%B9%98%EB%A1%9C%20%EB%82%98%ED%83%80%EB%82%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0%2C%20hid-generic%EA%B3%BC%20%EC%9E%85%EB%A0%A5%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Yubikey를 연결하면 다음과 같이 표시됩니다.
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에 입력 장치가 3개 있는 이유는 무엇입니까?
/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-generic
이들그리고 그리고 의 차이점은 무엇인가요 input
? 어떻게 작동하나요 hidraw
?
답변1
부분 답변:
커널 input
계층은 가능한 모든 전송 기술을 통해 가능한 모든 입력 장치를 추상화한 것입니다. PS/2 키보드, 직렬 마우스, USB 키보드, USB 카메라 버튼 등이 모두 입력 장치로 나타납니다. 이러한 장치의 이벤트는 를 통해 사용할 수 /dev/input/event*
있으며 evtest
를 사용하여 표시할 수 있습니다. 그 위에 레이어를 추가한 다음(예: X를 통해 evdev
또는 Wayland를 통해 libinput
) 해당 이벤트를 선택하여 (그래픽 응용 프로그램에서) 사용할 수 있도록 합니다.
계층 구조의 반대편에는 대부분의 장치에도 특정 전송과 연결된 장치 파일이 있습니다. 중요한 범주는 장치 기능에 대한 표준화된 설명자("HID 설명자")가 있는 장치(일반적으로 USB)인 HID(= 휴먼 인터페이스 장치)입니다. 따라서 장치 자체는 자신이 생성하는 키 또는 움직임 이벤트, 구성 방법 등을 커널에 알려줍니다.
또한 HID 장치는 항상 /dev/hidraw*
원시 HID 이벤트를 읽을 수 있는 파일을 얻습니다(필요한 경우). 일반적으로 커널이 HID 설명자를 이해하는 경우 이러한 이벤트는 커널에 의해 처리된 다음 입력 계층 이벤트로 제공됩니다.
따라서 다음과 같이 시스템 로그 항목을 읽어야 합니다.
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
hidraw0
"키보드와 같은 USB HID 인터페이스가 있습니다. 커널은 이 클래스를 이해하고 장치 파일과 /dev/input/eventX
(아마 X=93) 장치 파일을 얻습니다 . hid-generic
커널 모듈은 이를 감지하고 input
커널 계층을 호출합니다."
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 인터페이스가 있습니다. 입력 계층으로 전달할 수 없기 때문에 일반 HID 이벤트에 대한 장치 파일을 가져오고 원시 장치 파일 HID 이벤트 hiddev0
도 가져옵니다 . "hidraw1
hid-generic
따라서 계산 방법에 따라 3개가 아닌 2개의 HID 인터페이스가 있고 각 인터페이스에는 2개의 관련 장치 파일이 있으므로 총 4개의 장치 파일이 있으며 그 중 입력 계층 장치 파일만 자동으로 사용됩니다.
에 관해서는왜Yubikey가 이 일을 한다는 것은 Yubikey만이 알고 있습니다. 합리적인 추측은 모든 운영 체제(키보드 HID)에서 선택할 수 있는 일반 인터페이스와 Yubikey 특정 소프트웨어에서만 이해할 수 있는 Yubikey 특정 구성을 위한 인터페이스를 제공한다는 것입니다.