Открыть сервис

USB HID

USB HID (Human Interface Device, устройство человеческого интерфейса) — это класс устройств, подключаемых по шине USB, предназначенных для взаимодействия человека с компьютером или другим электронным устройством. Спецификация HID определяет протокол обмена данными, формат дескрипторов и набор стандартных отчётов (reports), которые позволяют операционной системе автоматически распознавать и использовать такие устройства без установки дополнительных драйверов. Класс HID охватывает широкий спектр устройств: клавиатуры, мыши, джойстики, графические планшеты, сенсорные экраны, сканеры штрихкодов, а также специализированные устройства, такие как пульты дистанционного управления, тренажёры и медицинские приборы.

История

Разработка спецификации USB HID началась в середине 1990-х годов в рамках создания универсальной последовательной шины (USB). Первая версия спецификации HID (версия 1.0) была опубликована в 1996 году вместе с USB 1.0. Основной целью было упрощение подключения периферийных устройств: вместо множества проприетарных интерфейсов (PS/2, последовательный порт, игровой порт) предлагался единый стандарт, который позволял операционной системе автоматически определять тип устройства и загружать соответствующий драйвер.

Ключевым нововведением стала концепция дескрипторов отчётов (HID Report Descriptor). Вместо того чтобы жёстко задавать формат данных для каждого типа устройства, спецификация позволила устройству самостоятельно описывать структуру своих данных (например, количество осей, кнопок, диапазоны значений). Это сделало класс HID гибким и расширяемым.

С выходом USB 2.0 в 2000 году и USB 3.0 в 2008 году протокол HID оставался обратно совместимым, но получил поддержку более высоких скоростей передачи данных (до 480 Мбит/с для USB 2.0 и до 5 Гбит/с для USB 3.0), что позволило использовать его для устройств с высокими требованиями к частоте опроса (например, игровых мышей с частотой 1000 Гц).

Архитектура и протокол

Уровни взаимодействия

Взаимодействие между HID-устройством и хостом (компьютером) строится на трёх уровнях:

  1. Физический уровень — шина USB (кабель, разъёмы, электрические сигналы).
  2. Уровень протокола USB — управление передачей данных через эндпоинты (endpoints). HID-устройства используют прерывающие (interrupt) передачи для отправки данных с низкой задержкой.
  3. Уровень HID — формат и интерпретация данных, описываемых дескриптором отчёта.

Дескриптор отчёта (HID Report Descriptor)

Дескриптор отчёта — это бинарный массив данных, который устройство передаёт хосту при подключении. Он описывает:

  • Тип данных (кнопка, ось, шкала, массив и т.д.).
  • Логические и физические диапазоны (например, от 0 до 255).
  • Количество элементов (например, 104 кнопки для клавиатуры).
  • Связь с физическими элементами (например, какая кнопка соответствует клавише «Enter»).

Операционная система (через HID-драйвер) считывает этот дескриптор и создаёт виртуальные устройства (например, клавиатуру, мышь, джойстик), с которыми могут работать приложения.

Отчёты (Reports)

Данные между устройством и хостом передаются в виде отчётов. Существует три типа отчётов:

  • Input Report — данные от устройства к хосту (например, нажатие клавиши).
  • Output Report — данные от хоста к устройству (например, включение светодиода на клавиатуре).
  • Feature Report — данные для настройки устройства (например, калибровка сенсора).

Каждый отчёт имеет фиксированную длину, заданную в дескрипторе. Стандартный размер отчёта для большинства HID-устройств — 8 байт, но спецификация допускает любые размеры.

Классификация устройств HID

По типу взаимодействия

  1. Устройства ввода (input devices) — передают данные от человека к компьютеру. Примеры: клавиатура, мышь, джойстик, сенсорный экран.
  2. Устройства вывода (output devices) — получают данные от компьютера для отображения или тактильной обратной связи. Примеры: светодиодные индикаторы, вибромоторы.
  3. Комбинированные устройства — сочетают ввод и вывод. Примеры: игровые рули с обратной связью (force feedback), клавиатуры с подсветкой.

По стандартным применениям (Usage Pages)

