USB Ports "fixieren"

  • Hallo!

    Ich habe einen 4-fach USB/Seriell und einen 2-fach USB/Seriell am Raspberry B+ hängen.
    Funktioniert an sich auch alles.

    Aber kann ich irgendwie es schaffen, das diese immer den selben /ttyUSB* belegen?
    Stecke ich den 2-fach zuerst an, wird er an USB0 und USB1 gebunden.
    Stecke ich den 4-fach zuerst an, wird er an USB0, USB1, USB2, USB3 gebunden.

    Kann ich die irgendwie fix zuordnen?

    Danke!

  • Hallo,

    ja, das habe ich gemacht. Aber bei mir klappt es nicht:

    Code
    KERNEL=="ttyUSB?", SUBSYSTEM=="usb", ATTRS{idProduct}=="6010", SYMLINK+="ttyUSB10", ACTION=="add"

    Ich möchte gerne, das das USB Gerät mit der "idProduct" 6010 ab ttyUSB10 fixiert wird.
    Da es ein twin ist, muss es also USB10 und USB11 belegen.
    Aber bleibt bei USB0 und USB1

  • Hallo,

    lsusb -vs 001:005 zeigt folgendes an:

    dmesg:

    Es hängt noch ein USB Wlan Adapter dran

  • Einen ttyUSB Link zu erzeugen wäre btw Quatsch. Such dir einen anderen Namen für die Verknüpfung aus - keinen der vom System selbst verwendet werden könnte, also zum Beispiel 'Twin1'. Lass auch mal den KERNEL Eintrag in der rule weg.

    Ist das ein aktiver oder passiver USB-Hub den du da verwendest? Du hast nämlich auch noch einen WLAN-Stick in Verwendung, den du zuvor nicht erwähnt hast... Wenn es sich um einen Passiven USB-Hub handelt könnte der Strom nicht ausreichend sein, denn der Pi hält sich nicht an die Standard-USB-Spezifikationen. Siehe dazu ggf hier unter Punkt 8.1

  • Hallo,

    ich nutze den 4-Port USB Anschluß vom Pi.

    Ich habe nun mal etwas getestet:

    Code
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6010", SYMLINK+="ttySerialTwin%n"
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", SYMLINK+="ttySerialQuad%n"

    Ich möchte nämlich 2 verschiedene USB/Serial nutzen. Einen Twin und einen Quad.
    Das funktioniert auch "fast".
    Jedoch bekomme ich damit:
    ttySerialTwin0
    ttySerialTwin1

    ttySerialQuad2
    ttySerialQuad3
    ttySerialQuad4
    ttySerialQuad5

    Da ja USB0,1,2,3,4,5 angelegt wurden.
    Kann man nicht jede Regel (sonst mach ich eben 2 seperate) bei der Zählung 1 beginnen lassen, damit ich:
    ttySerialTwin1
    ttySerialTwin2

    ttySerialQuad1
    ttySerialQuad2
    ttySerialQuad3
    ttySerialQuad4

    bekomme?

  • Hallo!

    Hmmm ... entweder hast du mich missverstanden oder ich mache etwas falsch.
    %n zeigt ja die kernel Nummer an:
    https://www.kernel.org/pub/linux/util…/udev/udev.html
    Wenn beim USB Quad Serial Konverter die USB von 2-5 belegt werden, erhalte auch ich diese Zahlen.
    Ich brauche aber 1-4

    Ich muss also pro Rule File von 1 beginnent adressieren.
    Oder kann ich die Ports der RS232/USB direkt adressieren?

    Leider weiß man nie, welcher von den beiden (Twin oder Quad) zuerst eingesteckt wird und kann so nicht eindeutig zuordnen.

    Hoffe ich habe es verständlich geschrieben(?)

    Liebe Grüße und danke für deine Hilfe!

  • Wie wäre es mit diesem Ansatz?:

    quad.rules

    Code
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", IMPORT{program}="/etc/udev/rules.d/quad.sh "%n

    quad.sh

    Bash
    #!/bin/bash
    echo Remove all ttySerialQuad*
    rm /dev/ttySerialQuad*
    ln -s /dev/ttyUSB$(($1+0)) /dev/ttySerialQuad1
    ln -s /dev/ttyUSB$(($1+1)) /dev/ttySerialQuad2
    ln -s /dev/ttyUSB$(($1+2)) /dev/ttySerialQuad3
    ln -s /dev/ttyUSB$(($1+3)) /dev/ttySerialQuad4

    ich bin mir aber nicht sicher ob

    Code
    IMPORT{program}="/etc/udev/rules.d/quad.sh "%n

    oder ob

    Code
    IMPORT{program}="/etc/udev/rules.d/quad.sh %n"
  • Scheint so als hätte ich es jetzt :)

    Code
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="00", ACTION=="add", SYMLINK+="ttySerialQua$
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="01", ACTION=="add", SYMLINK+="ttySerialQua$
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="02", ACTION=="add", SYMLINK+="ttySerialQua$
    SUBSYSTEM=="tty", ATTRS{idProduct}=="6011", ENV{ID_USB_INTERFACE_NUM}=="03", ACTION=="add", SYMLINK+="ttySerialQua$

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!