What does macOS kernel return 0xE0004046 (kIOUSBEndpointCountExceeded) mean?

 
Previous Next
kIOUSBDeviceCountExceeded kIOUSBDevicePortWasNotSuspended

kIOUSBEndpointCountExceeded

The device can exist while one endpoint cannot

kIOUSBEndpointCountExceeded is more specific than a device-count failure. The controller has already reached the point of creating an endpoint, but cannot allocate another endpoint context or equivalent controller resource. It is therefore possible for the device to be visible while a particular interface configuration cannot become usable.

The relevant unit is the active configuration and interface alternate setting, not just the number of physical USB devices. Selecting another alternate setting changes the pipe set; Apple documents that changing an alternate setting aborts outstanding I/O, closes open pipes, and invalidates existing IOUSBHostPipe objects.

How to narrow the cause

  • Record the configuration value, interface number, alternate setting, and each endpoint descriptor that the driver attempted to activate.
  • Compare the failing configuration with one that works. A feature-rich alternate setting can require more endpoints than a basic mode of the same device.
  • Check the USB controller and dock or hub topology for other active devices that consume endpoint resources on the same controller.
  • After an alternate-setting change, rebuild pipe references and requeue only operations that the device protocol permits to be repeated; a cached pipe object is not valid evidence after the switch.

References


Looking for a different code? Search another status or error code.