Jak mogę zmusić numery magistrali USB karty PCI, aby pozostały takie same po ponownym uruchomieniu?

1

Mam kilka identycznych kart dźwiękowych USB i napisałem regułę udev, aby każda z nich otrzymała trwałą nazwę pasującą do określonego portu, do którego są przyłączone. Teraz dodałem kartę PCI USB 3.0, która bawi się numerami autobusów USB. czasami pci USB ładuje się przed wbudowanym USB i ma niższy numer magistrali, a czasem po i dostaje wyższy numer magistrali.

Co mogę zrobić, aby wymusić numery magistrali wbudowanej karty PCI?

Jeśli to nie zadziała, co mogę zrobić, aby uzyskać trwałe nazwy urządzeń dla identycznych (i bez numerów seryjnych) urządzeń USB, gdzie jedyną różnicą jest port, do którego są podłączone?

~ $ uname -srvmpio
Linux 4.19.0-0.bpo.1-amd64 #1 SMP Debian 4.19.12-1~bpo9+1 (2018-12-30) x86_64 unknown unknown GNU/Linux

Edytuj (dodano różne wyjścia lsusb -t) magistrale 9 i 10 mogą zamieniać się z 5 i 6 pozornie losowo. dodana karta pci usb3.0 pokazuje się jako 5 i 6 na pierwszym wyjściu i 9 i 10 na drugim. Czasami konfiguracja to:

/:  Bus 10.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 3, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 09.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 2: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 2: Dev 3, If 3, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 12M
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 4: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M

A innym razem, bez zmiany sprzętu, po ponownym uruchomieniu może być:

/:  Bus 10.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
/:  Bus 09.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 4: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 3, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 2: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 2: Dev 3, If 3, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
FoxSam12
źródło
Dodanie systemu operacyjnego pomogłoby uzyskać odpowiedź. Proszę edytować pytanie i dodać poprawny tag.
DavidPostill
Pierwszym pomysłem jest zmodyfikowanie reguł udev w celu identyfikacji wbudowanych koncentratorów USB i użycie struktury portu USB ( lsusb -t) po dopasowaniu koncentratora. udevadmpomaga zidentyfikować atrybuty, z którymi chcesz się dopasować.
bezpośrednio
Nie rozumiem, co chcesz, żebym zrobił. Pytałem (am), jak użyć udev, aby nadać trwałą strukturę hubom i portom USB.
FoxSam12
@AlexP. To jest inne. Mam problem, ponieważ po ponownym uruchomieniu urządzenia uzyskują różne ścieżki, nawet bez zmian sprzętowych. Zaktualizuję moje pytanie z innym lsusb -twyjściem.
FoxSam12