| Предыдущий | Следующий |
| 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, сообщённый приложением.
- Запишите согласованную скорость шины и путь контроллера. Устройство с разными конфигурациями или альтернативными настройками может проявлять сбой только на одном пути.
- Исправьте прошивку устройства или генератор дескрипторов. Повтор одного и того же запроса не сделает недопустимую цепочку дескрипторов корректной.
Ссылки
- Apple: коды ошибок IOUSBFamily
- Apple: SuperSpeed Endpoint Companion Descriptor
- Apple: дескрипторы USB-устройств
Нужно найти другой код? Найти другой код состояния или ошибки.