USB 휴먼 인터페이스 디바이스 클래스

USB human interface device class

컴퓨팅에서 USB 휴먼 인터페이스 디바이스 클래스(USB HID 클래스)는 컴퓨터 주변기기용 USB 사양의 일부로 키보드, 마우스, 게임 컨트롤러 및 영숫자 디스플레이 디바이스같은 휴먼 인터페이스 디바이스의 디바이스 클래스(컴퓨터 하드웨어의 일종)를 지정합니다.

USB HID 클래스는 USB Implementers Forum의 Device Working Group에서 제공하는 여러 문서에 정의되어 있습니다.USB HID 클래스를 설명하는 데 사용되는 주요 문서는 HID 1.11용 장치 클래스 정의입니다.[1]

장치들

USB HID 클래스는 거의 모든 최신 컴퓨터에 사용되는 장치를 나타냅니다.USB HID 클래스에는 많은 사전 정의된 함수가 있습니다.이러한 기능을 통해 하드웨어 제조업체는 USB HID 클래스 사양에 맞게 제품을 설계할 수 있으며, 이러한 사양에 부합하는 소프트웨어에서도 사용할 수 있습니다.

동일한 HID 프로토콜이 Bluetooth 휴먼 인터페이스 [2]장치에서도 변경되지 않고 사용됩니다.Bluetooth 프로파일 사양에서는, USB HID 메뉴얼을 참조하고 있을 뿐입니다.그런 의미에서 이러한 장치도 USB HID 클래스에 속합니다.

키보드

키보드는 USB HID 클래스의 일반적인 장치입니다.USB HID 클래스 키보드는 일반적으로 컴퓨터에 키 입력을 전달하는 IN 끝점과 컴퓨터에서 키보드로 키보드의 LED 상태를 전달하는 OUT 끝점으로 설계되었습니다.PC 97 규격에서는 컴퓨터의 BIOS가 부팅 프로세스 중에 사용하도록 설계된 USB HID 클래스 키보드를 인식하여 작동해야 합니다.

일부 키보드는 USB HID(Human Interface Devices) v1.11에 지정된 USB 부팅 키보드 프로파일을 구현하고 부팅 프로토콜을 사용하도록 명시적으로 구성되어 있습니다.이러한 롤오버는 6키 롤오버(6KRO)로 제한됩니다.USB 컨트롤러가 이 동작을 덮어쓰지 않는 한 키보드가 폴링될 때마다(6KRO) CPU가 중단됩니다.이 프로파일은, USB 대응의 operating system이 없는 경우, BIOS 로 USB 키보드를 처리할 수 있도록 하는 것을 목적으로 하고 있습니다.이 사양에서 부트 모드가 아닌 키보드의 권장 프로파일은 키보드가 6KRO로 제한되며, U.S.의 경우를 제외하고 타이프틱(키를 길게 눌렀을 때 스캔 코드를 반복)을 구현하기 위해 키보드가 적어도 0.5초마다 상태 보고서와 함께 인터럽트에 응답하도록 합니다.SB 컨트롤러는 키보드에 이 작업을 수행하지 않도록 프로그래밍되어 있습니다.다만, 비부트 모드의 키보드는, 대체 HID 프로파일을 [1]실장할 수 있습니다.

위의 동작은 PS/2(PlayStation 2와 혼동하지 말 것) 인터페이스와 대조됩니다.PS/2 인터페이스는 PS/2를 지원할 수 있는 키보드로 NKRO(N-Key Rollover)를 지원합니다.PS/2 인터페이스는, 스테이터스의 변경이 없는 경우에서도, 타이프틱을 액티브하게 하기 위해서 키를 길게 유지하는 경우를 제외하고, CPU 를 전혀 중단하지 않습니다.반복적인 폴링에 응답할 필요가 없기 때문에, PS/2 인터페이스는 노트북의 내장 키보드에 많이 사용됩니다.

마우스

컴퓨터 마우스는 또 하나의 일반적인 USB HID 클래스 디바이스입니다.USB HID 마우스는 단일 버튼의 단순한 디바이스에서 다중 버튼 복합 디바이스까지 다양합니다.대부분의 최신 운영 체제에는 표준 HID 마우스 설계용 드라이버가 포함되어 있습니다(가장 일반적인 최신 마우스 설계에는 2개의 전용 버튼과 3번째 버튼 역할을 하는 마우스 휠이 있습니다). 기능이 확장된 마우스에는 제조원의 커스텀 드라이버가 필요합니다.

표준 USB 마우스는 보통 125Hz의 기본 속도로 폴링되지만 표준 PS/2 마우스는 컴퓨터에 [3][4]데이터를 전송할 때 100Hz의 기본 속도로 인터럽트를 보내기 때문에 USB 마우스는 PS/2 마우스보다 지연 시간이 짧습니다.또한 USB HID 사양의 마우스 디바이스 [1]기본 프로파일에 따라 상태 변경이 보고되지 않은 경우 USB 마우스는 시스템을 중단시키지 않습니다.PS/2와 USB 모두 샘플 레이트를 오버라이드 할 수 있습니다.USB 마우스가 최대 속도 또는 그 이상의 USB 속도로 동작하는 한 PS/2는 최대 200Hz의[5] 샘플링 레이트를, USB는 최대 1kHz의[3] 폴링 레이트를 지원합니다.

PS/2 마우스 인터페이스는 정기적인 폴링이 필요 없는 인터럽트 주도의 특성을 갖추고 있기 때문에 PS/2 인터페이스는 전력을 절약하기 때문에 노트북에 내장된 포인팅 디바이스로 널리 이용되고 있습니다.

게임 컨트롤러

최신 게임 컨트롤러와 조이스틱은 종종 USB HID 클래스 장치입니다.레거시 게임 포트 장치와 달리 USB HID 클래스 게임 장치는 일반적으로 전용 드라이버가 필요하지 않습니다.거의 모든 게임 기기는 드라이버와 USB HID 클래스 사양에 따라 설계되어 있는 한 온보드 드라이버를 사용하여 작동합니다.

기타 디바이스

USB HID 클래스 사양은 USB HID 클래스 아래에 있는 무수한 다른 디바이스를 허용합니다.예를 들어 자동차 시뮬레이션 제어기, 운동 기계, 전화 장치, 온도계, 오디오 제어기 및 의료 계기가 있다.무정전 전원장치소프트웨어 보호동글조차[6] 휴먼 인터페이스가 전혀 없는 경우가 많지만 이 클래스에 속한다고 선언합니다.디자이너가 USB HID 클래스의 논리 사양을 충족하는 한 모든 장치가 USB HID 클래스 장치가 될 수 있습니다.이것은, 이러한 디바이스의 드라이버를 출하할 필요가 없고, operating system이 디바이스를 곧바로 인식하는 것은 아닙니다.이는 디바이스가 휴먼 인터페이스 디바이스 클래스에서 자신을 선언할 수 있음을 의미합니다.

보안 취약성

USB 인터페이스는 Bad 의 보안 공격에 취약합니다.USB는 다양한 종류의 디바이스를 연결할 수 있는 기능, 디바이스가 실제 디바이스임을 확인할 수 없는 기능, USB 디바이스가 접속되어 있는 동안 유형을 변경하거나 추가 서브 디바이스를 알릴 수 있는 기능, USB 디바이스에 접속하는 모든 디바이스를 받아들이는 기본 동작의 조합을 악용합니다.부분적인 대응책으로 PS/2 주변기기를 대신 사용하여 모든 USB [7]포트를 비활성화할 수 있습니다.

드라이버

USB HID 클래스와 같은 명확한 사양의 장점 중 하나는 대부분의 최신 운영 체제에서 사용할 수 있는 장치 드라이버가 풍부하다는 것입니다.USB HID 클래스 디바이스와 그 기본 기능은 특정 소프트웨어를 염두에 두지 않고 USB-IF 설명서에 정의되어 있습니다.이러한 일반적인 설명 때문에 운영체제 설계자는 키보드, 마우스 및 기타 범용 휴먼 인터페이스 장치 등의 장치용 드라이버를 쉽게 포함할 수 있습니다.이러한 범용 드라이버가 포함되어 있기 때문에, 디바이스의 신속한 도입과 최종 유저의 인스톨이 용이하게 됩니다.

논리 사양

기능적 특성

USB 휴먼 인터페이스 디바이스 클래스는 디바이스 클래스와 인터페이스 클래스를 모두 설명하는 데 사용할 수 있습니다.인터페이스 클래스는, USB 디바이스에 복수의 기능을 포함할 수 있는 경우에 사용됩니다.따라서 동시에 2개의 다른 인터페이스를 가진 USB 디바이스를 사용할 수 있습니다(예를 들어 USB 전화는 HID 클래스로 커버되는 키패드와 USB 통신 디바이스 클래스로 커버되는 스피커를 사용할 수 있습니다).

