| Previous | Next |
| kIOUSBEndpointCountExceeded | kIOUSBClearPipeStallNotRecursive |
kIOUSBDevicePortWasNotSuspended
A power-state precondition was false
kIOUSBDevicePortWasNotSuspended means that an operation which expected the device port to be in suspend state found it active. It is a port-state mismatch, not proof that the device is malfunctioning. The distinction matters because the opposite status, kIOUSBPortWasSuspended, is returned when an existing transfer is sent back because suspension occurred.
USB power management changes the conditions under which transactions can be queued or resumed. A request that races with resume, hub activity, or a controller state transition can observe a different port state than the caller assumed. The trace should therefore include the state transition, not just the final USB return value.
Verify the state transition
- Record the target port, upstream hub path, controller, and whether the operation was part of suspend, resume, reset, or recovery code.
- Serialize port-state operations so that two clients do not make contradictory suspend assumptions about the same device.
- Check actual port state before performing an action whose documented precondition is suspension.
- Do not mask the status by issuing a generic reset; first identify whether the caller used an invalid state transition.
References
Looking for a different code? Search another status or error code.