Daniel: I've got an idea for improving the way libusb handles short bulk-IN transfers (under Linux, anyway -- I don't know about Windows or Mac OS). It would require some changes to usbfs and corresponding changes to libusb. usbfs would be changed so that whenever a bulk URB with the URB_SHORT_NOT_OK flag set ended with a short packet, all the outstanding URBs queued to the same endpoint would be unlinked immediately. In addition, an "endpoint blocked" flag would prevent further URBs from being submitted to that endpoint until it was cleared by a new USBDEVFS_UNBLOCKEP ioctl. (I would use USBDEVFS_RESETEP for this, but it already has an established meaning -- even though it is essentially unuseable.) In turn, whenever libusb has to break a large bulk-IN transfer up into several URBs, it would set the USBDEVFS_URB_SHORT_NOT_OK flag in all of them. If any of them fail with -EREMOTEIO status, libusb would have to stop submitting the URBs and issue the UNBLOCKEP ioctl. This would prevent any further data after the short packet from mistakenly being packaged up in the same transfer. Does that sound like a feasible solution? Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html