This topic provides a brief overview about USB bulk transfers. I have for a long time been wanting to do a Custom USB class driver on the RT106x devices.Each USB transfer is one packet, which can be up to 64 bytes if using bulk type. If you want to send more than 64 bytes, you have to use multiple packets. I am using libusb on Ubuntu and am attempting to send 4 bytes of data via an asynchronous bulk transfer. I am able to successfully perform the following steps. 1) if I want to use multiple endpoints to speed up communication, how can I do this, which changes I need to do in code..? What is the difference if I assign the Bulk In and Bulk Out on different endpoints? Bulk Transfers are used for data which are not of the type Control, Interrupt, or Isochronous. In my receive callback, after each packet received, it increments the address for the new packet, and at the end of the transfer it swap the buffers.