Dados dos dispositivos USB idénticos con exactamente los mismos descriptores de USB y, por lo tanto, sin forma alguna de diferenciarlos, solo usando la información de la hoja de la vista de información del dispositivo (el descriptor del dispositivo USB) como se hace normalmente (sí, este dispositivo está mal diseñado).
Pero como estoy hablando de un sistema cerrado, pensé que podría resolver el problema usando los puertos USB físicos que se usan para conectar los dispositivos. Puedo decir que uno está conectado al puerto físico #1 y el otro está conectado al puerto físico #2 del concentrador USB raíz de mi placa base. Y lsusb me da esta información.
Entonces, ahora necesito poder encontrar el nodo del dispositivo en /dev solo de acuerdo con estas dos coordenadas físicas. Pero cuando miro sysfs , no puedo encontrar ningún enlace a esta topología física. Como si el árbol usb sysfs fuera solo una vista lógica de la física. Y parece que los nombres de dispositivos usb sysfs como /sys/bus/usb/devices/2-2.1 o /sys/bus/usb/devices/2-2.1/2-2.2 son dinámicos e impredecibles.
Encontré esto:
$ ls /dev/serial/by-path/ pci-0000:02:00.0-usb-0:2.1:1.0-port0@ pci-0000:02:00.0-usb-0:2.2:1.0-port0@ ¿Debo escribir reglas udev para congelar los nombres de los puertos pci y usb? ¿Ya son predecibles?
Mi objetivo final es poder escribir una regla udev para obtener nombres de dispositivos predecibles y congelados de acuerdo con el puerto usb físico utilizado.
La solución también podría aplicarse a un dispositivo PCI.
Gracias