On Sun, Jan 31, 2021 at 9:37 PM Kevin Grant <elect...@mykolab.com> wrote: > > On 2021-01-31 12:58, Kevin Grant wrote: > > > Hello, > > > > I am re-using a subject line from the mailing list archive, by user > > Marcin, in an attempt to append to that thread. > > > > https://sourceforge.net/p/pyusb/mailman/pyusb-users/thread/15e9538f-386f-a637-ce2b-5eea3d04bd76%40gmail.com/ > > > > I had a simlar issue recently with a simple test application which > > opened a device and sent some OUT packets (to 512 size endpoint) thus: > > > > ..open device.. > > for i in range(n): > > dev.write(2,bytearray(os.urandom(512)) > > ..close device.. > > > > On windows, this worked fine for any 'n' but on Linux only even 'n' > > worked correctly. For odd 'n' one packet was always dropped/stuck. > > As Marcin suggested, ending with dev.reset() seemed to flush this stuck > > packet and fixed the issue. > > But using reset in this way seems wrong. > > After opening the device calling > > dev.clear_halt(2) > > Seemed to fix the issue. > > > > Regards > > Kevin > > Ah, perhaps a better solution is to write a zero-length packet to > signify end of data stream... > > ..open device.. > for i in range(n): > dev.write(2,bytearray(os.urandom(512)) > > dev.write(0x02, bytearray()) #ZLP end of data > > ..close device.. >
It may be that Linux and Windows may handle the things a bit differently. Still ZLP may help for bulk endpoint. https://www.beyondlogic.org/usbnutshell/usb4.shtml -- Xiaofan _______________________________________________ pyusb-users mailing list pyusb-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pyusb-users