USB bulk transfer speed

Showing results for 
Search instead for 
Did you mean: 

USB bulk transfer speed

Contributor V


I use latest USB stack on MK22 MCU (full speed usb transceiver). I achieve approx 600 kB/s transfer rate when sending data from MCU to PC (Windows 10) via bulk endpoint.

On PC I read data using libusb (libusb_bulk_transfer(devHandle, endpoint, data, requiredSize, &actualSize, timeout)).

Can you please help in optimizing the transfer rate (i.e. achieving higher transfer rate)? Is there any configuration in USB stack which can achieve higher transfer rate? What is optimal data chunk size written to endpoint in MCU (USB_DeviceSendRequest())?

Labels (2)
1 Reply

Senior Contributor III

For full speed the packet size is a max of 64 bytes.  For high speed it is 512 bytes.

Set the Polling Interval in the endpoint descriptor to the lowest value that will not generate NAKs on the endpoints.

Minimize transactions by sending full packets (this may be out of your control in the stock library code).

USB in a NutShell - Chapter 4 - Endpoint Types