Four Types Of IN And OUT Transfers In The USB Specification

- May 25, 2018-

There are four types of IN and OUT transfers in the USB specification: bulk transmission, synchronous transmission, interrupt transmission, and control transmission.

Bulk transfers are used to reliably transfer data between the host and the device. All USB transfers carry a CRC (Checksum), which indicates if an error has occurred. In a bulk transmission, the receiving end of the data must verify the CRC. If the CRC is correct, the transmission is answered and the data is assumed to have been transmitted without error. If the CRC is incorrect, the transmission will not be answered and will be retried. If the device is not ready to receive data, it will send a NAK signal, which will cause the host to retry the transmission.

Synchronous transfer is used to transfer data between the host and the device in real time. If the host establishes a synchronous endpoint, the host allocates a certain amount of bandwidth to the isochronous endpoint, and it will perform IN transmission or OUT transmission regularly on the endpoint. For example, the host can export 1 KB of data to the device every 125 μs. Due to the fixed, limited amount of bandwidth allocated, there will be no time to retransmit data if any anomalies occur. The data has a normal CRC, but if the receiver detects an error, there will be no retransmission mechanism.

Interrupt transmission is used by the host to periodically interrogate the device to find out if something is worth doing. For example, the host can poll the audio device and check if the MUTE button has been pressed. The name "interrupted" transmission is a bit confusing because it does not interrupt anything. However, regular polling of the data gives the same type of functionality that the host interrupt will provide.

Control transmission is very similar to bulk transmission. Control transmissions are answered and transmitted in a non-real-time manner. Control transfers are used for operations other than normal data flow, such as querying device capabilities or endpoint status. Description of Device Functional Description Outside the scope of this article, this article only describes predefined types such as "USB Audio Class" or "USB Mass Storage Class", which can realize cross-platform interoperability.

     All transmission types are defined in the USB frame. The high-speed USB frame has a length of 125 μs (Full Speed USB frame is 1 ms) and is marked by the host sending a start of frame (SOF) message. Synchronous transmission and interrupt transmission are sent at most once per frame.
