Строка Class 03 Subclass 00 Protocol 00 в диспетчере устройств или выводе lsusb -v означает, что устройство заявляет себя как HID-устройство (Human Interface Device), но не указывает ни подкласс, ни протокол — то есть это нестандартное HID-устройство, не клавиатура и не мышь в классическом понимании. Именно из-за нулевых значений Subclass и Protocol операционная система иногда не может автоматически подобрать корректный драйвер, и устройство отображается с восклицательным знаком или вообще не работает.

Такая комбинация типична для программаторов, 3D-принтеров с HID-интерфейсом, кастомных контроллеров на базе STM32 или Arduino, игровых периферийных устройств и медицинских датчиков. В этой статье разберём, что означают эти поля дескриптора, почему возникают проблемы и как их диагностировать без риска для системы.

Что означают поля Class, Subclass и Protocol в USB-дескрипторе

Каждое USB-устройство при подключении сообщает хосту набор дескрипторов — структурированных данных о себе. Поле bDeviceClass (или bInterfaceClass) определяет общий тип устройства: 03 соответствует классу HID. Это устройства взаимодействия с человеком: клавиатуры, мыши, джойстики, сенсорные панели и любые кастомные контроллеры, передающие данные через HID-отчёты.

Поля Subclass и Protocol уточняют тип устройства внутри класса. Для HID спецификация определяет подкласс 01 (Boot Interface — упрощённый режим для BIOS) и протоколы 01 (клавиатура) и 02 (мышь). Значения 00/00 сигнализируют: устройство не поддерживает boot-протокол и не вписывается в стандартные категории. Полный список классов опубликован на сайте USB Implementers Forum (usb.org) в документе USB Defined Class Codes.

💡

Class 03 = HID-устройство, а Subclass 00 Protocol 00 означает отсутствие boot-интерфейса: устройство использует собственный формат HID-отчётов и требует либо generic HID-драйвера ОС, либо фирменного ПО производителя.