udev Regel für UMTS Stick

  • Schönen Nachmittag,


    hab schon wieder eine Frage zu meinem UMTS Stick :blush:.


    Ich will die Internetverbindung beim Booten automatisch herstellen. Dazu fehlen mir allerdings noch ein paar Bausteine.
    Manuell mache ich das jetzt so:


    1. UMTS Stick am RPi stecken, Strom ein


    2. RPi hat gebootet, UMTS Stick befindet sich im "ZeroCD" Mode (2357:0200)


    3. Stick auf UMTS Mode umschalten (2357:0201)

    Code
    eject /dev/sr0


    4. Stick Interface definieren

    Code
    modeprobe usbserial vendor=0x2357 product=0x0201
    ln -s /dev/ttyUSBirgendwas /dev/ma180


    Jetzt ist das Modem ansprechbar. Allerdings finde ich Schritt 3 und 4 total besch.... Vor allem bei Schritt 4 ist mir aufgefallen das der Stick einmal unter ttyUSB0 und einmal unter ttyUSB2 verfügbar ist. Das geht natürlich garnicht.


    Das Heilmittel sollte doch udev sein oder? Mir fehlt leider das Fachwisse so eine Regel auf die Reihe zu bekommen.


    Ah ja - usb_modeswitch hat ich probiert - scheitert aber am USB-Hub an dem der Stick gesteckt ist.



    Danke für Eure Tipps!

  • Den Artikel kannte ich schon.


    ich habe hier noch einen gefunden: http://doc.opensuse.org/docume…e-reference/cha.udev.html


    Da ist udev recht gut beschrieben.


    Mir fehlt aber nach wie vor der Ansatz - meine Regeln greifen einfach nicht.


    Aktuell habe ich unter /dev/udev/rules.d/10-tplink.rules:

    Code
    KERNEL=="scsi_device", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0200", SYMLINK+="ma180zerocd"


    Sollte meiner Meinung nach unter /etc einen Symlink names ma180zerocd erzeugen oder?


  • Den Artikel kannte ich schon.


    Wenn du den Artkiel schon kannstest hast du ihn nicht weit genug gelesen.. Lies mal ab dem "udev Regel erstellen": http://wiki.ubuntuusers.de/USB…itch#udev-Regel-erstellen
    Dann sollte dein Problem eigentlich gelöst sein :s




    Aktuell habe ich unter /dev/udev/rules.d/10-tplink.rules:

    Code
    KERNEL=="scsi_device", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0200", SYMLINK+="ma180zerocd"


    Wieso benutzt du KERNEL=="scsi_device" ? Lass das mal bitte weg oder benutze stattdessen SUBSYSTEMS=="usb" :)



    Sollte meiner Meinung nach unter /etc einen Symlink names ma180zerocd erzeugen oder?


    Wieso unter /etc ? Wenn dann unter /dev ;)



    Wenn es nach weglassen von KERNEL=="scsi_device" immer noch nicht geht dann führ mal bitte folgenden Befehl aus und poste die Ausgabe:

    Code
    lsusb -v | grep -e idVendor -e idProduct


    oder:

    Code
    udevadm info -n /dev/ttyUSB0 -a
  • Nö die Rule verweigert immer noch.


    die Rule schaut jetzt so aus:

    Code
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0200", SYMLINK+="ma180zerocd"


    Ausgaben:

  • Du scheinst die falsche idProduct angegeben zu haben:



    die Rule schaut jetzt so aus:

    Code
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0200", SYMLINK+="ma180zerocd"


    Ausgaben:


    ATTRS{product}=="TP-LINK HSUPA Modem"
    ATTRS{idVendor}=="2357"
    ATTRS{idProduct}=="0201"



    Die merkmale die über udevadm ausgegeben werden kannst du für udev verwenden, damit udev ein Device eindeutig identifizieren kann.


    Du könntest also auch


    ATTRS{product}=="TP-LINK HSUPA Modem"


    verwenden, oder


    ATTRS{serial}=="863077010361362"


    wenn das mit idVendor und idProduct nicht klappen will - allerdings hast du in der udev Regel als idProduct 0200 angegeben obwohl es 0201 sein müsste ;)

  • Nein ich glaube nicht das 0200 falsch ist.


    Wenn der Stick eingesteckt wird erscheint er unter lsusb als 2357:0200 - erst nach eject /dev/sr0 wird er zu 2357:0201!


    Ich möchte aber das eject /dev/sr0 auf eject /dev/ma180zerocd bekommen haben. Ich kann ja nicht sicher sein, dass das sr0 nicht plötzlich mal sr1 ist oder?

  • Mit meinem HUAWEI Stick wird der Datenträger als /dev/sr0 gemounted und das GSM modem als /dev/ttyUSB0 und /dev/ttyUSB1


    Da ich aber keine passende SIM hab kann ich da nix weiter testen..



    Zum debuggen kannst du udev so einstellen das quasi alles in /var/log/syslog geschrieben wird:

    Code
    udevadm control --log-priority=debug


    Anschliesend aber nicht vergessen das wieder auf "err" zu stellen

  • Achtung jetzt wird's richtig spannend:


    ich habe heute Nachmittag meine neuen RPi - Version B geliefert bekommen. Hab also aus der alten Kiste die SD-Card rausgenommen und in einen neuen RPi Version B eingesteckt, gebootet und siehe da es funktioniert. Der Stick wird als /dev/ma180zerocd gemountet!


    Wie kann ich mir das erklären??

  • Hab es mit folgenden Regeln lösen können:


    Code
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0200", SYMLINK+="ma180zerocd", RUN+="/etc/mov_umtsconnector"
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2357", ATTRS{idProduct}=="0201", SYMLINK+="ma180umts", RUN+="/etc/mov_umtsconnector"