Onde posso encontrar uma lista de códigos de erro USB?

4

Toda vez que eu inicializo o Debian, o log de inicialização mostra um monte de xhci_hcd problemas e mensagens como

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

Estou tendo dificuldades para descobrir o que esses códigos de erro realmente significam, no entanto. Existe algum lugar que lista o que significam todos esses códigos de erro?

    
por Eric Dand 19.03.2015 / 19:27

2 respostas

2

O primeiro é EINVAL (um erro POSIX C padrão) invertido. Se você está curioso, é da linha 4218 em [src]/drivers/usb/core/hub.c (v. 3.19):

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

O outro é da função hub_port_init() no mesmo arquivo.

Esses tipos de mensagens de erro não têm a intenção de fornecer mais informações aos usuários finais do que o que está lá ("hub não habilitou o dispositivo"), no entanto. Eles são usados na depuração, possivelmente incluindo se você tivesse que enviar um relatório de bug.

Se você estava esperando uma documentação que explicaria o problema em detalhes, acho que você está sem sorte. Parte da razão para isso é, talvez, que talvez não exista uma explicação mais precisa e detalhada que possa ser fornecida. Algumas coisas podem falhar da mesma maneira com uma gama de causas potenciais indeterminadas.

    
por 19.03.2015 / 20:05
3

A origem do código de erro pode ser encontrada no código-fonte do hub em questão.

por exemplo. 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 */

Você encontrará o significado de alguns códigos de erro em /usr/src/linux-source-$yourKernel/Documentation/usb/error-codes.txt

por exemplo.

-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

(e também) ISO madness, if this happens: Log off and go home

Para o erro 61: - /usr/src/linux-headers-4.3.0-0.bpo.1-common/include/uapi/asm-generic/errno.h

#define ENODATA         61      /* No data available */
    
por 18.05.2016 / 14:23