Sim, você pode confiar na estrutura em /sys/bus/usb/
para ser idêntica nas distribuições, porque ela depende apenas do kernel, e é madura o suficiente, então é improvável que ela mude em futuras versões do kernel (mas quem sabe ...) .
No entanto, essa é a abordagem errada para resolver seu problema. A abordagem correta é incluir uma regra de udev
personalizada com seu aplicativo e certificar-se de que essa regra udev
seja copiada para o local correto (geralmente /etc/udev/rules.d
, mas isso pode depender da distro. Em caso de dúvida, deixe o usuário configurá-lo) durante a instalação. A regra udev
pode então atribuir links simbólicos (semelhantes aos que você vê em /dev/disks
) para os três dispositivos seriais, usando qualquer informação (por exemplo, identificador de fornecedor / dispositivo) que identifique sua placa exclusivamente. Seus aplicativos devem usar os links simbólicos.
Em uma pitada, você também pode usar a estrutura usb-tree que estava planejando usar para o ryle. Veja udevadm info --attribute-walk ...
para obter uma lista de propriedades disponíveis para seus dispositivos.