Устройства hid: USB Human Interface Device

Содержание

Что такое HID-устройства?

Подробности
Опубликовано 05.07.2012 21:01

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

HID (Human Interface Device) – устройство, подключаемое к вычислительной технике для участия в работе человека. Говоря проще, HID – устройство ввода информации. Необходимы устройства ввода для непосредственного участия человека в работе компьютера: введение исходных данных для вычислений, выбор параметров действия, редактирование имеющихся данных и результатов и т.д.

Типы HID-устройств.

Устройства ввода различаются по типу вводимой информации.

Текстовая информация:

Клавиатуры — используются для управления техническими и механическими устройствами (компьютер, калькулятор, кнопочный телефон).

Каждой клавише соответствует один или несколько определённых символов. Возможно увеличить количество действий, выполняемых с клавиатуры, с помощью сочетаний клавиш. В клавиатурах такого типа клавиши сопровождаются наклейками с изображением символов или действий, соответствующих нажатию.

Звуковая информация:

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

 

Графическая информация:

Сканер — устройство для считывания плоского изображения и представления его в растровой электронной форме.

Цифровая камера — камера, использующая массив полупроводниковых светочувствительных элементов (матрицу), на которую изображение фокусируется с помощью системы линз объектива. Полученное изображение сохраняется в электронном виде в памяти самого фотоаппарата или же дополнительном цифровом носителе.

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

Плата захвата (тюнер) — электронное для преобразования аналогового видеосигнала в цифровой видеопоток. Используется для захвата телесигнала, сигнала с камер видеонаблюдения и др.

HID-устройства управления различаются по функционалу. 

Относительное позиционирование (обрабатывают информацию о перемещении):

Мышь — манипулятор, преобразующий механические движения в движение курсора на экране. Различают механические, оптические, гироскопические, сенсорные мыши.

Трекбол — манипулятор, чей принцип работы сходен с шариковой механической мышью. Аналогично мыши по принципу действия и по функциям. Пользователь управляет с помощью ладони или пальцев непосредственно шариком, закрепленным на специальном держателе с датчиками.

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

Тачпад – сенсорная панель, применяемая, в основном, в портативных компьютерах. В отличие от трекпоинта, считывающего давление пальца, тачпад считывает емкостные характеристики при соприкосновении пальца и емкостных датчиков. Поэтому управление тачпадом с помощью непроводящих предметов (ручка, карандаш,стилус) достаточно проблематично.

Джойстик — устройство ввода информации, которое представляет собой качающуюся в двух плоскостях ручку, боковое давление которой считывается датчиками в основании устройства. Используется как игровой гаджет, а так же как средство управления (например, управление роботизированной техникой на производстве).

 

Абсолютное позиционирование (высчитывают абсолютные координаты на плоскости, в качестве которой выступает устройство):

Графический планшет — это устройство для ввода графики (отдельных линий и рисунков) от руки непосредственно в компьютер.

Состоит из пера и плоского планшета, чувствительного к нажатию пера.

Тачскрин (сенсорный экран) — устройство ввода информации, представляющее собой экран, реагирующий на прикосновения к нему (используется в современных смартфонах, платежных и информационных терминалах).

Отдельно хочется выделить специальные HID-устройства для компьютерных игр:

Игровые мыши – отличаются от обычных компьютерных мышей высокой чувствительностью, настраиваемым весом, большим количеством программируемых кнопок.

Кейпады – специальные игровые клавиатуры-приставки, в которых кнопки скомбинированы для максимального удобства игрока (в современные модели встраивается мини-джойстик).

Руль и педали – манипуляторы для жанра рэйсинг (автогонки).

Джойстик – используется для жанра авиасимуляторов.

Геймпады – специальные игровые манипуляторы, используемые в аркадных жанрах (перешли с игровых кансолей).

Танцевальная платформа – специальные платформы с датчиками давления. Управление производится с помощью ног. Используется для игр жанра «танцевальные аркады».

Музыкальные инструменты (гитары, барабаны) – специальные манипуляторы в форме музыкальных инструментов с кнопками и датчиками давления. Используется для игр жанра «музыкальные аркады».

Общие сведения об устройствах с HID-интерфейсом — Windows drivers

  • Статья
  • Чтение занимает 2 мин
Были ли сведения на этой странице полезными?

Оцените свои впечатления

Да Нет

Хотите оставить дополнительный отзыв?

Отзывы будут отправляться в корпорацию Майкрософт. Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.

Отправить

В этой статье

Устройства с HID-интерфейсом — это определение класса устройств, которое заменяет соединители PS/2 универсальными драйверами USB для поддержки устройств HID, таких как клавиатуры, мыши, игровые устройства и т. д. До HID устройства могли использовать только строго определенные протоколы для мышей и клавиатуры. Для внедрения оборудования требуется либо перегрузить данные в существующий протокол, либо создать нестандартное оборудование с собственным специализированным драйвером. HID обеспечивает поддержку этих устройств «режима загрузки», добавляя поддержку инновационных инноваций с помощью расширяемых, стандартизированных и легко программируемых интерфейсов.

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

HID-подключение была создана с помощью USB, но оно не зависит от шины. Она была разработана для низкой задержки, низкой пропускной способности устройств, но с гибкостью для указания частоты в базовом транспорте. Спецификация HID по USB была ратифицирована USB-, если 1996 и поддерживает дополнительные транспорты, а затем вскоре после. Подробные сведения о поддерживаемых в настоящее время транспортах можно найти в переWindowsх HID. Кроме того, с помощью настраиваемых драйверов транспорта можно использовать транспорты сторонних поставщиков.

Основные понятия HID

В состав HID входят два фундаментальных понятия: дескриптор отчета и отчеты. Отчеты — это фактические данные, которыми обмениваются устройство и клиент программного обеспечения. Дескриптор отчета описывает формат и значение данных, которые поддерживает устройство.

Отчеты

Приложения и HID-устройства обмениваются данными через отчеты. Существует три типа отчетов: входные отчеты, отчеты о выходных данных и отчеты о функциях.

Тип отчета Описание
Входной отчет Данные, отправляемые с устройства HID в приложение, как правило, при изменении состояния элемента управления.
Выходной отчет Данные, передаваемые из приложения на устройство HID, например индикаторы на клавиатуре.
Отчет о функциях Данные, которые могут быть прочитаны и/или записаны вручную и обычно связаны с информацией о конфигурации.

Каждая коллекция верхнего уровня, определенная в дескрипторе отчета, может содержать ноль (0) или более отчетов каждого типа.

Таблицы использования

Рабочая группа USB-IF публикует таблицы использования HID, которые являются частью дескрипторов отчетов, описывающих, что разрешено выполнять HID-устройства. Эти таблицы использования HID содержат список с описаниями использования, описывающими целевое значение и использование определенного элемента, описанного в дескрипторе отчета. Например, для левой кнопки мыши определено использование. Дескриптор отчета может определять, где в отчете приложение может найти текущее состояние левой кнопки мыши. Таблицы использования разбиваются на несколько пространств имен, которые называются страницами использования. На каждой странице использования описывается набор взаимосвязанных применений, помогающих организовать документ. Сочетание страницы использования и использования определяет идентификатор использования, который однозначно определяет конкретное использование в таблицах использования.

См. также

Спецификации USB — в спецификациях HID.

Изучение USB с нуля (19, USB-интерфейс HID-устройство (1) _HID-дескриптор)

Большая категория USB-устройств — это HID-устройства, а именно устройства человеко-машинного интерфейса. К таким устройствам относятся мыши, клавиатуры и т. Д., Которые в основном используются для взаимодействия между людьми и компьютерами. Это самый ранний класс устройств, поддерживаемый протоколом USB. HID-устройства могут использоваться как низкоскоростные, полноскоростные и высокоскоростные. Поскольку оборудование HID требует своевременного ответа от пользователя, его метод передачи обычно использует режим прерывания.
В протоколе USB определение устройства HID помещается в дескриптор интерфейса, а дескриптор устройства и дескриптор конфигурации USB не содержат информацию об устройстве HID. Поэтому для некоторых конкретных устройств HID можно определить несколько интерфейсов, и только один из интерфейсов является классом устройства HID.
 

1. Краткое описание HID оборудования.

1.1 Особенности HID оборудования

  • Обмениваемые данные хранятся в структуре, называемой Отчет, а микропрограммное обеспечение устройства должно поддерживать формат отчета HLD. Хост передает и принимает данные, контролируя и прерывая передачу при передаче и запрашивая отчеты. Формат отчета очень гибкий.
  • Каждая транзакция может содержать небольшой или средний объем данных. Максимальный размер транзакции для низкоскоростных устройств составляет 8 Байт, максимальный размер транзакции для полноскоростных устройств — 64 Байт, а максимальный размер транзакции для высокоскоростных устройств — 1024 Байт. В отчете можно использовать несколько транзакций.
  • Устройство может отправлять информацию на хост в неожиданное время, например, о клавишах клавиатуры или движениях мыши. Таким образом, хост будет регулярно опрашивать устройство, чтобы получать самые свежие данные.
  • Максимальная скорость передачи HID-устройств ограничена. Хост может гарантировать конечную точку низкоскоростного прерывания не более 1 транзакции каждые 10 мс и не более 800 Байт в секунду. Гарантируется, что конечная точка, работающая на полной скорости, будет иметь одну транзакцию на один lms, а максимальная скорость в секунду составляет 64000 Байт. Гарантируется, что высокоскоростные конечные точки имеют три транзакции на 125 мкс, а каждая секунда составляет не более 24,576 МБ.
  • У HID-устройств нет гарантированной скорости передачи. Если устройство настроено на временной интервал 10 мс, время между транзакциями может быть равно или меньше 10 мс. Если устройство не настроено на передачу данных в каждом кадре на полной скорости или передачу данных в каждом микрофрейме на высокой скорости. Это самая высокая частота опроса, поэтому конечная точка может гарантировать доступность правильной полосы пропускания.

Помимо передачи данных на хост, устройство HID также принимает данные от хоста. Любое устройство, которое может соответствовать спецификации категории HID, может быть устройством HID.

Помимо интерфейса HID, устройство может также содержать другие интерфейсы USB. Например, устройство отображения видео может использовать интерфейс HID для программного управления яркостью и контрастностью и использовать традиционный видеоинтерфейс для передачи данных, которые должны отображаться. Громкоговоритель USB может использовать передачу в реальном времени для воспроизведения голоса, а интерфейс HID — для управления громкостью, басами и т. Д.

