USBエラーコードのリストはどこにありますか?

USBエラーコードのリストはどこにありますか?

Debian を起動するたびに、起動ログには次のようなxhci_hcdさまざまな問題やメッセージが表示されます。

usb 3-13: hub failed to enable device, error -22
usb 3-13: device descriptor read/8, error -61

しかし、これらのエラーコードが実際に何を意味するのかを理解するのに問題があります。これらのすべてのエラーコードが何を意味するのかをリストしていますか?

答え1

このerrnoプログラム(パッケージの一部moreutils)はエラー番号をその名前に変換します。

    $ errno 61
    ENODATA 61 No data available

答え2

1つ目はEINVAL(標準POSIX Cエラー)の反転です。ご質問があれば[src]/drivers/usb/core/hub.c(3.19節)の4218行目をご覧ください。

4217     if (udev->state != USB_STATE_DEFAULT)
4218         return -EINVAL;

hub_port_init()同じファイルの他の機能です。

ただし、このタイプのエラーメッセージは、実際にエンドユーザーにすでに提供されている情報(「ハブはデバイスをアクティブにできません」)よりも多くの情報を提供するためのものではありません。デバッグに使用され、バグレポートを送信するかどうかを含めることができます。

問題を詳しく説明する文書が欲しいなら運がないと思います。その理由の1つは、より正確で詳細な説明を提供できないためです。不特定範囲の根本的な原因により、一部の操作が同じ方法で失敗する可能性があります。

答え3

エラーコードのソースは、対応するハブのソースコードで確認できます。

例えばgrep -A 1 -m 1 22 /usr/src/linux-source-4.3/drivers/usb/host/xhci.h

#define PORT_PLC        (1 << 22)
/* port configure error change - port failed to configure its link partner */

その意味を発見するだろう一部エラーコードは次のとおりです。/usr/src/linux-source-$yourKernel/Documentation/usb/error-codes.txt

例えば

-EINVAL         a) Invalid transfer type specified (or not supported)
                b) Invalid or unsupported periodic transfer interval
                c) ISO: attempted to change transfer interval
                d) ISO: number_of_packets is < 0
                e) various other cases

そしてISO madness, if this happens: Log off and go home


61エラーの場合: /usr/src/linux-headers-4.3.0-0.bpo.1-common/include/uapi/asm-generic/errno.h

#define ENODATA         61      /* No data available */

関連情報