| Previous | Next |
| kIOReturnBusy | kIOReturnOffline |
kIOReturnTimeout
A deadline, not a root cause
kIOReturnTimeout means an I/O deadline elapsed. It identifies the immediate control-flow result, not the underlying reason the operation took too long. A slow or unresponsive device, an overloaded work loop, a blocked queue, a lost transport response, an unrealistic timeout, or a preceding power/configuration transition can all lead to the same status.
Timeout handling must account for whether the request may already have had an effect. Retrying a read is often harmless; retrying a state-changing command, write, or reset may duplicate work unless the protocol has an acknowledgement or idempotency rule. Capture the operation identifier and completion state before deciding whether to retry.
How to investigate
- Log the timeout value, start and end timestamps, target, and any partial completion information.
- Check for concurrent requests that can block the same driver queue or device endpoint.
- Compare the timeout with known service times under normal load before increasing it.
- After a timeout, refresh device state and handle removal/reset notifications before scheduling more work.
References
- Apple IOReturn.h reference
- Apple IOKit Fundamentals: Architectural Overview
- Apple: Working With USB Device Interfaces
- libusb API reference
Looking for a different code? Search another status or error code.