Спецификационные документы для оборудования HID в основном следующие два:
Device Class Definition for Human interface Devices
HID Usage Tables
Первый является файлом базовой спецификации HID, а второй может быть приложением к первому, чтобы предоставить разработчикам описание фактического типа элемента управления. Файл используется для определения значения для хоста, чтобы понимать и использовать данные HID. Эти два документа были разработаны Рабочей группой по USB-устройствам и могут быть загружены с официального сайта ниже:

https://www.usb.org/documents?search=&items_per_page=50&page=2

https://www.usb.org/hid

1.2 Требования к оборудованию HID устройства

Интерфейс HID должен соответствовать требованиям класса HID, определенного в спецификации класса устройств для устройств интерфейса пользователя. Необходимые дескрипторы, частота передачи и тип передачи описаны в этом файле. Чтобы соответствовать спецификации, конечные точки и дескрипторы интерфейса HID должны соответствовать нескольким требованиям. Все передачи HID используют канал управления по умолчанию или канал прерывания. Устройство HID должно иметь конечную точку входа прерывания для передачи данных на хост. Конечная точка выхода прерывания не требуется.

 

Конвейер управления используется для:

  • Получать и отвечать на запросы управления и данных класса USB.
  • Передача данных при опросе драйвером HID (с помощью Get_Reportrequest).
  • Получать данные от хоста.

 

Данные, которыми обмениваются хост и устройство, можно разделить на два типа:

  • Данные с малой задержкой должны быть доставлены в пункт назначения как можно скорее;
  • Нет строгих ограничений по времени для конфигурации или других данных.

Конвейер прерываний — это еще один способ обмена данными за пределами конвейера управления. Он особенно подходит для использования, когда принимающая сторона должна быть синхронизирована или когда данные получены вовремя, насколько это возможно. Конвейер ввода прерывания передает данные на хост, а конвейер вывода прерывания передает данные на устройство. Когда шина занята, канал управления может задерживаться, а конвейер прерывания гарантирует доступную полосу пропускания. HID не обязательно должен прерывать выходной конвейер. Если выходной конвейер не прерывается, хост будет использовать уникальный запрос Set_Report устройства HID в конвейере управления для передачи всех отчетов.

1.3 Требования к прошивке HID

Чтобы драйвер хоста мог взаимодействовать с HID-устройством, микропрограмма устройства должна соответствовать следующим требованиям:

  • Дескриптор устройства должен идентифицировать, что устройство содержит HID-интерфейс (дескриптор).
  • В дополнение к каналу управления по умолчанию, микропрограммное обеспечение должно дополнительно поддерживать канал ввода прерывания.
  • Микропрограммное обеспечение должно включать дескриптор отчета для определения данных устройства, которые должны быть переданы и получены.

Если вы хотите передавать данные, микропрограммное обеспечение должно поддерживать передачу управления Get_Report и передачу прерывания ввода. Если вы хотите получать данные, микропрограммное обеспечение должно поддерживать передачу управления Set_Report и передачу выходного сигнала выборочного прерывания.

Все данные HID должны использовать определенный формат отчета, чтобы определить размер и содержание данных в отчете. Устройство может поддерживать один или несколько отчетов. Дескриптор отчета во встроенном ПО используется для описания отчета и того, как использовать данные отчета.

Значение в каждом отчете определяет, является ли отчет входным (входным), выходным (выходным) или функциональным (Feature) отчетом. Хост получает данные во входном отчете и передает данные в выходном отчете.Отчет о характеристиках может передаваться в любом направлении.
 

 

Два, дескриптор HID устройства

2.1 Дескриптор HID устройства

Помимо поддержки 5 стандартных дескрипторов USB-устройств, устройства HID также поддерживают 3 типа дескрипторов, уникальных для устройств HID.

Этими дескрипторами являются: Стандартные дескрипторы USB: дескрипторы устройства, конфигурации, интерфейса, конечной точки и строки.
Уникальные дескрипторы HID: дескрипторы HID, отчета (Report) и объекта (Physical).
Судя по взаимосвязи дескрипторов, дескрипторы HID связаны с интерфейсами. Таким образом, если устройство HID имеет 2 конечные точки, устройству не требуется дескриптор HID для каждой конечной точки.

 

Дескриптор отчета описывает каждую часть данных, генерируемых устройством, и данные, фактически измеренные этими данными.

 

Например, дескриптор отчета определяет элементы, которые описывают положение или состояние кнопки. Информация об элементе используется для:

  • Определите, куда направляется ввод — например, отправка ввода в API мыши или джойстика.
  • Позволяет программному обеспечению назначать функции входам — ​​например, использовать входы джойстика для обнаружения резервуаров.

Путем проверки элементов (вместе именуемых дескрипторами отчетов) драйвер HID может определять размер и состав отчета с данными от устройства HID.
Набор физических дескрипторов — это необязательный дескриптор, который предоставляет информацию о части или частях человеческого тела, используемых для активации элементов управления на устройстве.


 

Правило можно увидеть из предыдущих дескрипторов USB. Первый и второй байты дескриптора — это длина и тип дескриптора соответственно. Поле типа (bDescriptorType) дескриптора указывает тип дескриптора. В следующей таблице перечислены различия Значение поля типа дескриптора.

Для устройства HID дескриптор устройства и дескриптор конфигурации не имеют специфической информации HID. Значение полей bDeviceClass и bDeviceSubClass дескриптора устройства равно 0, а значение поля bInterfaceClass дескриптора интерфейса равно 03, что указывает на то, что интерфейс устройства относится к классу HID. Другие поля, которые содержат информацию о HID в дескрипторе интерфейса, включают код подкатегории (blnterfaceSubClass) и код протокола (поле blnterfaceProtocol).
В дескрипторе интерфейса поле кода подкатегории равно 1, что означает, что это устройство поддерживает интерфейс загрузки. Если устройство имеет интерфейс загрузки, устройство можно использовать, даже если HID хоста не загружает драйвер. Такая ситуация может произойти, когда компьютер запускается непосредственно DOS, наблюдая за экраном настроек системы или используя безопасный режим Wndows во время запуска.
Клавиатура или мышь с загрузочным интерфейсом могут использовать простой протокол по умолчанию, поддерживаемый BIOS или многими хостами. Спецификация HID определяет протокол интерфейса запуска клавиатуры и мыши.
Если устройство не запускает интерфейс, а поле кода протокола в дескрипторе интерфейса 1. Указывает, что устройство поддерживает интерфейс клавиатуры., Поле кода протокола2. Он поддерживает интерфейс мыши. . Поле кода протокола в дескрипторе интерфейса0 означает, что устройство не поддерживает протокол запуска.。
определяет дескриптор загрузки (дескриптор загрузки) клавиатуры и мыши в спецификации таблиц использования HID. BIOS не нуждается в чтении дескриптора с устройства, потому что он знает протокол загрузки и предполагает, что устройство поддерживает протокол загрузки. Следовательно, запускаемое устройство не должно включать дескриптор интерфейса запуска во встроенное ПО, ему необходимо поддерживать протокол запуска только в том случае, если хост не запросил указанный протокол в дескрипторе отчета. После того, как операционная система загружает драйвер HlD, запрос Set_Protocol используется для преобразования устройства из протокола запуска в протокол отчета.
 

2.2 Дескриптор HID

Основная функция дескрипторов HID — идентифицировать дополнительные дескрипторы, используемые при обмене данными HID. В следующей таблице представлена ​​структура дескриптора HID.
 

Смещение Поле Количество байтов Числовой тип Описание
0 bLength 1 Numeric Байты дескриптора
1 bDescriptorType 1 Constant 0x21 = дескриптор HID
2 bcdHID 2 Numeric Номер версии спецификации HID (BCD)
4 bCountryCode 1 Numeric Код страны, в которой находится аппаратное устройство.
5 bNumDescriptors 1 Numeric Количество дескрипторов категорий (минимум один дескриптор отчета)
6 bDescriptorType 1 Constant Тип дескриптора категории
7 wDescriptorLength 2 Numeric Общая длина дескриптора отчета
9 [bDescriptorType]. .. 1 Constant Тип дополнительного дескриптора, необязательно
10 [wDescriptorLength]… 2 Numeric Общая длина дополнительных дескрипторов, необязательно
  • bcdHID: номер версии спецификации HID, которой следуют устройство и его дескриптор. Это значение представляет собой 4 символа шестнадцатеричного формата BCD. Например, bcdHID версии 1.1 — 0110h.
  • bCountryCode: идентификационный код страны назначения оборудования (см. рисунок ниже). Если не указано, это поле равно 0.
  • bDescriptorType: Тип дескриптора, прикрепленного к дескриптору HID (отчет или объект). Каждый HID должен поддерживать хотя бы один дескриптор отчета. Интерфейс может поддерживать несколько дескрипторов отчета и один или несколько дескрипторов объекта.
  • BDescriptorType и wDescriptorLength смещений 9 и 10 дескриптора HID могут повторяться.
     

 

HID поддерживает 3 вида дескрипторов.

Дескриптор HID, дескриптор отчета и физический дескриптор.

Три дескриптора устройств HID являются дескрипторами на основе классов, и их значения следующие:

Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на исходный источник и это заявление для повторной печати.
Исходная ссылка:https://blog.csdn.net/qq_16777851/article/details/86177941

Bluetooth 4,2 двухрежимный приемопередатчик данных HID Dongle — Промышленность — Новости

— Apr 22, 2019-

Что такое HID?

HID (Human Interface Device) категория устройств с человеческим интерфейсом — это первая категория USB, поддерживаемая Windows. Известно, что HID-устройства — это устройства, напрямую взаимодействующие с людьми, такие как клавиатуры, мыши и джойстики. Однако устройства HID не обязательно имеют интерфейс человек-машина, поскольку они соответствуют спецификации категории HID, все они являются устройствами HID.


В протоколе HID есть 2 объекта: «хост» и «устройство». Устройство — это объект, который напрямую взаимодействует с человеком, таким как клавиатура или мышь. Хост связывается с устройством и получает входные данные от устройства о действиях, выполняемых человеком. Выходные данные передаются от хоста к устройству, а затем к человеку. Наиболее распространенным примером хоста является ПК, но хостами могут быть и некоторые сотовые телефоны и КПК.

FSC-BP102 разработан Feasycom. Он поддерживает оба профиля SPP и BLE и имеет интерфейс USB. Интерфейс USB имеет две функции: последовательный порт и клавиатура HID. Может быть реализована передача данных Bluetooth на HID и прозрачная передача через последовательный порт Bluetooth.

1. Какова функция передачи данных Bluetooth в HID?
Пользователи могут подключаться к устройству FSC-BP102 через Bluetooth и отправлять на него данные с помощью профилей SPP или BLE. FSC-BP102 преобразует полученные данные и выводит их на подключенный хост в виде HID.

2. Какова функция прозрачной передачи последовательного порта Bluetooth?
Пользователи могут подключаться к FSC-BP102 через Bluetooth и отправлять данные на FSY-BP102 через SPP или BLE. FSC-BP102 будет выводить полученные данные на хост через последовательный порт.

В этом продукте используется модульное решение BT836, модуль BT836 — spp и модуль Bluetooth 4.2 с двойным режимом BLE. Этот модуль уже сертифицирован BQB. Скорость передачи: BLE: 8 КБ / с, SPP: 80 КБ / с, мощность передачи 5,5 дБм, с бортовой антенной, рабочее расстояние до 10 м. Он широко используется в умных часах, медицинском и медицинском оборудовании, беспроводных POS, системах измерения и мониторинга, промышленных датчиках и контроллерах для принтеров Bluetooth и других приложениях.

Взлом прошивок USB-устройств | Securelist

В этой статье я хочу продемонстрировать извлечение прошивки из защищенного USB-устройства, работающего на микроконтроллере Cortex M0.

Кто взламывает игровые приставки?

Производство пиратских, нелицензированных изделий — многомиллиардная индустрия и на рынке можно найти аксессуары практически для всех когда-либо вышедших игровых приставок. Здесь и устройства, позволяющие воспроизведение копий лицензионных игр из «бэкапов» с произвольных носителей, и контрафактные геймпады, и различные адаптеры для игровых контроллеров (в том числе дающие преимущество перед другим игроками), и гаджеты для применения читов в офлайн- и онлайн-играх. Разумеется, все эти устройства продаются вопреки желанию производителей игровых приставок.

Игровые консоли, как и двадцать лет назад, представляют собой проприетарные системы, производители которых навязывают свои правила миллионам пользователей: приставка должна исполнять только подписанный код, на ней можно играть только в легально приобретенные (и лицензионные) игры, и только «официальными» аксессуарами. В некоторых странах, взлом собственной приставки является нарушением закона.

В тоже время большое количество используемых производителями консолей способов защиты является вызовом для энтузиастов в области информационной безопасности. Особенно, если они любят видеоигры. В конце концов, чем сложнее задача, тем интересней ее решить.

Защита геймпада DualShock 4

Те читатели, которые следят за моим аккаунтом в Twitter, знают, что я давно увлекаюсь игровыми приставками, их реверсом, а также всем, что связано с консолями, в том числе, неофициальными игровыми устройствами. В первые дни существования PlayStation 4 публично известная уязвимость в ядре FreeBSD, на котором основано ядро этой приставки, позволила мне (и многим другим исследователям) приобщиться к архитектуре и принципам работы консоли Sony. Я провел множество исследований, в том числе, изучил принципы аутентификации игровой периферии и то, как PS4 отличает лицензированные устройства от нелегальных. Ранее я проводил подобные исследования других приставок, и авторизация периферийных устройств у PS4 оказалась хоть и проще чем у Xbox 360, но не менее эффективна.


Схема авторизации USB-аксессуаров PlayStation 4

PS4 посылает 0x100 случайных данных, в ответ на которые DualShock 4 генерирует подпись RSASSA-PSS SHA-256 и присылает её вместе с криптографическими константами N и E (публичный ключ), которые нужны для верификации этой подписи. Эти константы уникальны для каждого выпущенного геймпада. Также геймпад посылает подпись для верификации N и E, алгоритм тот же — RSASSA-PSS SHA-256, но криптографические константы едины для всех приставок и хранятся в ядре приставки.

Таким образом, чтобы авторизовать свое устройство недостаточно взломать ядро приставки — нужно иметь приватный ключ геймпада. И если кто-то всё-таки взломает геймпад и получит его, то у Sony остается возможность заблокировать ключ с обновлением прошивки. Также, если в течении 8 минут приставка не получает авторизационное сообщение от геймпада, то она прекращает «общение» с ним, и чтобы продолжить использование устройства нужно отключить его от консоли и подключить заново. Симуляция этого процесса очень раздражала владельцев первых нелегальных геймпадов.

Слухи о суперподделке DualShock 4

Схему аутентификации DualShock 4 не могли взломать довольно долго. Но в какой-то момент я услышал, что на рынке появились поддельные геймпады, которые выглядят и работают в точности, как оригинальные. Мне захотелось посмотреть на них своими глазами и, оформив несколько заказов на китайских торговых площадках, я стал ждать.

Время ожидания было решено скрасить поиском подробной информации о подделках. После некоторого количества поисковых запросов, я наткнулся на контроллер Gator Claw.


Неавторизированный геймпад Gator Claw

Интересным в нем было то, что, судя по обсуждению контроллера на Reddit, сначала он работал, как и другие неавторизованные геймпады — по 8 минут, но разработчики смогли это исправить в обновлении прошивки. На сайте магазина была доступна ссылка на файл обновления и руководство по его установке, которые я и скачал.


Инструкция по обновлению геймпада Gator Claw

Основы анализа embedded прошивок

Первым делом я решил взглянуть на секцию ресурсов программы, устанавливающей обновление прошивки и сразу сделал несколько интересных открытий.


Прошивка, найденная в ресурсах программы обновления Gator Claw

Читатели, знакомые с программированием embedded-устройств, наверняка узнают этот формат. Это файловый формат Intel HEX который часто применяется для программирования микроконтроллеров и многие компиляторы, например, GNU Compiler, могут выводить скомпилированную программу в таком формате. Также мы можем видеть, что начало этой прошивки не имеет большой энтропии и последовательности байтов легко различимы, что означает отсутствие шифрования или сжатия. После декодирования Intel HEX стрима и загрузки в редактор (010 Editor умеет открывать файлы прямо в таком формате) мы можем взглянуть на прошивку. Что это за архитектура? ARM Cortex-M настолько распространен что я различаю его с первого взгляда.


Прошивка Gator Claw (слева) и векторная таблица ARM Cortex-M (справа)

Согласно спецификации первое двойное слово — это начальная вершина стека, после него идет таблица прерываний. Первое слово в этой таблице — Reset vector, служащий точкой входа. Также можно сразу обратить внимание на верхнюю часть адресов других обработчиков прерываний, что дает нам представление о базовом адресе прошивки.

Помимо этого, в ресурсах был найден файл конфигурации с описанием различных микроконтроллеров. Скорее всего, разработчики программы для обновления задействовали некий общедоступный код от производителя микроконтроллера и наиболее вероятно, что этот файл конфигурации шел вместе с этим публичным кодом.


Файл конфигурации с описанием различных микроконтроллеров

После поиска идентификаторов из файла конфигурации мы находим сайт производителя этих микроконтроллеров – Nuvoton. Продуктовая линейка, техническая документация и SDK свободно доступны на сайте, и, более того, для их скачивания не нужно принимать какое-либо соглашение.


Сайт производителя микроконтроллеров Nuvoton

Благодаря этому у нас есть прошивка, мы знаем архитектуру и производителя микроконтроллера, у нас есть сведения о базовом адресе, вершине стека и точке входа. Доступной информации более чем достаточно, чтобы загрузить прошивку в IDA Pro и приступить к анализу.

В процессорах ARM поддерживаются два режима исполнения кода с различными инструкциями: ARM (32-битные инструкции) и Thumb (16-битные инструкции, дополненные Thumb-2 32-битными инструкциями). Cortex-M0 поддерживает только режим Thumb, поэтому мы установим переключатель в Processor options – Edit ARM architecture options – Set ARM instructions на NO во время загрузки прошивки.

Мы видим, что прошивка хорошо загрузилась по базовому адресу 0, автоматический анализ распознал практически все функции. И теперь встает вопрос – как правильно анализировать прошивки?


Одна из функций, присутствующих в прошивке

Если изучить эту прошивку, то мы увидим, что она совершает большое количество операций чтения и записи к памяти с базовым адресом 0x40000000. Это базовый адрес где находится память, отведенная под ввод-вывод (memory mapped input output — MMIO). Через эти адреса предоставляется доступ ко всем периферийным компонентам, которые есть у микроконтроллера. Все что делает прошивка происходит через доступ к MMIO-регистрам.


Схема адресов периферийных устройств

Найдя в документации адрес 0x40000000 мы узнаем, что этот микроконтроллер серии M451. Зная семейство микроконтроллера, можем скачать SDK и образцы кода для этой платформы. Внутри SDK мы находим заголовочный файл с объявлением всех MMIO-адресов, всех битовых полей и структур. Так же мы можем скомпилировать образцы кода и все библиотеки, а затем сравнить их с функциями в нашей IDB, или мы можем просто искать имена MMIO адресов в исходном коде и сравнивать их с нашим ассемблерным кодом. Это превращает процесс обратной разработки прошивки в простой и легкий процесс. Анализ был бы намного сложнее если бы у нас не было информации об архитектуре и модели микроконтроллера, и MMIO-регистрах. К слову, именно поэтому многие производители делятся SDK только после подписи NDA.


Процесс нахождения библиотечных функций в коде прошивки

Но что по-настоящему заинтересовало меня в этой прошивке — одна неиспользуемая строка с именем крупного производителя электроники (наиболее известного своими логическими анализаторами, но, как оказалось, имеющего и игровое подразделение). Судя по всему, она должны была быть частью USB Device Descriptor, но этот дескриптор не был использован.

В тени гиганта

Мне удалось найти магазин с огромным ассортиментом игровых аксессуаров, продаваемых под единой торговой маркой. Среди продаваемых аксессуаров числились два десятка различных адаптеров для подключения геймпадов одной приставки к другой. К примеру, отдельный продукт для подключения геймпада Xbox 360 к приставке PS4, отдельный продукт для подключения геймпада PS3 к приставке Xbox One, и многие другие, включая «все в одном». Также ассортимент продукции включает адаптеры для подключения клавиатуры и мыши к консолям PS4, Xbox One и Nintendo Switch, различные игровые геймпады и печатные платы для создания своих аркадных контроллеров для приставок. Все продукты шли с обновлениями, аналогичными тому, которое шло с Gator Claw, но с существенным отличием – все прошивки были зашифрованы.


Пример инструкции и зашифрованной прошивки из ресурсов программы обновления к одному из продуктов

Теперь попробуем найти фотографии печатных плат аркадных контроллеров, что позволит оценить схему устройства, не покупая и не разбирая его. Скорее всего их дизайн идентичен дизайну Gator Claw. На найденных фотографиях мы можем видеть два микроконтроллера: один из них должен быть Nuvoton M451, а другой – вспомогательный, для секретов: производители понимают, что конкуренты могут изучить их прошивку, и чтобы предотвратить это используют второй микроконтроллер. Забегая вперед, скажу, что в нашем случае он тоже присутствовал. Данные для аутентификации передаются в него по протоколу I2C и после получения отправляются обратно на приставку.

