| Previous | Next |
| kIOReturnNotOpen | kIOReturnNotWritable |
kIOReturnNotReadable
Capability versus temporary failure
kIOReturnNotReadable says that reading is not supported for the requested object or operation. Unlike a timeout or not-ready result, it is normally a capability or mode mismatch. A control-only device interface, a write-only stream, an output endpoint, or a service opened through the wrong API can legitimately reject a read even though the hardware is otherwise healthy.
Do not treat it as evidence that the data is temporarily unavailable. Retrying the identical read against the same object will usually return the same result. The recovery is to examine the interface contract, active configuration, endpoint direction, and access mode, then choose an API that actually exposes readable data.
What to check
- Verify whether the selected interface and endpoint are documented as input-capable.
- Confirm that the current alternate setting or device mode exposes the expected endpoint set.
- Separate data-plane reads from status or control requests; they can use different interfaces and permissions.
- For user-space tools, log descriptor information and the exact interface selection rather than only the device name.
References
- Apple IOReturn.h reference
- Apple: Working With USB Device Interfaces
- USB-IF: USB 2.0 Specification
- libusb API reference
Looking for a different code? Search another status or error code.