At 11:04 AM 12/14/2003 -0500, Alan Stern wrote:
On Sun, 14 Dec 2003, Johann Deneux wrote:

> Hi,
>
> I've had bug reports from users trying to use hid with force feed back
> enabled for logitech devices (kernel 2.6.0-test9). The device causing
> trouble is the cordless rumble pad. It is a low-speed device, and
> stubbornly refuses to rumble. It works fine as an input-only device,
> however.
>
> hid-lgff.c, which implements force feedback for this device, needs to
> submit output reports to the device. hid_submit_out submits an output
> bulk urb to the device. ohci-hcd seems fine with that (at least it used
> to, back in 2.4.x times), but uhci-hcd is not.
>
> I commented out two lines in uhci-hcd to force it to accept to submit
> bulk out urbs to low-speed devices:
>
> static inline int uhci_submit_bulk(struct uhci_hcd *uhci, struct urb
> *urb, struc
> t urb *eurb)
> {
>          int ret;
>
>          /* Can't have low speed bulk transfers */
> /*      if (urb->dev->speed == USB_SPEED_LOW)
>                  return -EINVAL;*/
>
>
> It made by pad rumble, so this quick dirty fix does the job.
> Now, I don't know what the clean fix would be. Maybe change hid to
> submit one-shot-interrupt out urbs when dealing with low-speed devices,
> or just lift the restriction in uhci (I guess there are reasons for this
> restriction, though).

There certainly is an excellent reason for not allowing low-speed bulk
transfers: They are illegal according to the USB specification!  Low speed
only supports control and interrupt, not bulk or iso.

I know zero about HID, but it seems likely the problem lies in there.

Alan Stern

What are we the protocol police? I thought there was a general rule to be as liberal as possible in what the kernel will accept and as strict as possible in what it sends.


From the outside world (on the USB wires) there is no way to tell a one shot bulk out from a one shot interrupt out.

One problem is that there really is (at least) two USB standards, the one from www.usb.org and the defacto one from Microsoft. I know that Win98 does not enforce the "no low speed bulk" rule. So if we (Linux) attempt to enforce the rule some device (current or future) may not work in Linux while it works in shudder, Windows.

Regards, Steve




------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to