From: Randy Dunlap <randy.dunlap@oracle.com>
To: Theodore Kilgore <kilgota@banach.math.auburn.edu>
Cc: Randy Dunlap <randy.dunlap@oracle.com>, linux-media@vger.kernel.org
Subject: Re: How to interpret error codes for usb_control_msg()?
Date: Thu, 14 May 2009 22:31:01 -0700 [thread overview]
Message-ID: <4A0CFE15.4060608@oracle.com> (raw)
In-Reply-To: <alpine.LNX.2.00.0905142350290.11882@banach.math.auburn.edu>
Theodore Kilgore wrote:
>
>
> On Thu, 14 May 2009, Randy Dunlap wrote:
>
>> Theodore Kilgore wrote:
>>>
>>> Working on a driver for the Sonix SN9C2028 dual-mode cameras, I am
>>> confronted with the situation that certain usb_control_msg() functions
>>> are failing and returning -32. Does anyone know how to look up what -32
>>> is supposed to mean? It appears not to be in the standard errno.h file,
>>> so it would apparently be somewhere else. And the on-line man page for
>>> usb_control_msg does not seem totally helpful. It says
>>>
>>> "If successful, it returns the number of bytes transferred; otherwise,
>>> it returns a negative error number."
>>>
>>> but does not otherwise discuss the negative error numbers.
>>>
>>> However, I am getting things like
>>>
>>> f60a5680 1488371641 S Ci:5:022:0 s c1 00 0001 0000 0001 1 <
>>> f60a5680 1488373478 C Ci:5:022:0 -32 1 = 0c
>>>
>>> using from the camera, and I do not quite know why. Incidentally, quite
>>> aside from the error message, the returned value is also a bit screwy.
>>> It ought to be 00 and for no obvious reason it is not. However, even if
>>> the returned value is correct, which also can sometimes happen, the
>>> error is still there.
>>>
>>> Also the debug statement from dmesg consistently says (the corresponding
>>> function is called read1)
>>>
>>> sn9c20: read1 error -32
>>>
>>> But, what is essentially the same command works just fine in libgphoto2,
>>> giving debug output which looks like this
>>>
>>> f14ca880 2936498715 S Ci:5:023:0 s c1 00 0001 0000 0001 1 <
>>> f14ca880 2936499630 C Ci:5:023:0 0 1 = 00
>>>
>>> which shows no error and is doing what it should.
>>>
>>> So if someone knows where the declarations of these error codes are, it
>>> might help me to track down what the problem is.
>>
>> You'll need to look in 2 places.
>> Documentation/usb/error-codes.txt uses named error codes
>> and include/asm-generic/errno*.h converts names<->numbers.
>>
>> So 32 is EPIPE (from errno-base.h) and error-codes.txt tells
>> what EPIPE is used for in usb-land.
>
> Thanks. I looked it up now in error-codes.txt and I am still mystfied,
> unfortunately. It says there
>
> -EPIPE (**) Endpoint stalled. For non-control endpoints,
> reset this status with usb_clear_halt().
>
> Well, it *is* a control pipe, so now what?
It's still Endpoint stalled. The other sentence (For ...) just
does not apply to your case.
> The (**) refers to
>
> (**) This is also one of several codes that different kinds of host
> controller use to indicate a transfer has failed because of device
> disconnect. In the interval before the hub driver starts disconnect
> processing, devices may receive such fault reports for every request.
>
> Well, the device did not otherwise appear to get disconnected. The
> command sent is, basically, one of those "ping the camera" commands. As
> pointed out, it works just fine if called (more indirectly, of course)
> from libgphoto2, through libusb.
>
>
> Of course, I could get something syntactically wrong when constructing
> the commands. However, comparing
>
>>> f60a5680 1488371641 S Ci:5:022:0 s c1 00 0001 0000 0001 1 <
>>> f60a5680 1488373478 C Ci:5:022:0 -32 1 = 0c
> (from the embryonic sn9c2028 module)
>
> with
>
>>> f14ca880 2936498715 S Ci:5:023:0 s c1 00 0001 0000 0001 1 <
>>> f14ca880 2936499630 C Ci:5:023:0 0 1 = 00
> (originating from libgphoto2/camlibs/sonix, with the same camera plugged
> in)
>
> would surely indicate that the command was given the same way in both
> cases.
>
> So, thanks, Randy, for pointing my nose in the right direction to
> decipher the -32 error.
>
> But now, I am more puzzled than ever because I still can not figure out
> how *that* could happen.
>
> Anyone have any good and clever ideas?
I suggest that you ask on the USB mailing list (linux-usb@vger.kernel.org).
--
~Randy
LPC 2009, Sept. 23-25, Portland, Oregon
http://linuxplumbersconf.org/2009/
next prev parent reply other threads:[~2009-05-15 5:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-15 3:51 How to interpret error codes for usb_control_msg()? Theodore Kilgore
2009-05-15 4:00 ` Randy Dunlap
2009-05-15 5:05 ` Theodore Kilgore
2009-05-15 5:31 ` Randy Dunlap [this message]
2009-05-15 17:03 ` Theodore Kilgore
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A0CFE15.4060608@oracle.com \
--to=randy.dunlap@oracle.com \
--cc=kilgota@banach.math.auburn.edu \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.