Linux USB Device Driver Part2- Endpoints Differences - Control, Isochronous, Bulk, Interrupt

Control Endpoints: Used for transferring command and status information.
E.g. Resetting the device, Querying information about the device etc.

Enumeration of a USB Device is performed by a control Endpoint.
Each USB Device has a control endpoint zero, which is bidirectional
Bursty, random packets are initiated by the host and uses best effort delivery.
8 bytes packet length in low-speed devices, 8,16,32 or 64-bytes packet length in high speed devices and 64-bytes packet length in full speed devices.

Interrupt Endpoints:  Used for small and fast data transfer
E.g. Data transfer for serial port, HID Devices like keyboard, mouse etc
Can be used for low, high-speed and full speed devices
Unidirectional and periodic
Maximum packet size:
64 bytes or less for full speed devices
1024 bytes or less for high speed device

Bulk Endpoints - Used for large but slower data transfer
E.g. Data Transfers of Mass Storage Devices, printers and scanners
Bulk pipe is unidirectional, so bi-directional requires two bulk endpoints
Maximum packet size:
8, 16, 32 or 64 bytes for full speed devices
512 bytes for high speed device
cannot be used by low speed devices
non-periodic, large packet, bursty communication.

Isochronous Endpoints - Used for big transfer with bandwidth guarantee, data integrity may not be guaranteed.
E.g. Transfers of time-sensitive data like audio, video etc
Periodic and continuous
Unidirectional
No retries are made in case of error in data transfer.


Comments