On Monday 12 July 2010 19:22:28 Peer Stritzinger wrote:
> Hi,
> on FreeBSD 8.0-RELEASE I try to read from a bulk IN endpoint device node
> with read(2).
> The USB client it is talking to is a embedded controller with Cypress SX2
> USB client chip, enumeration goes quite well (SX2 does it itself) and its
> reported correctly on console.  The device nodes in /dev/usv/n.m.k appear
> for the control endpoint and two OUT and IN endpoints each.
> I can write to one of the OUT endpoints with e.g. dd and what I read on the
> device is correct.
> However I can't read any data from a corresponding IN endpoint:  What I
> doing is in a loop:
>       n = read(in, buf, NBUF);
>       printf ("read-test: read %ld bytes\n", n);
> this is run as root.
> I'm watching the USB with a USB protocol analyzer, BTW its running in
> High-Speed.
> As soon as the first read is done (and blocks) I see IN->NAK (device did
>  not write to the IN endpoint) polling on the USB.
> When the device writes to the endpoint buffer I see a correct bulk IN
> transfer that is ACKed by the host with the analyzer.
> However the read always returns 0.
> Tried different buffer sizes etc.
> Is this supposed to work as I'm using it.  I'm planning to go to libusb-1.0
> later, should I debug this with the /dev/usb/n.m.k node reading or proceed
> to libusb because my approach can't work anyway?
> Best regards,
> Peer Stritzinger


Maybe you are missing to set the short transfer OK flag.

Else I recommend using LibUSB.

freebsd-usb@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to