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

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

kIOUSBDeviceCountExceeded

При перечислении достигнут предел контроллера хоста

kIOUSBDeviceCountExceeded означает, что USB-контроллер не смог выделить ресурсы для перечисления ещё одного устройства. В архитектуре xHCI контексты и слоты устройств управляются контроллером. Это отличается от некорректного дескриптора устройства: ограничивающим фактором является контроллер и его текущая топология, а не обязательно вновь подключённое периферийное устройство.

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

Данные до внесения изменений

  • Сохраните USB-дерево из System Information или I/O Registry, включая концентраторы, контроллеры док-станций, внутренние устройства и контроллер, владеющий неудачным портом.
  • Сохраните сообщения контроллера и ядра при попытке перечисления. Они отличают нехватку ёмкости от ошибок питания, дескриптора или линии, которые на уровне приложения могут выглядеть похоже.
  • Переместите периферийное устройство на порт другого контроллера либо уменьшите дерево устройств насыщенного контроллера и сравните результат.
  • Не переписывайте конфигурацию устройства или дескрипторы конечных точек для устранения именно этого статуса; они относятся к другим сбоям, например исчерпанию ёмкости конечных точек.

Ссылки


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