Поскольку все дорожки идут к микроконтроллеру под черной эпоксидной смолой, мы можем заключить, что это главный микроконтроллер. А микроконтроллер с четырьмя желтыми ножками соответствует требованиям для работы по протоколу I2C и является вспомогательным.


Примеры внутреннего дизайна выпускаемой продукции

Внутри контроллера

К этому моменту я наконец получил посылку из Шэньчжэня, и надо сказать, что контрафактный гаджет очень сложно отличить от оригинального DualShock 4: геймпад выполнен из качественных материалов, touchpad работает, динамик и гарнитура тоже.


Контрафактный DualShock 4 (вид снаружи)

С помощью комбинации клавиш из инструкции я проверил, что геймпад переходит в DFU-режим, и приступил к разборке. Отмечу, что при этом на ПК геймпад определился как другое устройство, с иными идентификаторами и характеристиками.


Контрафактный DualShock 4 (вид на главную плату)

Я припаял провода к отладочным площадкам и подключил программатор. Программатор определил устройство, но security lock был установлен.


Программатор определил микроконтроллер и включенный Security Lock

Метод взлома прошивок USB-устройств

Дизайн USB-протокола определяет две сущности — хост и остальные устройства, которые подключаются к нему. Они, в свою очередь, разделяются на классы: hub, human interface, printer, imaging, mass storage device и другие.


Схема подключения USB устройств

Общение между устройствами и хостом происходит посредством односторонних и двухсторонних каналов. Под каналом мы подразумеваем передачу данных между программой на хосте и конкретным «конечной точкой» на устройстве. Таких точек может быть несколько для передачи различных данных.


Схема типов передачи данных

Существует четыре типа передачи данных:

  • Control Transfers (используется для конфигурации)
  • Bulk Data Transfers (большие количества последовательных данных)
  • Interrupt Data Transfers (используются для своевременной и точной передачи данных)
  • Isochronous Data Transfers (беспрерывный поток данных)

Все USB-устройства должны иметь особый канал на нулевой конечной точке, зарезервированный для конфигурации устройства.

Эти типы передачи данных осуществляются посредством пакетов, представленных на рисунке ниже:


Пакеты, задействованные в протоколе USB

По факту, USB-протокол — это машина состояния, и в этой статье мы не будем останавливаться на каждом из этих пакетов. Ниже представлен пример осуществления Control Transfer:


Control Transfer

Устройства могут содержать уязвимости в каждом из четырех типов передачи данных, но эти типы опциональны, к тому же их наличие и применение будет сильно отличаться от устройства к устройству. Но все устройства поддерживают Control Transfers и формат, по большей части, един для всех устройств, что делает данный тип передачи данных наиболее интересным для анализа на наличие уязвимостей.

Диаграмма ниже изображает формат SETUP-пакета, который используется для выполнения Control Transfer.


Формат SETUP-пакета

SETUP-пакет занимает 8 байт и может предоставлять различные данные в зависимости от типа запроса. Некоторые из них едины для всех устройств (например, дескрипторы), другие зависят от класса устройства или желания производителя. Размер передаваемых/получаемых данных задается 16-битным словом и также передается в SETUP-пакете.


Примеры запросов

Подводя итог: Control Transfers используют простой протокол, поддерживаемый всеми USB-устройствами, которые могут иметь множество дополнительных команд, и мы контролируем размер данных. Все это делает Control Transfers идеальной целью для фаззинга и глитчинга.

Эксплуатация

Для взлома поддельного геймпада мне не пришлось прибегать к фаззингу т.к. я нашел баги еще во время просмотра кода прошивки Gator Claw.


Уязвимый код в обработчике HID реквестов

Функция HID_ClassRequest() написана для симуляции работы оригинального геймпада DualShock 4, и поддерживает минимум необходимых запросов для работы с приставкой PlayStation 4. USBD_GetSetupPacket() получает SETUP-пакет и в зависимости от типа переданного репорта либо получит, либо отправит данные функциями USBD_PrepareCntrlIn() и USBD_PrepareCntrlOut(). Как можно заметить, запрошенный размер данных не проверяется и это должно дать нам возможность читать часть внутренней памяти, где хранится прошивка, а также читать и писать в начало SRAM-памяти.


Переполнение буфера в процессе Control Transfer

Размер DATA-пакета задается в USB Device Descriptor (который также получается с помощью Control Transfer) но, похоже, что остается не учтен тот факт, что этот размер указывает на размер одного пакета, а их может быть сколько угодно в зависимости от размера, заданного в SETUP-пакете.

Примечательно, что образцы кода, размещенные на сайте Nuvoton, также не содержат проверок на размер и могут привести к большему количеству багов в различных проектах из-за копирования этого кода.


Эксплуатация переполнения буфера в SRAM памяти

SRAM (Static random access memory) — это оперативная память, в которой помимо прочего находится стек. Очень часто SRAM также является исполняемой памятью (настраивается), обычно это делается для улучшения производительности – основная прошивка может скопировать в SRAM часто вызываемый код, например, код Real-Time Operating System. Нет гарантий, что вершина стека будет находиться в достижимых пределах переполнения буфера, но вероятность этого велика.

Неожиданно, но главным препятствием на пути к эксплуатации уязвимостей в прошивках USB-устройств являются операционные системы. Нижеперечисленное характерно для Windows, но думаю, что актуально и для Linux-based систем без специальных исправлений.

Во-первых, ОС не позволяет прочесть больше 4 килобайт во время передачи данных Control Transfer. Во-вторых, по моему опыту ОС не позволяет записать больше одного пакета с данными во время Control Transfer. В-третьих, USB-устройство может использовать «скрытые» запросы, которые ОС откажется посылать.

Это легко продемонстрировать на примере устройств HID (Human Interface Device), к которым относится геймпад. У них есть дополнительные дескрипторы: HID Descriptor, Report Descriptor, Physical Descriptor. Второй из списка отличается от каких-либо других дескрипторов и состоит из программных единиц, описывающих доступные репорты. Если запрос не описан в Report Descriptor, то в таком случае ОС откажется его выполнить даже если он обрабатывается в устройстве. Все это противодействует нахождению и эксплуатации уязвимостей.

Чтобы решить эту проблему без необходимости разбираться и перекомпилировать ядро Linux, я воспользовался low end инструментами которые были у меня под рукой: плата Arduino Mega + USB Host Shield (общая стоимость — менее 30 $).


Схема подключения устройств

После подключения устройств по представленной выше схеме, я воспользовался Arduino для выполнения Control Transfer без каких-либо вмешательств со стороны операционной системы.


Arduino Mega + USB Host Shield

Поддельный геймпад содержал те же уязвимости что и Gator Claw, и первое что я сделал — «сдампил» часть прошивки.


«Сдампленная» часть прошивки

Для нахождения базового адреса дампа нашей прошивки достаточно найти структуру с указателями на известные данные. После этого мы можем посчитать дельту и загрузить полученную часть прошивки в IDA Pro.


Структура с указателями на известные данные

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


Нахождение функций, облегчающих эксплуатацию

После нахождения контактов UART на плате геймпада, припаивания проводов и подключения их к TTL2USB адаптеру мы видим вывод в терминале.


Стандартный UART вывод при включении геймпада

Стандартная библиотека для микроконтроллеров Nuvoton идет с очень удобным обработчиком Hard Fault исключений, который выводит дамп регистров. Это сильно облегчает эксплуатацию и позволяет отлаживать эксплойт.


Вывод в UART при Hard Fault исключении, вызванным перезаписью стека

Финальный эксплойт для дампа прошивки:


Эксплойт и шеллкод для получения дампа прошивки по UART

Но этот способ дампа нельзя считать полноценным, поскольку серия микроконтроллеров Nuvoton M451 позволяет использовать две различные прошивки: основную (APROM) и мини-прошивку для DFU-обновлений (LDROM).


Схема Flash и системной памяти Nuvoton M451 в различных режимах исполнения

Эти прошивки транслируются на одни и те же адреса памяти, поэтому в зависимости от текущего режима можно прочесть только одну из них. Для того, чтобы получить дамп прошивки LDROM, нам нужно отключить security lock и прочитать Flash-память с помощью программатора.


Шеллкод, снимающий security lock

Криптофейл

Изучение прошивки обновлений (LDROM) показало, что это стандартный код от Nuvoton, но с добавленным шифрованием обновлений прошивок.


Схема криптографического алгоритма шифрования обновлений прошивок

Шифрование представляет собой кастомный блочный алгоритм, выполненный в режиме сцепления блоков шифротекста, длина которых составляет всего 32 бита. В этот алгоритм предоставляются ключ, который является текстовым (ASCII) идентификатором продукта, и массив инструкций, которые определяют, какое преобразование сделать с текущим блоком. После достижения конца ключа и массива, их позиция устанавливается на начальную. Список преобразований включает в себя шесть операций: xor, subtraction, subtraction (reverse), и повтор этих преобразований с переустановкой байт. Так как в прошивках присутствуют большие области, состоящие из нулевых байт, это позволяет с легкостью посчитать секретные составляющие этого алгоритма.


Раскрытие ключа шифрования обновления прошивки

Применение алгоритма, извлеченного из прошивки контрафактного геймпада, ко всем прошивкам аксессуаров, доступных на сайте OEM-производителя, показало, что они все используют этот алгоритм шифрования. Это позволяет высчитать ключи шифрования для всех устройств и расшифровать все представленные прошивки. Таким образом, алгоритм, вложенный в контрафактный продукт поставил под угрозу безопасность всех продуктов производителя.

Заключение

Пост получился очень большим, но я хотел подготовить его для наиболее широкой аудитории. В этой статье я продемонстрировал полный процесс анализа embedded-прошивок, поиска и эксплуатации уязвимости для получения дампа, исполнения произвольного кода на USB-устройстве. Хоть глитчинг-атаки не вошли в статью, они тоже очень эффективны при взломе USB-устройств. Для желающих узнать об этом больше рекомендую ознакомиться с этим видео. А тем, кто задался вопросом, как пираты получили ключи и алогритм из DualShock 4, советую почитать этот материал.

Что касается тайны со вспомогательным микроконтроллером, то оказалось, что, во-первых, он присутствует не во всех устройствах, а во-вторых, добавлен всего лишь для запутывания и не хранит никаких секретов, выполняя лишь операции SHA1 и SHA256. Контроллер Nuvoton M451, может быть объектом для дальнейших исследований т.к. во время этого исследования он продемонстрировал некоторые признаки, которые могут свидетельствовать о наличии архитектурных уязвимостей.

Покупателей контрафактных геймпадов не ждет ничего хорошего: Sony заблокирует нелегально используемые ключи, и пользователи останутся без рабочего контроллера.

