Re: How can I limit full speed transfer to 64 bytes per ms?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 14 Dec 2010, Sergej Pupykin wrote:

> At Tue, 14 Dec 2010 10:47:01 -0500 (EST),
> Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > You should change your program to install configuration 0 (i.e., 
> > unconfigure the device) before carrying out the data transfer.  That 
> > will limit the transfer rate to one transaction per ms -- provided you 
> > continue to use a UHCI controller.
> 
> Thanks, I'll try it. But it is strange:
> - If I run Windows application in VirtualBox on Linux it stops working.
> - If I run Linux application in VirtualBox on Windows it starts
> working.
> 
> I supposed that problem source is near the host controller driver.

Yes, that's probably true.

I don't know if your program will work if it does Set-Config(0).  The 
device may not accept the DFU requests in that state.

If necessary, you can force all control transactions to be spaced at 
millisecond intervals by editing drivers/usb/host/uhci-q.c in the Linux 
source.  At the end of uhci_submit_control(), remove the lines saying

	if (urb->dev->speed == USB_SPEED_LOW ||
			urb->dev->state != USB_STATE_CONFIGURED)
		skel = SKEL_LS_CONTROL;
	else {
		skel = SKEL_FS_CONTROL;
		uhci_add_fsbr(uhci, urb);
	}

and replace them with the single line:

	skel = SKEL_LS_CONTROL;

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux