I have a similar problem. I used the bulk dma manual in/out, and if the host does a read (Ubuntu) before any writes, which returns zero bytes and fail, and then do a write followed by read, the read and all subsequent reads fail. But on Windows, it is fine.
I'm starting to wonder if there is some incompatibility between libusb and FX3.
Did you ever solve your problem?
Not yet, no. We just encountered it a few days ago and for now implemented a workaround in our software (limit the number of writes if there was no read).
I could reproduce your behavior with the dma manual in/out image. Strangely enough, after the first write/read fails, the next write works again (sequence: read (fail), write(fail), read(timeout), write(works), read(works) )
I have a similar problem:
I am using the cypress FX3 and libusb on linux. The FX3 is connected to an FPGA which sends a data streaming on the USB connection.
It is also possible to read simple user-configuration registers from the FPGA through the USB channel.
I am actually able to read those user-configuration register (each register is 32 bit) but, as soon as I enable the data stream, libusb function returns a timeout error without reading anything.
After the error, I need to reset the FX3 to bring up again the communication.
The strange thing is that the error pops up when the FX3 is connected to a USB3.0 port. Using a USB2.0 port, everything works fine
Did you solve your problem? Could you share your solution?