Эксперт представил новое USB-устройство для атаки HID Keyboard Attack

Эксперт представил новое USB-устройство для атаки HID Keyboard Attack

Alexander Antipov

Удаленно управляемый инжектор может эмулировать USB-клавиатуру и использоваться в социальной инженерии.

Исследователь безопасности Лука Бонджорни (Luca Bongiorni) разработал устройство, выводящее атаку HID Keyboard Attack на новый уровень.

HID Keyboard Attack представляет собой атаку, в ходе которой злоумышленник подключает к атакуемому компьютеру устройство (например, смартфон или планшет), воспринимаемое системой как USB-клавиатура или мышь. С помощью данного устройства хакер может нажимать любые кнопки и вводить желаемые команды. Одним из примеров подобной атаки является Mousejack, продемонстрированная экспертами Bastille Network в феврале прошлого года.

Бонджорни решил создать собственное недорогое устройство для осуществления HID Keyboard Attack, управлять которым можно удаленно. Разработанный исследователем WHID Injector является миниатюрным USB-устройством, состоящим из микроконтроллера Atmega 32u4 (зачастую используется в платах Arduino) и модуля Wi-Fi ESP-12s (используется в проектах «Интернета вещей»).

По словам Бонджорни, WHID Injector – это нечто большее, чем обыкновенный удаленно управляемый инжектор для атак HID Keyboard Attack. Устройство позволяет обходить физическую изоляцию компьютеров и способно подключаться к C&C-серверу по стороннему каналу с помощью модуля Wi-Fi.

Использовать устройство можно как для осуществления классической атаки с эмуляцией USB-клавиатуры, так и для социальной инженерии. В первом случае злоумышленник может подключить инжектор к компьютеру жертвы и удаленно управлять им через точку доступа Wi-Fi (в итоге устройство можно настроить для подключения к уже существующей беспроводной сети). Во втором случае WHID Injector можно внедрить в устройство с поддержкой USB.

Ниже представлено видео, демонстрирующее атаку HID Keyboard Attack с использованием WHID Injector на Windows 10 Enterprise.


Телевизоры следят за нами, шпионы поколения Джеймса Бонда страдают от новых технологий, а неудачный пост в Whatsapp десятилетней давности может привести к тюремному сроку в нашем новом Youtube выпуске.
Поделиться новостью:

Мобильный доступ HID Mobile Access. Смартфон как идентификатор

Актуальность

Мы привыкли в качестве идентификаторов использовать карты доступа. Которые можно подделать, забыть, потерять или передать другому. Задачу защиты от подделки и копирования карт успешно решает технология HID iCLASS SE на базе модели шифрования SIO. Как защититься от остальных угроз?

Какой из типов идентификаторов у нас всегда с собой, менее подвержен краже или утери, что мы не сможем «одолжить» на день другому человеку? Верно, мы сами. Можно использовать отпечаток пальца или, например, смартфон.

Технология мобильного доступа HID Mobile Access позволяет применять в качестве защищенных идентификаторов системы устройства iOS® и Android™, таким образом, снизить вероятность угроз, связанных с использованием карт.

Компоненты решения мобильного доступа

HID Mobile Access® — решение, основанное на использовании «облачных» технологий. Всего несколько шагов отделяют нас от использования смартфона в качестве идентификатора.

Портал системы HID Mobile Access®

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

Управление ключами обеспечивается через портал при непосредственной связи с системой СКУД, в которой назначаются и администрируются все права доступа для идентификатора. Работа на устройствах iOS® и Android™ осуществляется через мобильное приложение HID Mobile Access® App. Таким образом, выпуск и отзыв ключей возможен из любой точки мира, где есть доступ к интернет.

Считыватели iCLASS SE и multiCLASS SE

Считыватели iCLASS SE® и multiCLASS SE одновременно поддерживают как мобильные ID, так и традиционные бесконтактные карты. Считыватели и мобильные ID персонализируются под конкретного конечного заказчика.

Для системы HID Mobile Access требуются последние модификации считывателей iCLASS SE или multiCLASS SE. Мобильные считыватели оборудованы специальным Bluetooth-модулем, подключаемым к разъёму расширения на задней стенке считывателя.

Как использовать смартфон для входа в здание

Для входа в здание или помещение необходимо открыть приложение на мобильном устройстве, поднести его к считывателю, используя одну из технологий передачи данных: NFC или Bluetooth 4.0 (Bluetooth Smart) и открыть дверь.

В зависимости от особенностей объекта и расположения точек доступа относительно друг друга HID Global предлагает два варианта открытия двери с помощью мобильного устройства: Tap и Twist and Go.

Технология Tap целесообразно применять для стандартных дверных точек доступа, например, для прохода через турникеты, а также в случаях, когда точки доступа расположены в непосредственной близости друг от друга. Приветствуется использование комбинированного способа идентификации: одновременное применение мобильного ID и биометрии, либо мобильного ID и pin-code.

Технология Twist and Go рекомендуется использовать на парковках, в гаражах, в складских зонах, а также в случаях, когда требуется скрыть считыватель из прямой видимости.

Использование того или иного способа передачи данных от мобильного устройства к считывателю связано с тем, какую технологию поддерживает устройство. Технология мобильного доступа работает на следующих платформах:

  • Android 4.3+ с Bluetooth 4.0
  • Android 4.4+ с NFC
  • iOS 7+ с Bluetooth 4.0

Насколько защищён мобильный доступ?

В HID Mobile Access используется многоуровневая система защиты.


Защита на уровне идентификатора

HID Mobile Access® обеспечивает безопасное хранение нескольких мобильных идентификаторов (Mobile ID) на одном устройстве. Идентификатор не может быть скопирован или передан из одного устройства в другое. В мобильных ID применяют модель шифрования SIO (Secure Identity Object), обеспечивается защита цифровой подписью.

Мобильные идентификаторы могут быть дополнительно защищены средствами безопасности самого телефона, такими как пароль для разблокировки экрана.

Мобильные ID не работают без соответствующей активации в системе СКУД.

Защита на уровне считывателя

Все криптографические операции, имеющие уровень защиты от взлома EAL 5+ в считывателе iCLASS SE® осуществляется в специальном модуле.

Для управления хранением и извлечением мобильных ID, в системе мобильного доступа применяется технология Seos. Являясь программным приложением, использует стандартизированные алгоритмы, Seos работает на безопасной вычислительной платформе, такой как чип смарт-карты или SIM. Технология обеспечивает хранение объектов SIO, паролей Windows и генерация одноразовых паролей.

Бизнес-выгоды

  • Безопасно. Оставить карту дома или потерять её больше не является проблемой. Люди теряют свои мобильные телефоны значительно реже, чем пластиковые карты. Устраняется проблема с передачи карты от одного пользователя другому.
  • Удобно. Выпуск/отзыв ключей отовсюду, где только есть доступ в интернет, мгновенный отзыв ключа как только пользователю больше не требуется доступ на объект.
  • Нет зависимости от платформы. HID Mobile Access® работает на устройствах iOS® и Android™
  • Минимум затрат. Исключение процессов по выдаче, печати на картах и возврату карт

Используйте передовые технологии HID Global в области безопасной идентификации.

Introduction to Human Interface Devices (HID) — Драйверы для Windows

  • Статья
  • .
  • 2 минуты на чтение
Эта страница полезна?

Оцените свой опыт

да Нет

Любой дополнительный отзыв?

Отзыв будет отправлен в Microsoft: при нажатии кнопки «Отправить» ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Human Interface Devices (HID) — это определение класса устройства для замены разъемов в стиле PS / 2 на универсальный драйвер USB для поддержки устройств HID, таких как клавиатуры, мыши, игровые контроллеры и т. Д. До HID устройства могли использовать только строго: определенные протоколы для мышей и клавиатур.Аппаратные инновации требовали либо перегрузки данных в существующем протоколе, либо создания нестандартного оборудования с собственным специализированным драйвером. HID обеспечила поддержку этих устройств с «загрузочным режимом», добавив поддержку аппаратных инноваций с помощью расширяемых, стандартизованных и легко программируемых интерфейсов.

Сегодня устройства

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

HID начинался с USB, но не зависел от шины. Он был разработан для устройств с низкой задержкой и низкой пропускной способностью, но с возможностью гибкого определения скорости в базовом транспорте. Спецификация HID over USB была ратифицирована USB-IF в 1996 году, и вскоре после этого последовала поддержка дополнительных транспортных средств. Подробную информацию о поддерживаемых в настоящее время транспортах можно найти в разделе «Транспорты HID, поддерживаемые в Windows». Сторонние перевозки, зависящие от поставщика, также разрешены через специальные транспортные драйверы.

HID Концепции

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

Отчеты

Приложения и HID-устройства обмениваются данными через отчеты. Существует три типа отчетов: входные отчеты, выходные отчеты и отчеты по функциям.

Тип отчета Описание
Входной отчет Данные, отправляемые с HID-устройства в приложение, обычно при изменении состояния элемента управления.
Выходной отчет Данные, отправленные из приложения на HID-устройство, например, на светодиоды на клавиатуре.
Отчет об особенностях Данные, которые могут быть прочитаны и / или записаны вручную и обычно связаны с информацией о конфигурации.

Каждая коллекция верхнего уровня, определенная в дескрипторе отчета, может содержать ноль (0) или более отчетов каждого типа.

Таблицы использования

Рабочая группа USB-IF публикует таблицы использования HID, которые являются частью дескрипторов отчетов, описывающих, что разрешено делать устройствам HID.Эти таблицы использования HID содержат список с описанием использования , которые описывают предполагаемое значение и использование конкретного элемента, описанного в дескрипторе отчета. Например, использование определяется для левой кнопки мыши. Дескриптор отчета может определять, где в отчете приложение может найти текущее состояние левой кнопки мыши. Таблицы использования разбиты на несколько пространств имен, называемых страницами использования. Каждая страница использования описывает набор связанных видов использования, которые помогают организовать документ.Комбинация страницы использования и использования определяет идентификатор использования, который однозначно определяет конкретное использование в таблицах использования.

См. Также

USB-IF HID Технические характеристики.

HID: Класс устройств интерфейса человека

Класс устройств интерфейса человека (HID) в основном используется для устройств, которые позволяют человеку управлять компьютером. Используя эти устройства, хост может реагировать на действия человека (например, движения мыши или нажатия клавиш).Этот ответ должен происходить быстро, чтобы пользователь компьютера не заметил значительной задержки между своим действием и ожидаемой обратной связью. Типичные примеры устройств класса HID:

  • Клавиатуры и указывающие устройства (например, мыши, джойстики и трекболы)
  • Элементы управления на передней панели (например, кнопки, ручки, ползунки и переключатели)
  • Имитационные устройства (например, рули, педали, другие устройства ввода VR)
  • Пульты дистанционного управления и телефонные клавиатуры
  • Другие устройства с низкой скоростью передачи данных, которые предоставляют, например, данные об окружающей среде (например, термометры, счетчики энергии или даже считыватели штрих-кода)

