| Previous | Next |
| kIOReturnOffline | kIOReturnNotAttached |
kIOReturnNotReady
Readiness is not presence
kIOReturnNotReady is a transient readiness result. IOKit recognizes the device, yet the driver cannot perform the requested action at that moment. Typical examples include media initialization, a device waking from a low-power state, a controller completing reset or enumeration, or a storage service waiting for a lower layer to become usable.
The practical distinction is important: a retry can be reasonable, but only after observing a state change or applying a bounded delay. Raising timeouts blindly is not a fix if readiness never arrives because of a failed configuration, missing media, power problem, or a driver that is not progressing through its startup path.
How to handle it safely
- Capture the device state, power state, active configuration, and elapsed time since attach or wake.
- Use the family’s readiness notifications or documented asynchronous completion path where available.
- Back off retries and cap their total duration; expose a meaningful timeout to the caller.
- After the deadline, distinguish an unchanged not-ready state from removal, no media, or no response before choosing recovery.
References
- Apple IOReturn.h reference
- Apple IOKit Fundamentals: Architectural Overview
- USB-IF: USB 2.0 Specification
Looking for a different code? Search another status or error code.