Index: src/ftdi.c =================================================================== --- src/ftdi.c (revision 3932) +++ src/ftdi.c (working copy) @@ -1621,6 +1621,14 @@ int ftdi_read_data_set_chunksize(struct // Invalidate all remaining data ftdi->readbuffer_offset = 0; ftdi->readbuffer_remaining = 0; +#ifdef __linux__ + /* We can't set readbuffer_chunksize larger than MAX_BULK_BUFFER_LENGTH, + which is defined in libusb-1.0. Otherwise, each USB read request will + be divided into multiple URBs. This will cause issues on Linux kernel + older than 2.6.32. */ + if (chunksize > 16384) + chunksize = 16384; +#endif if ((new_buf = (unsigned char *)realloc(ftdi->readbuffer, chunksize)) == NULL) ftdi_error_return(-1, "out of memory for readbuffer");