Подробное описание HID предоставлено Форумом разработчиков USB (USB-IF).

Особенности класса HID

Класс HID не обязательно является человеческим интерфейсом. Но устройство, использующее HID-класс, должно уметь работать в рамках HID-класса. Эта реализация класса HID компонента USB имеет следующие особенности:

  • Все данные обмениваются отчетами . Это структуры фиксированной длины, которые отправляются или запрашиваются хостом USB в , управляющем или прерывании , передает . Отчеты имеют гибкий формат и могут содержать данные любого типа.Каждое устройство HID должно иметь один входной отчет в дескрипторе отчета. Отчеты о результатах и ​​функциях не являются обязательными.
  • Конечная точка IN прерывания требуется для отправки ввода отчетов на хост USB.
  • Максимальное количество конечных точек IN и OUT прерывания ограничено 1.
  • Конечная точка прерывания OUT — optional .
  • Поскольку HID-устройство может отправлять данные в любой момент времени, используя конечную точку прерывания IN, драйверу USB-хоста необходимо обеспечить периодический опрос данных.
  • USB-компонент поддерживает приложения класса HID для USB-устройств и USB-хоста (только MDK-Professional).

Передача управления

Спецификация HID определяет шесть специфичных для класса запросов. Они позволяют USB-хосту узнать о возможностях и текущем состоянии устройства. Кроме того, хост может установить состояние вывода и элементов функций. Все шесть запросов передаются через канал управления.

  • Запрос Get_Report позволяет хосту USB получать отчет через канал управления
  • Запрос Set_Report позволяет USB-хосту отправлять отчет на устройство (например, для настройки состояний устройства)
  • Текущую простоя устройства скорость можно прочитать с помощью запроса Get_Idle .Частота простоя определяет, как часто устройство повторно отправляет данные, которые не изменились с момента последнего отчета.
  • idle Скорость может быть установлена ​​с помощью запроса Set_Idle . Это используется для ограничения частоты отчетов конечной точки прерывания IN. Частота простоя по умолчанию составляет 500 миллисекунд для клавиатур (задержка перед первой частотой повтора) и бесконечность для джойстиков и устройств мыши.
  • Во время загрузки USB-хоста для связи может использоваться упрощенный протокол.Запрос Get_Protocol читает, какой протокол активен в данный момент. Запрос Set_Protocol переключает между протоколом загрузки и протоколом отчета.

Прерывание передачи

Для обеспечения минимальной задержки данных используются конечные точки прерывания. Пропускная способность для передачи прерываний гарантируется для каждого устройства после успешного перечисления. Конечные точки управления могут столкнуться с задержкой доставки данных, если шина занята.

Дескрипторы USB

В устройстве USB HID требуются следующие дескрипторы:

  • Стандартный дескриптор устройства
  • Дескриптор стандартной конфигурации
  • Стандартный дескриптор интерфейса для класса HID
  • Специфический для класса дескриптор HID
  • Стандартный дескриптор конечной точки для конечной точки прерывания IN
  • Дескриптор отчета по конкретному классу

Необходимые дескрипторы автоматически генерируются компонентом промежуточного программного обеспечения USB. Дескриптор отчета строится на основе настроек в файле USBD_Config_HID_x.h . В этом файле указывается количество отчетов и их максимальный размер. На странице «Дескрипторы USB» представлена ​​дополнительная информация по теме.

Примечание
Дополнительная информация об использовании HID приведена в разделе «Справочная информация»:

Подключение к необычным устройствам HID

API WebHID позволяет веб-сайтам получать доступ к альтернативным дополнительным клавиатурам и экзотическим геймпадам.

• Обновлено

Существует длинный хвост устройств интерфейса пользователя (HID), таких как альтернативные клавиатуры или экзотические геймпады, которые слишком новые, слишком старые или слишком необычные быть доступным для драйверов устройств системы. WebHID API решает эту проблему, предоставляя способ реализации логики конкретного устройства в JavaScript.

Предлагаемые варианты использования #

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

Невозможность доступа к необычным HID-устройствам особенно болезненна, когда речь идет об альтернативных вспомогательных клавиатурах (например, Elgato Stream Deck, гарнитурах Jabra, X-клавишах) и поддержке экзотических геймпадов. Геймпады, разработанные для настольных ПК, часто используют HID для входов геймпада (кнопки, джойстики, триггеры) и выходов (светодиоды, грохот).К сожалению, входы и выходы геймпада недостаточно стандартизированы, и веб-браузеры часто требуют настраиваемой логики для определенных устройств. Это неустойчиво и приводит к плохой поддержке длинного хвоста старых и необычных устройств. Это также заставляет браузер зависеть от особенностей поведения конкретных устройств.

Текущий статус #

Шаг Статус
1. Создать объяснитель Завершено
2.Создать первоначальный проект спецификации Завершить
3. Собирать отзывы и повторять дизайн Завершено
4. Исходная пробная версия Завершена
5. Запустить Завершить

Терминология #

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

HID (Human Interface Device) — это тип устройства, которое принимает входные данные или предоставляет выходные данные людям. Это также относится к протоколу HID, стандарту двунаправленной связи между хостом и устройством, который предназначен для упрощения процедуры установки. Протокол HID изначально был разработан для USB-устройств, но с тех пор был реализован во многих других протоколах, включая Bluetooth.

Приложения и устройства HID обмениваются двоичными данными с помощью трех типов отчетов:

Тип отчета Описание
Входной отчет Данные, которые отправляются с устройства в приложение (например, нажатие кнопки .)
Выходной отчет Данные, которые отправляются из приложения на устройство (например, запрос на включение подсветки клавиатуры.)
Отчет о функциях Данные, которые могут быть отправлены в любом направлении.Формат зависит от устройства.

Дескриптор отчета описывает двоичный формат отчетов, поддерживаемый устройством. Его структура является иерархической и позволяет группировать отчеты в отдельные коллекции внутри коллекции верхнего уровня. Формат дескриптора определяется спецификацией HID.

Использование HID — это числовое значение, относящееся к стандартизированному вводу или выводу. Значения использования позволяют устройству описывать предполагаемое использование устройства и назначение каждого поля в своих отчетах.Например, он определен для левой кнопки мыши. Использование также организовано в виде страниц использования, на которых указывается категория верхнего уровня устройства или отчета.

Использование WebHID API #

Обнаружение функции #

Чтобы проверить, поддерживается ли WebHID API, используйте:

  if ("hid" в навигаторе) {
}

Откройте HID-соединение #

WebHID API является асинхронным по дизайну, чтобы предотвратить блокировку пользовательского интерфейса веб-сайта при ожидании ввода.Это важно, потому что данные HID могут быть получены в любое время, что требует способа их прослушивания.

Чтобы открыть HID-соединение, сначала обратитесь к объекту HIDDevice . Для этого вы можете предложить пользователю выбрать устройство, вызвав navigator.hid.requestDevice () , или выбрать одно из navigator.hid.getDevices () , которое возвращает список устройств, к которым веб-сайту был предоставлен доступ. к ранее.

Функция navigator.hid.requestDevice () принимает обязательный объект, определяющий фильтры.Они используются для сопоставления любого устройства, подключенного к идентификатору поставщика USB ( vendorId ), идентификатору продукта USB ( productId ), значению страницы использования ( usagePage ) и значению использования ( usage ). Вы можете получить их из репозитория USB ID и документа таблиц использования HID.

Несколько объектов HIDDevice , возвращаемых этой функцией, представляют несколько интерфейсов HID на одном физическом устройстве.

  
const фильтры = [
{
vendorId: 0x057e,
productId: 0x2006
},
{
vendorId: 0x057e,
productId: 0x2007
}
];


const [устройство] = ждать навигатора. hid.requestDevice ({фильтры});

  
const devices = await navigator.hid.getDevices ();
Запрос пользователя на выбор консоли Nintendo Switch Joy-Con.

A Объект HIDDevice содержит идентификаторы поставщика USB и продукта для идентификации устройства. Его коллекции Атрибут инициализируется иерархическим описанием форматов отчетов устройства.

  для (let коллекция device.collections) {
console.log (`Usage: $ {collection.использование} `);
console.log (`Страница использования: $ {collection.usagePage}`);

для (пусть inputReport из collection.inputReports) {
console.log (`Входной отчет: $ {inputReport.reportId}`);
}

для (пусть outputReport из collection.outputReports) {
console.log (`Выходной отчет: $ {outputReport.reportId}`);
}

для (пусть featureReport из collection.featureReports) {
console.log (`Feature report: $ {featureReport.reportId}`);
}


}

Устройства HIDDevice по умолчанию возвращаются в «закрытом» состоянии и должны быть открыты с помощью вызова open () перед отправкой или получением данных.

  
ожидание устройства.open ();

Получение отчетов о вводе #

После установки HID-соединения вы можете обрабатывать входящие отчеты о вводе, прослушивая события "inputreport" с устройства. Эти события содержат данные HID в виде объекта DataView ( данных ), устройство HID, которому оно принадлежит ( устройство ), и 8-битный идентификатор отчета, связанный с входным отчетом ( reportId ).

Устройства Nintendo Switch Joy-Con.

Продолжая предыдущий пример, приведенный ниже код показывает вам, как определить, какую кнопку пользователь нажал на устройстве Joy-Con Right, чтобы вы, надеюсь, могли попробовать это дома.

  device.addEventListener ("inputreport", event => {
const {data, device, reportId} = event;


if (device.productId! == 0x2007 && reportId! == 0x3f) return;

const value = data.getUint8 (0);
if (value === 0) return;

const someButtons = {1: "A", 2: "X", 4: "B", 8: "Y"} ;
консоль. log (`Пользователь нажал кнопку $ {someButtons [значение]}.`);
});

Отправить выходные отчеты #

Чтобы отправить выходной отчет на устройство HID, передайте 8-битный идентификатор отчета, связанный с выходным отчетом ( reportId ) и байты как BufferSource ( данные ) в device.sendReport () . Возвращенное обещание разрешается после отправки отчета. Если устройство HID не использует идентификаторы отчетов, установите для reportId значение 0.

Пример ниже применяется к устройству Joy-Con и показывает, как заставить его работать с выходными отчетами.

  
const enableVibrationData = [1, 0, 1, 64, 64, 0, 1, 64, 64, 0x48, 0x01];
ожидание устройства.sendReport (0x01, новый Uint8Array (enableVibrationData));


