Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши
Как отлаживать переключение USB HID Boot Protocol и Report Protocol, запросы SetProtocol, BIOS-режим клавиатуры, report IDs, потерянные клавиши и совместимость HID-прошивок.
USB HID-клавиатуры и мыши могут использовать Boot Protocol или Report Protocol. Пользователи ищут «HID Boot Protocol», «HID Report Protocol», «USB keyboard BIOS mode», «SetProtocol HID», «keyboard works in BIOS but not OS», «HID report ID missing keys», когда ввод работает в одной среде и ломается в другой.
Bus Scope полезен, потому что хост может слать HID-класс-запросы, которые меняют формат репортов устройства. Если прошивка игнорирует SetProtocol или шлёт неправильный формат репорта, клавиши могут пропадать, даже если устройство перечислилось корректно.
Boot Protocol
Boot Protocol — упрощённый HID-формат, используемый BIOS, UEFI, pre-boot-средами и простыми стеками. Он позволяет базовым клавиатурам и мышам работать до того, как доступен полный HID-парсер.
Симптомы с участием Boot Protocol:
- Клавиатура работает в BIOS, но ломается в ОС.
- Клавиатура работает в ОС, но не в boot-меню.
- Спецклавиши пропадают в pre-boot-режиме.
- Мышь работает только после загрузки ОС.
- Прошивка шлёт report IDs, когда boot-репорт их не ожидает.
Диагностический вопрос — какой протокол выбрал хост.
Report Protocol
Report Protocol использует HID report descriptor. Он поддерживает более богатые раскладки, report IDs, вендорные репорты, медиа-клавиши, датчики и составное поведение.
Если хост переключается на Report Protocol, а устройство продолжает слать Boot-репорты, ОС может неверно парсить ввод. Если хост запрашивает Boot Protocol, а устройство шлёт Report Protocol, BIOS может игнорировать репорты.
Запрос SetProtocol
HID-класс-запрос SetProtocol может переключать между Boot Protocol и Report Protocol для поддерживаемых устройств.
Что собрать:
- HID interface descriptor.
- Значения Boot subclass и protocol.
- Report descriptor.
- Запрос
SetProtocol. - Значение протокола, выбранное хостом.
- Байты interrupt IN-репорта до и после переключения.
Bus Scope может сделать эту последовательность видимой.
Report IDs и потерянные клавиши
Report Protocol может использовать report IDs. Boot Protocol часто ожидает фиксированный размер репорта без report ID-префикса.
Частые баги прошивки:
- Устройство включает report ID в Boot Protocol.
- Устройство опускает report ID в Report Protocol.
- Устройство меняет размер репорта, а дескриптор не совпадает.
- Медиа-клавиши только во вторичном репорте.
- NKRO-репорт отправляется до того, как хост его включил.
- Клавиатура шлёт вендорный репорт на endpoint клавиатуры.
Эти баги порождают запросы вроде «USB keyboard missing keys» и «HID report ID wrong».
Поведение BIOS и ОС
BIOS и UEFI обычно строже и проще, чем полные ОС. Клавиатура может отлично работать на Windows или Linux, но ломаться до загрузки.
Полезное сравнение:
- Захват во время pre-boot, если возможно с внешним анализатором.
- Захват после загрузки ОС.
- Сравнение поведения SetProtocol.
- Сравнение формата payload репорта.
- Проверка, сбрасывается ли устройство между средами.
Даже если pre-boot-захват сложен, OS-сторонние данные SetProtocol могут вскрыть предположения прошивки.
Чек-лист отладки
Используйте такой процесс:
- Захватите перечисление.
- Изучите HID interface subclass и protocol.
- Изучите HID report descriptor.
- Найдите запросы SetProtocol.
- Декодируйте выбранный протокол.
- Сравните interrupt IN-репорты до и после.
- Проверьте использование report ID.
- Проверьте обычные и медиа-клавиши.
- Сравните поведение в BIOS, bootloader, Windows и Linux.
- Сохраните дескриптор и байты репорта вместе.
Итоговый диагноз
Сбои HID Boot Protocol и Report Protocol — это проблемы negotiation формата репорта. Устройство может перечислиться корректно, но слать репорты в неверном протокольном формате.
Bus Scope помогает доказать, идут ли потерянные клавиши, проблемы ввода в BIOS или несовместимость HID от обработки SetProtocol, report IDs, несовпадения дескрипторов или форматирования репорта прошивкой.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Проверка USB-контракта для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши»
Краткий ответ: STALL, timeout или reset сам по себе не объясняет причину. Сначала докажите, что provider видит нужный device, затем прочитайте контракт transfer: тип, направление, recipient, wValue, wIndex, заявленная и фактическая длина, status и состояние до/после. Свяжите вывод с первой транзакцией, отличающейся от исправного запуска.
| Граница | Сравнение | Решение |
|---|---|---|
| Платформа | provider, права, Root Hub или usbmon/XHC20 | Records относятся к нужному соединению? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | Host отправил ожидаемый запрос? |
| Data | направление, длина и сохранённые bytes | Payload соответствует контракту? |
| Status | ACK, STALL, timeout или cancellation | Где завершилась транзакция? |
| Состояние | configuration, interface, alternate setting, halt | Device был готов к запросу? |
Начинайте до reset и enumeration, сохраняя descriptors, SET_CONFIGURATION, SET_INTERFACE и command перед отказом. Узкий endpoint filter может скрыть решающий control transfer. В одном опыте выполняйте одно USB-действие и меняйте только firmware, driver, port, cable, host command или timing.
Как написать цитируемый ответ?
Укажите request, setup fields, ответ и предыдущее состояние, затем тест с одной переменной. Не сохранённые из-за retention bytes не доказывают packet loss. Близость command и reset показывает корреляцию, но не причину без повторения или перехода состояния.
Сохраняйте VID/PID, firmware, speed, topology, provider, filter и trigger. Сравнивайте смысловые USB-фазы, а не frame numbers usbmon и USBPcap. Запишите начало, конец, версию, OS, подключение и checksum. Используйте устранение неполадок Bus Scope.
Semrush owners разделены: free USB analyzer принадлежит продукту, best USB protocol analyzer — сравнению, USB descriptor viewer — руководству descriptor. Для этой support-страницы не создаётся выдуманный volume или KD.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Прямой ответ и граница приемки
Краткий ответ по теме «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши»: Как отлаживать переключение USB HID Boot Protocol и Report Protocol, запросы SetProtocol, BIOS-режим клавиатуры, report IDs, потерянные клавиши и совместимость HID-прошивок. Считайте это проверяемым результатом, а не обещанием для любого входа, устройства, проекта или окружения. Полный результат фиксирует исходное состояние, точное действие, видимый выход и условие, подтверждающее завершение задачи в Bus Scope.
Порядок работы от доказательств
Начните с небольшого повторяемого случая до изменения полного проекта. Запишите версию приложения, систему, идентификатор входа или устройства, важные настройки и ожидаемый результат. Выполните одно осознанное действие, сохраните первый неожиданный переход и сравните с исправным случаем, если он есть. Одновременная смена нескольких параметров скрывает условие, создавшее или устранившее проблему.
Контрольная точка 1: Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, repor
Сформулируйте для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 2: Как отлаживать переключение USB HID Boot Protocol и Report Protocol, запросы SetProtocol,
Рассматривайте «Как отлаживать переключение USB HID Boot Protocol и Report Protocol, запросы SetProtocol, BIOS-режим клавиатуры, report IDs, потерянные клавиши и совм» как отдельную границу приемки для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 3: Boot Protocol
Сформулируйте для «Boot Protocol» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 4: Report Protocol
Рассматривайте «Report Protocol» как отдельную границу приемки для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 5: Запрос SetProtocol
Сформулируйте для «Запрос SetProtocol» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 6: Report IDs и потерянные клавиши
Рассматривайте «Report IDs и потерянные клавиши» как отдельную границу приемки для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 7: Поведение BIOS и ОС
Сформулируйте для «Поведение BIOS и ОС» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 8: Чек-лист отладки
Рассматривайте «Чек-лист отладки» как отдельную границу приемки для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 9: Итоговый диагноз
Сформулируйте для «Итоговый диагноз» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 10: Проверка USB-контракта для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим кл
Рассматривайте «Проверка USB-контракта для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши»» как отдельную границу приемки для «Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Матрица приемки
| Точка | Сохраняемое доказательство | Критерий успеха |
|---|---|---|
| Отладка USB HID Boot Protocol и Report Protocol: BIOS-режим клавиатуры, SetProtocol, report IDs и потерянные клавиши | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Как отлаживать переключение USB HID Boot Protocol и Report Protocol, запросы SetProtocol, BIOS-режим клавиатуры, report | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Boot Protocol | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Report Protocol | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Запрос SetProtocol | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Report IDs и потерянные клавиши | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
Изоляция, восстановление и передача
Остановитесь на первой неуспешной границе. Сохраните источник, проект, сеанс или захват, сделайте копию перед разрушающим редактированием и меняйте одну переменную за опыт. Повтор широкого процесса после нескольких изменений может дать иной результат без объяснения причины.
Отличайте отсутствие доказательств от доказательства отсутствия. Пустой экран может означать неверный вход, область, фильтр, права, устройство, период или состояние проекта. Подтвердите получение или импорт до толкования decoder, редактора, отчета или экспорта.
Перед передачей повторно откройте артефакт и проверьте начало, точку решения и конец. Запишите версию, платформу, конфигурацию, ожидание, наблюдение и минимальное воспроизведение. Удалите или скройте чувствительные данные и проверьте полномочия получателя.
Вопросы и ответы
Как надежнее всего начать?
Возьмите минимальный репрезентативный случай, запишите ожидаемый результат и меняйте одну переменную. Подтвердите базовый путь до добавления фильтров, эффектов, правок, автоматизации или большого источника.
Какие доказательства сохранять?
Сохраните идентификатор входа, версию, платформу, настройки, точное действие, первый неожиданный переход и конечный выход. Закройте и повторно откройте проект, сеанс, отчет или экспорт.
Когда повторять процедуру?
После значимого изменения приложения, системы, драйвера, прошивки, модели, источника или процесса. Сохраните предыдущий принятый случай как неизменную основу сравнения.
Когда результат готов к передаче?
Когда другой уполномоченный человек определяет вход, повторяет действие, видит тот же результат, понимает ограничения и открывает артефакт без недокументированного локального состояния.
Связанные руководства
Эти страницы на том же языке описывают соседние этапы, не меняя канонического владельца темы:
<!-- multilingual-blog-closeout:end -->