| Previous | Next |
| kIOUSBReserved2Err | kIOUSBBufferUnderrunErr |
kIOUSBBufferOverrunErr
Host-side buffer accounting, not an endpoint halt
kIOUSBBufferOverrunErr is a legacy IOUSBFamily status for a transfer in which the USB stack or controller path could not contain the amount of data associated with the request. The AllStat source describes it as a buffer overrun and notes a host hardware or PCI-bus condition as a possible context. It therefore does not identify a class-protocol error by itself and should not be treated as the same condition as an endpoint STALL.
The direction matters. Record whether the transfer was IN or OUT, the requested length, the completed length when available, and the DMA or controller path. A short application buffer, a descriptor length mismatch, and a controller-side completion problem can look similar at the API boundary but require different fixes.
Evidence worth keeping
- Keep the endpoint address, transfer type, direction, requested byte count, completion byte count, and the status of neighboring transfers.
- Correlate the error with controller reset, sleep/wake, hub reconnect, PCIe or Thunderbolt events, and the exact device configuration.
- Compare the buffer size supplied by the client with the maximum packet and protocol message sizes; do not infer that every extra byte came from the USB device.
- Do not replay a non-idempotent operation until the device protocol establishes whether it accepted the original command.
References
Looking for a different code? Search another status or error code.