const roubleData = [];
await device.sendReport (0x10, новый Uint8Array (roubleData));

Отправка и получение отчетов о функциях #

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

Клавиатура ноутбука

Чтобы отправить отчет о функциях на HID-устройство, передайте 8-битный идентификатор отчета, связанный с отчетом о функциях ( reportId ) и байты в качестве BufferSource ( данных ) на устройство .sendFeatureReport () . Возвращенное обещание разрешается после отправки отчета. Если HID-устройство не использует идентификаторы отчетов, установите для параметра reportId значение 0.

В приведенном ниже примере показано использование отчетов о функциях, где показано, как запросить устройство с подсветкой клавиатуры Apple, открыть его и заставить его мигать.

  const waitFor = duration => новое обещание (r => setTimeout (r, duration)); 


const [устройство] = ожидание navigator. hid.requestDevice ({
фильтры: [{vendorId: 0x05ac, usage: 0x0f, usagePage: 0xff00}]
});


ожидание устройства.open ();


const reportId = 1;
для (let i = 0; i <10; i ++) {
await device.sendFeatureReport (reportId, Uint32Array.from ([0, 0]));
ожидание waitFor (100);
ожидание устройства.sendFeatureReport (reportId, Uint32Array.from ([512, 0]));
ожидание waitFor (100);
}

Чтобы получить отчет о функциях от устройства HID, передайте 8-битный идентификатор отчета, связанный с отчетом о функциях ( reportId ), на device.receiveFeatureReport () . Возвращенное обещание разрешается с помощью объекта DataView , который содержит содержимое отчета о функциях.Если устройство HID не использует идентификаторы отчетов, установите для reportId значение 0.

  
const dataView = await device.receiveFeatureReport (1);

Прослушивание подключения и отключения #

Когда веб-сайту было предоставлено разрешение на доступ к HID-устройству, он может активно получать события подключения и отключения, прослушивая события «подключение», и «отключение», .

  navigator.hid.addEventListener ("подключение", событие => {
});

навигатор.hid.addEventListener («отключиться», событие => {
});

Советы разработчика #

Отладка HID в Chrome проста с внутренней страницей about: // device-log , где вы можете увидеть все события, связанные с HID и USB-устройствами, в одном месте.

Внутренняя страница в Chrome для отладки HID.

Поддержка браузера #

WebHID API доступен на всех настольных платформах (Chrome OS, Linux, macOS и Windows) в Chrome 89.

Демонстрации #

Некоторые демонстрации WebHID доступны в Интернете.dev / hid-examples. Иди посмотри!

Безопасность и конфиденциальность #

Авторы спецификации разработали и внедрили WebHID API, используя основные принципы, определенные в разделе «Управление доступом к мощным функциям веб-платформы», включая пользовательский контроль, прозрачность и эргономику. Возможность использования этого API в основном обеспечивается моделью разрешений, которая предоставляет доступ только одному HID-устройству за раз. В ответ на запрос пользователя пользователь должен предпринять активные действия для выбора конкретного HID-устройства.

Чтобы понять компромиссы безопасности, ознакомьтесь с разделом «Вопросы безопасности и конфиденциальности» спецификации WebHID.

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

Обратите внимание, что чувствительные к безопасности HID-устройства (например, устройства FIDO HID, используемые для более строгой аутентификации) также блокируются в Chrome.См. Файлы черного списка USB и HID.

Отзыв №

Команда Chrome хотела бы услышать о ваших мыслях и опыте работы с WebHID API.

Расскажите о дизайне API #

Есть что-то в API, что не работает должным образом? Или отсутствуют методы или свойства, необходимые для реализации вашей идеи?

Укажите проблему со спецификацией в репозитории GitHub WebHID API или добавьте свое мнение к существующей проблеме.

Сообщить о проблеме с реализацией #

Обнаружили ли вы ошибку в реализации Chrome? Или реализация отличается от спецификации?

Сообщите об ошибке на https: // new.crbug.com. Обязательно укажите как можно больше подробностей, предоставьте простые инструкции по воспроизведению ошибки и установите для параметра Components значение Blink> HID . Glitch отлично подходит для быстрого и легкого обмена репродукциями.

Показать поддержку #

Планируете ли вы использовать API WebHID? Ваша общедоступная поддержка помогает команде Chrome определять приоритеты функций и показывает другим поставщикам браузеров, насколько важна их поддержка.

Отправьте твит на @ChromiumDev с хэштегом #WebHID и сообщите нам, где и как вы его используете.

Полезные ссылки #

Благодарности #

Спасибо Мэтту Рейнольдсу и Джо Медли за рецензии на эту статью. Красно-синее фото Nintendo Switch от Сары Курфесс и черно-серебристое фото ноутбука от Athul Cyriac Ajay на Unsplash.

Последнее обновление: Улучшить статью

Что такое устройство интерфейса пользователя (HID)? Какая роль?

HID (сокращение от Human Interface Device) — «Human Interface Device» — термин, который звучит незнакомо, но на самом деле очень знаком и придает большое значение говорящим пользователям компьютеров.Общее.

Проще говоря, HID — это стандарт компьютерных устройств, управляемых человеком. Этот стандарт позволяет устройствам легко использовать и взаимодействовать друг с другом без необходимости в дополнительном программном обеспечении или драйверах.

Стандарт для упрощения подключения аксессуаров

Говоря более подробно, «HID — это стандарт, созданный для упрощения установки устройства ввода.

До того, как появилась концепция HID, для каждого типа устройства ввода использовалось несколько конкретных протоколов.Это означает, что если вы хотите подключить мышь к компьютеру, вам понадобится отдельный протокол. Точно так же для той же клавиатуры нужен отдельный протокол и т. Д. Устройства, которые хотят подключиться к компьютеру, должны либо использовать существующие протоколы, либо создавать собственные драйверы. Это усложняет установку и настройку устройства и отнимает много времени.

Между тем, HID-совместимое устройство будет поставляться с «пакетом данных», содержащим все необходимые действия устройства. Например, на клавиатуре может быть клавиша для регулировки громкости.Когда эта клавиша нажата, «дескриптор HID» сообщает компьютеру, где в пакетах хранится цель этого действия, и оно будет выполнено немедленно.

Протокол HID значительно упрощает производителям аксессуаров для ПК создание устройств с широкой совместимостью. Все современные операционные системы поддерживают протокол HID. Вы можете подключить USB-клавиатуру к ПК с Windows, Mac, Chromebook или даже к планшету Android, и она сразу заработает. Все благодаря HID.

Говоря словами клиента, большинство операционных систем (ОС) распознают базовые HID-устройства, такие как мышь и клавиатура, без необходимости в специальном драйвере. Это также предварительное условие для Plug and Play (PnP) — полезного свойства USB-устройств.

HID и программное обеспечение

Самым большим преимуществом HID является его способность упростить подключение практически любого периферийного устройства к компьютеру, а также позволяет им немедленно начать работу. Однако это только «половина волшебства». Как насчет того, чтобы убедиться, что эти аксессуары совместимы с приложениями?

Вы можете подключить игровую консоль USB к компьютеру, и она будет управлять игрой как обычно.Даже если вы внезапно подключите контроллер во время игры, он все равно будет работать. Это отличная совместимость, которую HID обеспечивает приложениям и программам.

Когда вы подключаете HID-устройство к своему ПК, это устройство отправляет свою «личную информацию» в операционную систему. Затем операционная система автоматически интерпретирует данные и классифицирует устройство. Это позволяет распознавать приложения и игры, а также обеспечивать совместимость с устройством HID.

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

Типы HID

Как уже упоминалось, USB-периферийные устройства являются наиболее распространенными HID-устройствами, которые вы часто можете встретить при использовании компьютера.

USB-устройства

относятся к классу USB-HID, который включает популярные устройства, такие как клавиатуры, мыши, веб-камеры, сенсорные панели и игровые контроллеры. К другим менее распространенным устройствам USB-HID относятся термометры, аудио инструменты, медицинское оборудование, телефоны и тренажеры.

Другой популярный тип HID — это Bluetooth-HID. По сути, это протокол USB-HID, но с небольшими изменениями в подключении по Bluetooth. Сюда входят устройства, похожие на USB-HID, но они подключаются через Bluetooth. Например, мышь Bluetooth будет работать просто, независимо от того, подключена ли она к ПК с Windows, Mac или Chromebook.

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

Что такое HID Keyboard Device? Как установить драйверы HID-клавиатуры

Итак, вы наткнулись на термин «HID-клавиатура» в диспетчере устройств вашего компьютера и задаетесь вопросом, что это такое; или чем она отличается от ваших обычных клавиатур, или даже о том, что в первую очередь означает HID. Что ж, вот все, что вам нужно знать об устройствах HID Keyboard и о том, как решить несколько проблем, которые их беспокоят.

Что такое HID Keyboard Device?

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

Клавиатуры

HID ничем не отличаются от стандартных клавиатур PS / 2 в ноутбуках, за исключением того, что они подключаются через USB, а не встроены. Вопреки распространенному мнению, аббревиатура HID — это не термин, впервые использованный Microsoft.На самом деле это происходит из спецификаций USB, поскольку USB HID является родительским классом.

Установить драйверы HID клавиатуры

Если вы недавно обновились до Windows 10, переустановили или обновили ее, возможно, вы обнаружили, что вам нужно установить (или обновить) драйверы HID Keyboard.

В большинстве случаев вам не нужно ничего делать или загружать и устанавливать драйверы клавиатуры вручную. Обновления Windows обычно заботятся об этом, и процесс завершается в фоновом режиме без сбоев.Но бывают случаи, когда ваша клавиатура может начать вести себя странно, например, регистрировать случайные вводы и игнорировать фактические, или вообще перестать работать после загрузки Windows после переустановки.

Вот несколько способов обновления и переустановки драйверов клавиатуры и устранения проблем, с которыми вы можете столкнуться.

# 1: Обновите драйверы клавиатуры из диспетчера устройств

Чтобы установить / обновить драйверы клавиатуры, откройте RUN, нажав Winkey + R , введите «devmgmt.msc »и нажмите Enter.

В диспетчере устройств разверните ветку Клавиатуры .

Затем щелкните правой кнопкой мыши на клавиатуре и выберите Обновить драйвер .

Выбрать Автоматический поиск драйверов .

Драйверы будут установлены / обновлены автоматически. Перезагрузите компьютер, чтобы изменения вступили в силу.

Вы также можете Найдите на своем компьютере драйверы , если вы уже загрузили драйверы с веб-сайта производителя компьютера или клавиатуры.

Нажмите Обзор, найдите папку с файлом драйвера и нажмите Далее .

