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

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
freebsd-usb@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to