Is the freebsd usb generic device driver complete?

Hans Petter Selasky hselasky at c2i.net
Thu Apr 28 06:44:23 PDT 2005


On Thursday 28 April 2005 08:24, paradox wrote:
> I am using a low speed usb key in freebsd
> 5.3Release,It has 2 interrupt pipe besides the control
> pipe,the IN pipe is endpoint 1,its interval is 20, OUT
> pipe is endpoint 2, interval is 10. I wrote a driver
> for it in linux,and everything is ok.when I plug the
> key in a system with freebsd 5.3release, it find the
> key,make 3 nodes ugen0,ugen0.1 and ugen0.2 for it, I
> can get those descriptors from ugen0,but I can't wrote
> anything in the OUT pipe ugen0.2. from usb analyser I
> found the system send the write packet,just like in
> linux,but the return is NAK.
>
> I read the code in ugen.c,usbdi.c,uhci.c,usb.c and
> usbdi_util.c,and don't know why it set the ival to
> USB_DEFAULT_IVAL(0),I contact with Lennart Augustsson
> whose name is in the head of those usb codes, he said
> he has never run those code in freebsd and he didn't
> write the intr write code!
>
> I still can't sure it is because of the non-standard
> hardware or software bugs.now I try to write a driver
> for the usb key in freebsd, if there has any bugs in
> the ugen.c, I hope i can made a patch for it.can
> anyone tell me how the intr write designs in the
> ugen.c, and why it only use the USB_DEFAULT_IVAL?

The OHCI/UHCI/EHCI drivers interpret the polling interval similar to this:

 xfer->interval = setup->interval;

 if(xfer->interval == 0)
 {
  //
  // get interval from the endpoint descriptor
  //
     xfer->interval = xfer->pipe->edesc->bInterval;
    }

 if(xfer->interval == 0)
  {
  xfer->interval = 1 /* ms */;
 }

What USB-controller are you using?

Is the device connected through an external USB HUB?

Are you sure that the right configuration value has been set?

Yours
  HPS


More information about the freebsd-usb mailing list