Спецификация HID определяет набор стандартных страниц использования (Usage Pages), которые описывают функциональное назначение элементов устройства. Наиболее распространённые:

  • Generic Desktop Controls (0x01) — мышь, клавиатура, джойстик, кнопки, оси.
  • Simulation Controls (0x02) — руль, педали, рычаги.
  • VR Controls (0x03) — устройства виртуальной реальности.
  • Sport Controls (0x04) — спортивные тренажёры.
  • Game Controls (0x05) — игровые контроллеры.
  • Keyboard/Keypad (0x07) — клавиатурные коды.
  • LED (0x08) — светодиодные индикаторы.
  • Button (0x09) — кнопки.
  • Consumer (0x0C) — потребительские устройства (пульты ДУ, мультимедийные клавиши).

Применение

Персональные компьютеры

HID является основным интерфейсом для подключения клавиатур и мышей. Благодаря стандартизации, любое HID-совместимое устройство работает на всех современных операционных системах (Windows, macOS, Linux) без установки драйверов. Игровые мыши и клавиатуры часто используют HID для передачи дополнительных данных (например, макросов, настроек подсветки), что требует написания специализированных драйверов или использования HID-репортов.

Мобильные устройства

Смартфоны и планшеты на Android и iOS поддерживают HID-устройства через USB On-The-Go (OTG) или Bluetooth. Это позволяет подключать внешние клавиатуры, мыши, геймпады.

Промышленность и медицина

В промышленности HID используется для подключения сканеров штрихкодов, считывателей RFID-меток, терминалов сбора данных. В медицине — для подключения джойстиков управления роботизированными хирургическими системами, пультов управления медицинским оборудованием.

Игровая индустрия

Игровые контроллеры (геймпады, рули, джойстики) используют HID для передачи данных о нажатиях кнопок и положении осей. Спецификация HID поддерживает force feedback (обратную тактильную связь) через Output Reports.

Особенности и ограничения

Задержка (Latency)

HID-устройства используют прерывающие передачи, которые гарантируют низкую задержку (обычно менее 1 мс). Однако частота опроса (polling rate) ограничена: для USB 1.1 — до 125 Гц, для USB 2.0 — до 1000 Гц, для USB 3.0 — до 4000 Гц. Для большинства приложений этого достаточно, но для профессиональных игр и научных измерений могут требоваться более высокие частоты.

Безопасность

HID-устройства могут быть использованы для атак на компьютер (например, клавиатурные снифферы или устройства, эмулирующие ввод с клавиатуры). Для защиты используются криптографические методы (например, подпись дескрипторов) и аппаратные токены.

Совместимость

Хотя HID является стандартом, некоторые производители создают проприетарные расширения (например, для игровых мышей с дополнительными кнопками). Для использования таких функций требуется установка драйвера от производителя.

Примеры устройств

  • Клавиатура — стандартное HID-устройство, передающее коды нажатых клавиш (Usage Page 0x07).
  • Мышь — передаёт относительные или абсолютные координаты, а также состояние кнопок (Usage Page 0x01).
  • Геймпад — передаёт данные о нажатиях кнопок, положении аналоговых стиков и триггеров (Usage Page 0x05).
  • Сканер штрихкодов — эмулирует ввод с клавиатуры, передавая отсканированный код как последовательность нажатий клавиш.
  • Графический планшет — передаёт абсолютные координаты пера и давление (Usage Page 0x01, 0x0D).

См. также

  • USB
  • HID (Human Interface Device) — общее понятие
  • Bluetooth HID
  • I²C HID

Источники

  • Universal Serial Bus (USB) HID Specification, Version 1.11, USB Implementers Forum, 2001.
  • Universal Serial Bus (USB) Device Class Definition for Human Interface Devices (HID), Version 1.0, 1996.
  • USB Implementers Forum. «HID Usage Tables», Version 1.12, 2004.
  • Tanenbaum, A. S. «Computer Networks», 5th ed., Pearson, 2010 (глава о USB).
  • Документация Linux Kernel: drivers/hid/.
  • Microsoft Windows Hardware Developer Center: «Human Interface Devices (HID)».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →