What does macOS kernel return 0xE00002EE (kIOReturnIsoTooOld) mean?

 
Previous Next
kIOReturnNotResponding kIOReturnIsoTooNew

kIOReturnIsoTooOld

The requested start time has already passed

kIOReturnIsoTooOld is an IOKit timing result for an isochronous request scheduled too far in the past. Isochronous I/O uses a frame-based schedule rather than an open-ended byte stream. In Apple’s legacy USB interface, the caller supplies the bus frame number on which an isochronous write should start; by the time the driver receives the request, that frame can already be outside the controller’s acceptable scheduling window.

This is not the same as an ordinary timeout. A timeout says an operation did not complete within an allowed wait; kIOReturnIsoTooOld says the requested schedule was invalid before the transfer could be placed. The safe correction is to obtain a current frame value and resubmit with an appropriate lead time, not to reuse the stale start frame.

How to diagnose it

  • Log the requested start frame, the current bus frame, transfer duration, and the delay between computing and submitting the request.
  • Keep scheduling and submission close together; avoid computing a frame number on one thread and queueing it much later on another.
  • Account for queue stalls caused by mode changes, debugger pauses, CPU contention, or blocking work in the producer path.
  • Use a documented lead-time policy for the specific device and controller; the allowable window is not implied by the IOReturn value alone.

References


Looking for a different code? Search another status or error code.