Что означает код возврата ядра macOS 0xE0004043 (kIOUSBInvalidSSEndpoint)?

 
Предыдущий Следующий
kIOUSBTooManyTransactionsPending kIOUSBStreamsNotSupported

kIOUSBInvalidSSEndpoint

Дескрипторы конечной точки SuperSpeed образуют единый набор

kIOUSBInvalidSSEndpoint формируется стеком USB macOS, когда он не может принять конечную точку, объявленную устройством SuperSpeed. Определение в IOKit/usb/USB.h прямо называет обычной причиной отсутствие Endpoint Companion Descriptor. Для SuperSpeed описание конечной точки не ограничивается обычным endpoint descriptor: companion descriptor содержит параметры транспорта, необходимые для её настройки.

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

Что следует проверить

  • Сохраните полное дерево дескрипторов конфигурации устройства, включая активную конфигурацию, номер интерфейса, альтернативную настройку, дескриптор конечной точки и следующий непосредственно за ним дескриптор.
  • Проверьте порядок и длины дескрипторов, адрес конечной точки, тип передачи и данные SuperSpeed companion, а не только номер endpoint, сообщённый приложением.
  • Запишите согласованную скорость шины и путь контроллера. Устройство с разными конфигурациями или альтернативными настройками может проявлять сбой только на одном пути.
  • Исправьте прошивку устройства или генератор дескрипторов. Повтор одного и того же запроса не сделает недопустимую цепочку дескрипторов корректной.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.