linux/Documentation/usb/error-codes.txt
<<
>>
Prefs
   1Revised: 2004-Oct-21
   2
   3This is the documentation of (hopefully) all possible error codes (and
   4their interpretation) that can be returned from usbcore.
   5
   6Some of them are returned by the Host Controller Drivers (HCDs), which
   7device drivers only see through usbcore.  As a rule, all the HCDs should
   8behave the same except for transfer speed dependent behaviors and the
   9way certain faults are reported.
  10
  11
  12**************************************************************************
  13*                   Error codes returned by usb_submit_urb               *
  14**************************************************************************
  15
  16Non-USB-specific:
  17
  180               URB submission went fine
  19
  20-ENOMEM         no memory for allocation of internal structures 
  21
  22USB-specific:
  23
  24-ENODEV         specified USB-device or bus doesn't exist
  25
  26-ENOENT         specified interface or endpoint does not exist or
  27                is not enabled
  28
  29-ENXIO          host controller driver does not support queuing of this type
  30                of urb.  (treat as a host controller bug.)
  31
  32-EINVAL         a) Invalid transfer type specified (or not supported)
  33                b) Invalid or unsupported periodic transfer interval
  34                c) ISO: attempted to change transfer interval
  35                d) ISO: number_of_packets is < 0
  36                e) various other cases
  37
  38-EAGAIN         a) specified ISO start frame too early
  39                b) (using ISO-ASAP) too much scheduled for the future
  40                   wait some time and try again.
  41
  42-EFBIG          Host controller driver can't schedule that many ISO frames.
  43
  44-EPIPE          Specified endpoint is stalled.  For non-control endpoints,
  45                reset this status with usb_clear_halt().
  46
  47-EMSGSIZE       (a) endpoint maxpacket size is zero; it is not usable
  48                    in the current interface altsetting.
  49                (b) ISO packet is larger than the endpoint maxpacket.
  50                (c) requested data transfer length is invalid: negative
  51                    or too large for the host controller.
  52
  53-ENOSPC         This request would overcommit the usb bandwidth reserved
  54                for periodic transfers (interrupt, isochronous).
  55
  56-ESHUTDOWN      The device or host controller has been disabled due to some
  57                problem that could not be worked around.
  58
  59-EPERM          Submission failed because urb->reject was set.
  60
  61-EHOSTUNREACH   URB was rejected because the device is suspended.
  62
  63
  64**************************************************************************
  65*                   Error codes returned by in urb->status               *
  66*                   or in iso_frame_desc[n].status (for ISO)             *
  67**************************************************************************
  68
  69USB device drivers may only test urb status values in completion handlers.
  70This is because otherwise there would be a race between HCDs updating
  71these values on one CPU, and device drivers testing them on another CPU.
  72
  73A transfer's actual_length may be positive even when an error has been
  74reported.  That's because transfers often involve several packets, so that
  75one or more packets could finish before an error stops further endpoint I/O.
  76
  77
  780                       Transfer completed successfully
  79
  80-ENOENT                 URB was synchronously unlinked by usb_unlink_urb
  81
  82-EINPROGRESS            URB still pending, no results yet
  83                        (That is, if drivers see this it's a bug.)
  84
  85-EPROTO (*, **)         a) bitstuff error
  86                        b) no response packet received within the
  87                           prescribed bus turn-around time
  88                        c) unknown USB error 
  89
  90-EILSEQ (*, **)         a) CRC mismatch
  91                        b) no response packet received within the
  92                           prescribed bus turn-around time
  93                        c) unknown USB error 
  94
  95                        Note that often the controller hardware does not
  96                        distinguish among cases a), b), and c), so a
  97                        driver cannot tell whether there was a protocol
  98                        error, a failure to respond (often caused by
  99                        device disconnect), or some other fault.
 100
 101-ETIME (**)             No response packet received within the prescribed
 102                        bus turn-around time.  This error may instead be
 103                        reported as -EPROTO or -EILSEQ.
 104
 105-ETIMEDOUT              Synchronous USB message functions use this code
 106                        to indicate timeout expired before the transfer
 107                        completed, and no other error was reported by HC.
 108
 109-EPIPE (**)             Endpoint stalled.  For non-control endpoints,
 110                        reset this status with usb_clear_halt().
 111
 112-ECOMM                  During an IN transfer, the host controller
 113                        received data from an endpoint faster than it
 114                        could be written to system memory
 115
 116-ENOSR                  During an OUT transfer, the host controller
 117                        could not retrieve data from system memory fast
 118                        enough to keep up with the USB data rate
 119
 120-EOVERFLOW (*)          The amount of data returned by the endpoint was
 121                        greater than either the max packet size of the
 122                        endpoint or the remaining buffer size.  "Babble".
 123
 124-EREMOTEIO              The data read from the endpoint did not fill the
 125                        specified buffer, and URB_SHORT_NOT_OK was set in
 126                        urb->transfer_flags.
 127
 128-ENODEV                 Device was removed.  Often preceded by a burst of
 129                        other errors, since the hub driver doesn't detect
 130                        device removal events immediately.
 131
 132-EXDEV                  ISO transfer only partially completed
 133                        look at individual frame status for details
 134
 135-EINVAL                 ISO madness, if this happens: Log off and go home
 136
 137-ECONNRESET             URB was asynchronously unlinked by usb_unlink_urb
 138
 139-ESHUTDOWN              The device or host controller has been disabled due
 140                        to some problem that could not be worked around,
 141                        such as a physical disconnect.
 142
 143
 144(*) Error codes like -EPROTO, -EILSEQ and -EOVERFLOW normally indicate
 145hardware problems such as bad devices (including firmware) or cables.
 146
 147(**) This is also one of several codes that different kinds of host
 148controller use to indicate a transfer has failed because of device
 149disconnect.  In the interval before the hub driver starts disconnect
 150processing, devices may receive such fault reports for every request.
 151
 152
 153
 154**************************************************************************
 155*              Error codes returned by usbcore-functions                 *
 156*           (expect also other submit and transfer status codes)         *
 157**************************************************************************
 158
 159usb_register():
 160-EINVAL                 error during registering new driver
 161
 162usb_get_*/usb_set_*():
 163usb_control_msg():
 164usb_bulk_msg():
 165-ETIMEDOUT              Timeout expired before the transfer completed.
 166
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.