Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jul 2010 20:20:02 +0200
From:      Hans Petter Selasky <hselasky@freebsd.org>
To:        freebsd-usb@freebsd.org
Subject:   Re: read(2) always returns 0 when reading from /dev/usb/n.m.k bulk IN endpoint
Message-ID:  <201007122020.02934.hselasky@freebsd.org>
In-Reply-To: <AANLkTikOoAnGG4TN-lZf8VC3bF48u-oEXoSR3E8TOyiH@mail.gmail.com>
References:  <AANLkTikOoAnGG4TN-lZf8VC3bF48u-oEXoSR3E8TOyiH@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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

Hi,

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

Else I recommend using LibUSB.

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007122020.02934.hselasky>