인터페이스 디바이스도 서브 클래스 기술자로 정의됩니다.서브클래스 디스크립터는 디바이스가 부트 가능함을 선언하기 위해 사용됩니다.부팅 디바이스는 기본 프로토콜에 대한 최소한의 준수를 충족하며 컴퓨터의 BIOS에 의해 인식됩니다.

각 USB HID 인터페이스는 제어 파이프 또는 인터럽트 파이프를 사용하여 호스트와 통신합니다.등시성 파이프와 벌크 파이프는 HID 클래스 디바이스에서는 사용되지 않습니다.열거에는 IN 및 OUT 제어 전송이 모두 필요합니다.HID 보고서에는 IN 인터럽트 전송만 필요합니다.OUT 인터럽트 전송은 HID 클래스 디바이스에서는 옵션입니다.

리포트

USB HID 클래스는 현재 및 미래의 모든 휴먼 인터페이스 디바이스를 정확하게 예측하고 정의하기 위해 모든 디바이스가 호스트 디바이스와 통신하는 방법을 기술해야 합니다.열거 시 디바이스는 호스트 디바이스가 이 정보를 수신하기 위해 적절하게 준비할 수 있도록 보고서가 어떻게 구성되는지 설명합니다.

호스트는 작업 중에 디바이스의 인터럽트 IN 끝점을 정기적으로 폴링합니다.디바이스에 송신할 데이터가 있는 경우는, 리포트를 형성해, 폴 토큰에 대한 응답으로서 송신합니다.키보드나 마우스 등의 일반적인 장치는 USB-IF([8]Implementers Forum)에서 설정한 표준을 준수하는 보고서를 보냅니다.벤더가 커스텀 USB HID 클래스 디바이스를 만드는 경우, 디바이스에 의해서 작성된 리포트는, 열거시에 주어진 리포트 설명과 호스트 시스템에 인스톨 된 드라이버와 일치할 필요가 있습니다.이렇게 하면 USB HID 클래스가 매우 유연해질 수 있습니다.

USB HID API

USB HID와 관련된 API에는 USB 레벨과 운영체제 레벨의 두 가지 레벨이 있습니다.USB 레벨에서는, 디바이스의 기능을 통지하는 프로토콜과 취득한 데이터를 해석하는 operating system이 있습니다.그 후 운영체제는 개별 디바이스 지원이 아닌 디바이스 클래스에 대한 지원을 포함할 필요가 없는 애플리케이션을 보다 높은 수준의 뷰로 제공합니다.추상화 레이어를 사용하면 게임 후에 생성된 컨트롤러 등 모든 USB 컨트롤러에서 게임을 실행할 수 있습니다.

「 」를 참조해 주세요.

  • USB 온더고(OTG)

레퍼런스

  1. ^ a b c "Device Class Definition for HID 1.11" (PDF).
  2. ^ "HID Spec v1_0.zip". Retrieved 2013-01-22.
  3. ^ a b "Mouse Optimization Guide: Acceleration Fix and Polling Rate". eu.cybergamer.com. 2007-04-09. Retrieved 2014-07-09.
  4. ^ "LCOM 2012/2013: Lab5". web.fe.up.pt. Retrieved 2014-07-09.
  5. ^ Adam Chapweske. "PS/2 Mouse Interfacing". computer-engineering.org. Retrieved 2014-07-09.
  6. ^ "USB Dongle is driverless, HID device., SecuTech Solution Inc". News.thomasnet.com. Retrieved 2014-01-18.
  7. ^ "Massive, undetectable security flaw found in USB: It's time to get your PS/2 keyboard out of the cupboard". ExtremeTech. Retrieved 26 October 2015.
  8. ^ "Microsoft Related HID Documentation". USB.org. Retrieved 2013-01-22.

외부 링크

  • USB.org: USB Implementers Forum, Inc. 홈페이지
  • USB(Nutshell)
  • USB-IF HID 툴: 휴먼 인터페이스 디바이스 전용의 USB-IF 페이지.승인된 매뉴얼이 모두 포함되어 있습니다.
  • Lakeview Research HID Page: USB HID 디바이스에 대한 기사 및 예시 코드 모음.
  • PC 시스템 가이드:Microsoft PC 시스템 사양 (예: PC '97, PC '98)