| Previous | Next |
| kIOReturnNotReady | kIOReturnNoChannels |
kIOReturnNotAttached
How it differs from a missing device
kIOReturnNotAttached usually identifies an attachment or topology state rather than a malformed request. The target may still have a registry representation, but it is not attached to the provider, controller, transport path, or logical hierarchy expected by the IOKit family handling the call. This distinction matters during hot-plug, wake from sleep, driver stop/start, and device reconfiguration.
It is therefore more specific than a generic I/O failure but not enough to diagnose a bad cable, a hub issue, a driver match failure, or a deliberate detach on its own. In IOKit’s layered model, services can be added and removed dynamically; applications must treat an object’s existence and its readiness for a particular operation as separate facts.
What to inspect
- Check the I/O Registry path and whether the service has a live provider at the time of failure.
- Correlate the error with attach, detach, terminate, wake, and power-management notifications.
- For USB, capture the active configuration and interface before and after re-enumeration rather than assuming endpoint identities survive it.
- Close stale user-client or interface objects and reacquire them through the documented discovery path.
References
- Apple IOReturn.h reference
- Apple IOKit Fundamentals: Architectural Overview
- Apple: Working With USB Device Interfaces
Looking for a different code? Search another status or error code.