В качестве альтернативы вы можете щелкнуть Позвольте мне выбрать из списка доступных драйверов на моем компьютере и посмотреть, какие предложения Windows предлагает вам.

Затем выберите один из предложенных вариантов и нажмите Далее .

Если вы не можете найти вариант, снимите флажок Показать совместимое оборудование и получите полный список драйверов от разных производителей на выбор.Затем нажмите Далее .

Необходимо обновить драйверы клавиатуры. Перезагрузите компьютер, чтобы изменения вступили в силу.

# 2: удалить и переустановить драйверы

Неисправный драйвер — частая причина того, что клавиатура начинает самостоятельно создавать проблемы. Самый простой способ избавиться от этой привязки — удалить текущие драйверы и все их файлы и заново установить драйверы. Это устраняет любые проблемы, которые могут быть связаны с неисправными драйверами.

Откройте диспетчер устройств, как показано выше (Win + X). Вы также можете использовать для этого только мышь: щелкните правой кнопкой мыши кнопку «Пуск» и выберите Диспетчер устройств .

Затем щелкните правой кнопкой мыши на клавиатуре в ветви Клавиатуры и выберите Удалить устройство .

Щелкните Удалить еще раз.

Выберите Да и перезагрузите компьютер для удаления.

После перезапуска Windows автоматически установит драйверы клавиатуры по умолчанию и снова заставит клавиатуру работать.

Если клавиатура не работает после перезагрузки, это означает, что вам необходимо переустановить / обновить драйверы самостоятельно из диспетчера устройств. Но поскольку вы можете выполнить действия (описанные выше) для этого с помощью одной только мыши, это не должно быть проблемой.

HID Проблемы с клавиатурой

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

Исправления: Клавиатура не работает

Большинство вышеупомянутых проблем можно решить, просто обновив или переустановив драйверы, как показано в предыдущем разделе. Но если проблема с вашей клавиатурой не устранена, вы можете также взглянуть на следующее:

Убедитесь, что порт USB работает

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

  • Неисправная клавиатура.
  • Неисправный кабель.
  • Неисправный порт USB.

Чтобы проверить, работает ли порт USB, отключите клавиатуру HID и подключите другое устройство USB, например флэш-накопитель или мышь. Если он тоже не распознается, у вас проблема с оборудованием. Помимо исправления базовой инфраструктуры, вам также следует обойти любые USB-концентраторы, которые вы можете использовать, и подключить клавиатуру напрямую к ПК.

Конфликт обновления драйвера Windows 10

Некоторые пользователи сообщают о любопытной проблеме при сбросе Windows 10.Функциональная клавиатура перестает работать, как только драйверы устройства обновляются автоматически с помощью обновления Windows.

В таких случаях проблема заключается в драйверах, которые Windows обновляет самостоятельно. Быстрое решение этой проблемы — отключить обновление Windows и установить драйверы (как показано выше) вручную. Многие производители устройств размещают на своих веб-сайтах собственные приложения, которые предоставляют подходящие драйверы для вашей системы и постоянно обновляют их.

Единственным недостатком этого решения является то, что мы должны держать обновления Windows выключенными, чтобы избежать конфликта между драйверами, которые мы установили вручную, и теми, которые обновление Windows хочет нам навязать. Однако вы можете сначала попытаться создать точку восстановления системы и снова включить обновления, чтобы проверить, работает ли ваша клавиатура.

Отключить ключи фильтров

Наконец, FilterKeys — функция «облегчения доступа», которая указывает Windows игнорировать повторяющиеся или слишком короткие нажатия клавиш. Однако из-за этого параметра клавиатура может вести себя странно, например регистрировать нажатие клавиши, когда оно не было выполнено, или вообще не регистрировать нажатие клавиши.

Лучше оставить ключи фильтров выключенными.Для этого нажмите Win + I и откройте «Настройки». Щелкните Простота доступа .

Прокрутите вниз и выберите Клавиатура на левой панели.

Теперь справа, в разделе «Использовать ключи фильтра», выключите кнопку и снимите флажок «Разрешить ярлыку для запуска файловых ключей».

Вы также можете один раз обновить / переустановить драйверы на всякий случай. Затем перезагрузите компьютер. Этот метод должен обновить драйверы и предотвратить вмешательство других функций во ввод данных.

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

Используйте модуль устройства интерфейса человека (HID)

Модуль Python hid обеспечивает программный доступ к USB-устройству интерфейса пользователя (HID) из сценария Python.

Например, чтобы определить информацию о клавиатуре, подключенной через USB:

  1. Войдите в командную строку LR54 как пользователь с доступом к оболочке.

    В зависимости от конфигурации вашего устройства вам может быть представлено меню выбора Доступ . Введите shell , чтобы получить доступ к оболочке устройства.

  2. В командной строке введите команду python без параметров для входа в интерактивный сеанс Python:

     # python
    Python 3.6.13 (по умолчанию, 9 мая 2021 г., 22:49:59)
    [GCC 8.3.0] в Linux
    Для получения дополнительной информации введите «помощь», «авторские права», «кредиты» или «лицензия».>>>
     
  3. Импорт модуля hid :
  4. >>> import hid
    >>> 
  5. Используйте функцию enumerate (), чтобы вернуть информацию о клавиатуре:
    >>> hid.enumerate () 

    Это возвращает следующее:

    [{'path': b '/ dev / hidraw0', 'vendor_id': 1008, 'product_id': 36, 'serial_number': '', 'release_number': 768,
    «Manufacturer_string»: «CHICONY», «product_string»: «Базовая USB-клавиатура», «usage_page»: 18432, «usage»: 17481,
    'interface_number': 0}] 
  6. Используйте vender_id и product_id для возврата конкретной информации о клавиатуре или для чтения ввода с клавиатуры:
  7.  >>>
    спрятался. Устройство (1008,36) .продукт 

    Возвращает информацию о клавиатуре:

    «Базовая USB-клавиатура» 
  8. Для чтения ввода с клавиатуры:

  9.  >>>
    hid.Device (1008,36) .read (64) 

    Что возвращает:

    б '\ x00 \ x00, \ x00 \ x00 \ x00 \ x00 \ x00' 
  10. Используйте Ctrl-D для выхода из сеанса Python.Вы также можете выйти из сеанса, используя exit () или quit () .

Справка для модуля hid

  • Войдите в командную строку LR54 как пользователь с доступом к оболочке.

    В зависимости от конфигурации вашего устройства вам может быть представлено меню выбора Доступ . Введите shell , чтобы получить доступ к оболочке устройства.

  • В командной строке введите команду python без параметров для входа в интерактивный сеанс Python:

     # python
    Python 3.6.13 (по умолчанию, 9 мая 2021 г., 22:49:59)
    [GCC 8.3.0] в Linux
    Для получения дополнительной информации введите «помощь», «авторские права», «кредиты» или «лицензия».
    >>>
     
  • Импортируйте модуль hid :
     >>> import hid
    >>> 
  • Используйте команду help с hid :
     >>> help (hid)
    Справка по скрытому пакету:
    
    ИМЯ
        спрятался
    
    СОДЕРЖИМОЕ ПАКЕТА
    
    КЛАССЫ
        _ctypes. Структура (_ctypes._CData)
            Информация об устройстве
        builtins.Exception (builtins.BaseException)
            СКРЫТЬисключение
        builtins.object
            Устройство
    ...
    >>> 
  • Используйте Ctrl-D для выхода из сеанса Python. Вы также можете выйти из сеанса, используя exit () или quit () .

  • % PDF-1.5 % 2134 0 объект > эндобдж xref 2134 137 0000000016 00000 н. 0000004000 00000 н. 0000004186 00000 п. 0000004316 00000 н. 0000004353 00000 п. 0000004776 00000 н. 0000004886 00000 н. 0000004992 00000 н. 0000005096 00000 н. 0000005205 ​​00000 н. 0000005315 00000 н. 0000005425 00000 н. 0000005464 00000 н. 0000005543 00000 н. 0000005621 00000 н. 0000006570 00000 н. 0000007097 00000 п. 0000007733 00000 н. 0000008302 00000 н. 0000008867 00000 н. 0000009099 00000 н. 0000009325 00000 н. 0000009999 00000 н. 0000010145 00000 п. 0000010451 00000 п. 0000011358 00000 п. 0000012215 00000 п. 0000013059 00000 п. 0000013936 00000 п. 0000016629 00000 п. 0000016717 00000 п. 0000020069 00000 п. 0000020329 00000 п. 0000020556 00000 п. 0000023717 00000 п. 0000023758 00000 п. 0000023819 00000 п. 0000023965 00000 п. 0000024083 00000 п. 0000024301 00000 п. 0000024443 00000 п. 0000024617 00000 п. 0000024833 00000 п. 0000024937 00000 п. 0000025111 00000 п. 0000025281 00000 п. 0000025385 00000 п. 0000025517 00000 п. 0000025663 00000 п. 0000025841 00000 п. 0000025975 00000 п. 0000026161 00000 п. 0000026361 00000 п. 0000026527 00000 п. 0000026705 00000 п. 0000026893 00000 п. 0000027059 00000 п. 0000027241 00000 п. 0000027415 00000 п. 0000027611 00000 п. 0000027785 00000 п. 0000027915 00000 н. 0000028061 00000 п. 0000028175 00000 п. 0000028299 00000 п. 0000028427 00000 п. 0000028631 00000 п. 0000028799 00000 п. 0000028999 00000 н. 0000029191 00000 п. 0000029415 00000 п. 0000029549 00000 п. 0000029691 00000 п. 0000029833 00000 п. 0000029985 00000 п. 0000030133 00000 п. 0000030297 00000 п. 0000030481 00000 п. 0000030613 00000 п. 0000030827 00000 п. 0000030953 00000 п. 0000031079 00000 п. 0000031217 00000 п. 0000031347 00000 п. 0000031489 00000 п. 0000031623 00000 п. 0000031775 00000 п. 0000031925 00000 п. 0000032071 00000 п. 0000032225 00000 п. 0000032385 00000 п. 0000032561 00000 п. 0000032697 00000 п. 0000032895 00000 п. 0000033009 00000 п. 0000033141 00000 п. 0000033303 00000 п. 0000033429 00000 п. 0000033555 00000 п. 0000033689 00000 п. 0000033839 00000 п. 0000033985 00000 п. 0000034139 00000 п. 0000034315 00000 п. 0000034477 00000 п. 0000034647 00000 п. 0000034811 00000 п. 0000034955 00000 п. 0000035107 00000 п. 0000035285 00000 п. 0000035413 00000 п. 0000035591 00000 п. 0000035763 00000 п. 0000035939 00000 п. 0000036129 00000 п. 0000036305 00000 п. 0000036461 00000 н. 0000036599 00000 н.

    Leave a comment