What does macOS kernel return 0xE0004043 (kIOUSBInvalidSSEndpoint) mean?

 
Previous Next
kIOUSBTooManyTransactionsPending kIOUSBStreamsNotSupported

kIOUSBInvalidSSEndpoint

SuperSpeed endpoint descriptors are a set

kIOUSBInvalidSSEndpoint is raised by the macOS USB stack when it cannot accept an endpoint declared by a SuperSpeed device. The definition in IOKit/usb/USB.h specifically calls out a missing Endpoint Companion Descriptor as the usual cause. For SuperSpeed, the endpoint description is not limited to the ordinary endpoint descriptor: the companion descriptor carries transport parameters used to configure the endpoint.

This is therefore a descriptor or configuration problem, not a generic transfer failure. It differs from kIOUSBEndpointCountExceeded, where a valid endpoint cannot be created because the controller has reached a limit, and from kIOUSBStreamsNotSupported, where the endpoint is valid but the host controller lacks a requested capability.

What to inspect

  • Capture the complete configuration-descriptor tree from the device, including the active configuration, interface number, alternate setting, endpoint descriptor, and the descriptor immediately following it.
  • Check descriptor ordering, lengths, endpoint address, transfer type, and the SuperSpeed companion data rather than inspecting only the endpoint number reported by an application.
  • Record the negotiated bus speed and the controller path. A device that exposes different configurations or alternate settings can make the failure appear only on one path.
  • Correct the device firmware or descriptor generator. Retrying the same request cannot make an invalid descriptor chain valid.

References


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