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.