Harald Welte wrote:
2. when using
a usb hub, having a lot of USB traffic, or poor USB
signal quality (I don't know exactly), bulk read timeouts can
occur in host program simtrace/at91sam7/host/main.c line 230:
rc = usb_bulk_read(udev, SIMTRACE_IN_EP, buf, sizeof(buf), 100000);
ok, interesting. I think its not really something we need to care
about, if it works reliably using good cables/hubs.
The issue is probably with the fact that bulk transfers are used for
the data.
Bulk transfers have no bound latency, they will be delivered "as soon
as possible" but this can very well mean indefinite delay on a loaded
bus. Interrupt transfers and isochronous transfer both have
guaranteed bus time, the latter are lossy (think UDP) so I'd suggest
using interrupt transfer if there's a choice.
Programmatically they work very much like bulk so switching over
should be simple.
Oh, and in host programs please don't use the old libusb-0.1 API with
usb_ functions as it has been deprecated and unmaintained for years,
please start using the libusb-1.0 API with libusb_ functions instead;
it fixes bugs, has better performance and is actually being worked
on. :)
//Peter