libusb performance on 8.1

Daniel O'Connor doconnor at gsoft.com.au
Thu Feb 3 10:24:36 UTC 2011


On 03/02/2011, at 17:52, Hans Petter Selasky wrote:
>> I am trying to get it working at the moment, however I'm only finding it
>> capable of 4 or 8 Mb/sec (512 or 1024 byte EP), although perhaps I don't
>> understand how to do ISO transfer properly.
> 
> Hi,
> 
> You need to set the multiplier to 2 or 3. Then you get 3*1024 bytes at 
> maximum.

OK, so I need..
usb_xf[i].xf = libusb_alloc_transfer(3);
 p = malloc(3 * 1024);
libusb_fill_iso_transfer(usb_xf[i].xf, h, 0x82 p, 3 * 1024, 3, usbcb, &usb_xf[i], 2000);

?

>> BTW do you have a feel for the latency in bulk vs iso? I currently have
>> 5-10 msec of buffering in the hardware which I plan on increasing but I'm
>> not sure what a reasonable amount would be :)
>> 
>> I put a logic analyser on my board and it shows fairly regular requests
>> from the hardware (16kbyte bursts every 2msec or so) however I see
>> glitches occasionally - 5.5ms, 7.5ms.
>> 
>> I am not sure if they are attributable to userland scheduling (in which
>> case writing a kernel driver should help) or some subtlety in USB itself.
> 
> Are you using two isochronous transfers or just one?

It is a single in endpoint. The device also has 2 in bulk and 2 out bulk endpoints for other data but they are idle while the iso one is running.

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C








More information about the freebsd-usb mailing list