Ao conectar diferentes periféricos na mesma porta USB, o udev ID_PATH
reporta valores ligeiramente diferentes.
Peripheral A: platform-fe9c0000.xhci-usb-0:1:1.0
Peripheral B: platform-fe9c0000.xhci-usb-0:1:4.2
Gostaria de entender o esquema de nomenclatura e a diferença na parte final (1,0 vs 4,2). Tentei pesquisar na documentação do udev, mas não tive sorte. Isso está explicado/documentado em algum lugar?
Caso seja útil/relevante, coletei o acima em um RPi 4 executando o Debian Bookworm.
Após os últimos dois pontos, os dois números
X.Y
identificam a configuraçãoX
e a interface do dispositivo USBY
, nessa ordem.Se um dispositivo tiver mais de uma configuração, uma delas será designada como configuração padrão : aquela na qual o dispositivo é ligado, a menos que o host diga explicitamente ao dispositivo para mudar para uma configuração diferente.
lsusb -v
mostrará o número de configurações disponíveisnumConfigs
e o número da configuração padrão em outro campo.Um exemplo pode ser um dispositivo que inicialmente finge ser uma unidade de CD-ROM contendo um driver Windows/Mac para o dispositivo. O driver (ou no Linux, geralmente o
usb-modeswitch
utilitário invocado por uma regra do udev) então instrui o dispositivo a mudar para uma configuração diferente, fazendo com que o CD-ROM USB emulado desapareça e a funcionalidade real do dispositivo fique disponível.Outro exemplo pode ser um modem USB 4G, que pode oferecer uma configuração de três portas seriais (uma para conexão de dados PPP emulada semelhante a modems telefônicos analógicos, uma para acesso de status fora de banda e uma para informações de localização GPS), outra configuração para protocolo de comunicação mais moderno "semelhante a adaptador de rede" e outro modo específico do fornecedor para atualizações de firmware e configuração especial.
Os números de interface são específicos do dispositivo; apenas a interface de controle #0 tem garantia de existência em todos os dispositivos USB. Para outras interfaces, se o dispositivo estiver em conformidade com algum tipo de dispositivo USB padronizado, a especificação do tipo de dispositivo poderá informar para que cada interface será usada ou poderá (mais comumente) especificar um descritor de dispositivo específico que você precisará ler (usando interface #0) que especificará os números de interface a serem usados. Este último permite mais flexibilidade aos fabricantes de dispositivos.
Fontes: