UMTS Stick ständig mit dem Internet verbinden

  • Hallo,

    gibt es eine möglichkeit das USB Modem einmal am Tag neu zu starten und die verbindung automatisch wieder aufzubauen?
    Möchte meine Kamera ständig über einen USB-Surfstick betreiben und die Internetverbinduing soll ständig aufrecht gehalten werden. In Moment funktioniert alles, aber es kann ja ml sein, dass sich die Internetverbindung von selbst trennt. Die möchte ich verhindern. Vielleicht gibt es ein Script was ständig oder nach einem Zeitintervall die verbindung prüft und wieder neu aufbaut.

    Arbeite mit Sakis3g-Modem Software.

    Danke

  • ich weiss nicht ob man UMTS Sticks genauso unmounten kann wie Speicher, aber kill auf den Prozess mit Neustart müsste gehen

    ist aber was für die Softies hier, die wissen eher wie man das realisiert

    cronjob wäre auch ein Stichwort.

    PInguin
    25. März 2014 um 16:03

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (23. Juni 2014 um 14:18)

  • Das Problem mit UMTS Sticks ist u.U. die PIN Abfrage der SIM. Das kann man am einfachsten abschalten indem man entweder kurzfristig eine Windows-Einwahl-Software nutzt und dort den PIN deaktiviert, oder über ein Mobiltelefon, oder man muss in /etc/network/interfaces für ppp0 ein pre-up Script einrichten worüber der PIN übergeben wird:

    Code
    auto ppp0
    iface ppp0 inet wvdial
    provider eplus
    pre-up /usr/local/bin/setPIN.sh

    /usr/local/bin/setPIN.sh

    Bash
    #!/bin/bash
    PIN=1234
    echo "AT+CPIN=$PIN\n\r" > /dev/ttyUSB0

    Für die Einwahl würde ich wvdial empfehlen - eine Zwangstrennung nach 24h gibt es oftmals wie bei DSL aber auch hier, oder es erfolgt eine Trennung wegen Signalverlust (zB bei Gewitter). Inwiefern man das über ein Script abfedern kann weiß ich aber (noch) nicht, da ich selber keinen UMTS-Stick mehr nutze; sollte aber i.d.R. kein Problem sein zB regelmäßig mithilfe von ifconfig ppp0 zu pürfen ob eine IP vergeben ist und falls nicht eine Einwahl vorzunehmen.
    In wvdial gibt es hierfür aber auch eine Einstellung: Auto Reconnect=on


    Hinweis: Bei den meisten (allen?) Providern erhält man für seine UMTS-Einwahl eine IP-Adresse aus einem privaten Adressbereich. Der Provider macht dann NAT. Dies ist für die Nutzung nicht schädlich, jedoch ist eine Portweiterleitung nicht möglich.


  • Hinweis: Bei den meisten (allen?) Providern erhält man für seine UMTS-Einwahl eine IP-Adresse aus einem privaten Adressbereich. Der Provider macht dann NAT. Dies ist für die Nutzung nicht schädlich, jedoch ist eine Portweiterleitung nicht möglich.

    ist vielleicht für den TO kein Problem er kann ja seinen home dsl über dyndns oder ähnlich erreichen und dort lesen ob ein neues Bild von der cam erwünscht ist und es dann vom PI senden lassen, das der PI von aussen erreicht werden muss über forwarding ist ja so nicht nötig

    also home mit "fester" IP ich will ein neues Bild !
    pi im wald fragt das ab und sendet Bild

    home muss PI nicht direkt erreichen

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ich wüsste mit Sakis und Python das ganze umzusetzen.

    Ich kenne die Problematik, dass das Modem plötzlich und unerwartet keine Verbindung mehr hat.
    Dafür kann man Sakis fragen, ob noch eine Verbindung besteht. Dieser Vorgang dauert aber immer etwa 40sec. unter Vollast des Prozessors. Vllt. ist es in gewissen Fällen besser (schneller), durch einen Ping die Verbindung zu testen. Da wüsste ich aber grad nicht wie das geht.

    Sonst wäre das aber kein Problem. Ich guck gleich mal nach, welche Befehle dafür nötig sind. Habs leider nicht exakt im Kopf. Sag Bescheid, wenn ich ein kleines Skript schreiben sollte.

    Eine einfache Möglichkeit wäre, Sakis alle halbe Stunde (oder wann auch immer) neu zu verbinden. Das erzeugt den gleichen Verzögerungseffekt, man ist aber anschließend sofort (wieder) verbunden.

    Hier mal ein kleiner Schnipsel:

    Code
    if os.system("/usr/bin/modem3g/sakis3g silent status") is False:
        os.system("/usr/bin/modem3g/sakis3g silent connect")

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (23. Juni 2014 um 16:59)

  • Naja das diente eigentlich auch nur als allgemeiner Hinweis, dass man zB keine SSH Verbindung zu dem UMTS-Gerät herstellen kann - das ginge nur über einen reverse ssh tunnel - oder den Webserver des Geräts ansurfen geht eben auch nicht...
    Aber natürlich könnte man das so wie du beschrieben hast (leider etwas verwirrend) auch machen, dass der UMTS-PI den Home-PI (oder einen anderen Internetserver) abfragt ob ein neues Bild hochgeladen werden soll..

  • Hallo Leute,

    kann mir einer ein Script schreiben das Folgendes kann?
    Das Script soll einfach alle 10min einen Ping absetzten um zu überprüfen ob das System mit dem Internet verbunden ist. Sollte das nicht der Fall sein, dann soll es ein Reboot machen.
    Da ich keine programmier Kenntnisse habe, fällt es mir schwer dies zu realisieren.

    Danke

  • Bash
    #!/bin/bash
    ping -c 1 8.8.8.8 > /dev/null
    if [ $? != 0 ]; then
     ifdown ppp0
     ifup ppp0
    fi

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Das wäre zwar ein einfacher Code aber nicht so super, da ja der Befehl ansich ohne einen Fehler zurück zu geben ausgeführt wird , weil $? != 0 prüft ja nur ob der Befehl einen Exitcode nicht-gleich 0 ausgegeben hat...

    Besser wäre es die Ausgabe des ping's auf " 1 received " zu prüfen und auch einen Timeout von 30sek zu verwenden da ping ansonsten auf 2 RTTs wartet und das kann ziemlich lange dauern... Und die Ausgabe vom ping Befehl sollte man bei solch einer einfachen Prüfung auch aufs Minimum beschränken, also den Parameter -q nutzen ;)


    Also ich würd wie folgt vorgehen:

    • Script /usr/local/bin/pingcheck.sh mit folgendem Inhalt anlegen:

    • Script ggf ausführbar machen:
      Code
      chmod +x /usr/local/bin/pingcheck.sh
    • Script in die Crontab des root Benutzers eintragen:

      Code
      sudo crontab -e


      (um die crontab lieber mit nano anstatt vi zu bearbeiten vor dem Befehl ein mal folgendes ausführen: export EDITOR=nano)

      Code
      * * * * *	/bin/bash /usr/local/bin/pingcheck.sh >/dev/null 2>&1


      Das sorgt dafür dass das Script jede Minute ausgeführt wird und ggf Ausgaben/Fehler in den Linux-Mülleimer umgeleitet werden, weil man die eh nich lesen kann..

    Ein TIMEOUT von 30 Sekunden sollte reichen, höher sollte man das imho auf keinen Fall stellen und niedriger brauch mans auch nicht stellen ;)

    8.8.8.8 ist einer der frei zugänglichen DomainNameServer von Google, die sollten eigentlich immer erreichbar sein. Als INGip auch am besten immer eine IP eintragen weil mit einer Host könnte es Auflösungsprobleme geben..


    Ein Problem mit solch einem Script könnte aber sein das durchs ifdown & ifup von ppp0 es nicht zu einer Neueinwahl kommt...

  • Hallo,

    vielen Dank. In Moment mache ich gerade einen Langzeittest. Die Kamera wird jetzt 14 Tage laufen ohne irgendwelche Änderungen von meiner Seite.
    Sie macht Stündlich ein Foto und wird jede Nacht um 3 Uhr einen Reboot machen. Auch wenn der Reboot nicht erforderlich ist, möchte ich herausfinden wie lange sie das mit macht. Seit 3 Tagen läuft alles Problemlos. Da ich noch einen DC/DC (12v auf 5v) Wandler eingebaut habe, möchte ich wissen wie stabil dieser funktioniert. Das Script werde ich auf jeden Fall auch testen wollen. Vielleicht kommen auch noch ein paar Änderungen. Schauen wir mal :)

    Gruß

  • Hallo,

    gestern war es dann soweit. Die Kamera ist abgestürzt und bin von außen nicht mehr auf die Kamera gekommen. Da konnte ich nur noch den Stecker ziehen. Habe sie dann wieder neu gestartet und lief auch gleich wieder normal.
    Aber ich wollte ja das mit dem Script machen. Habe es eingerichtet und in Moment läuft sie jetzt wieder. Habe das Script ein wenig geändert, daich ja mit Saskis3g arbeite. Das ifdown ppp0 und ifup ppp0 zeigte keine Wirkung. Ist ja auch egal und habe es anders hinbekommen.

    Die Crontab habe ich angepasst und wie gesagt, läuft sie jetzt wieder. Mal gespannt wie lange. Ein Ping wir alle 5min abgesetzt. Ein reboot wird jeden dritten Tag ausgeführt.

    Jetzt habe ich noch eine Frage.
    Wenn den Pi neu starte erkennt er immer meinen Surf-Stick als 12d1:1446. Mache ich jetzt einen Reboot wird der Stick als 12d1:140c erkannt. Kann ich das irgendwie festlegen? Das mit /dev/usbtty hat irgendwie nie so richtig funktioniert, deswegen das direkte.

    Gruß

  • Wenn den Pi neu starte erkennt er immer meinen Surf-Stick als 12d1:1446. Mache ich jetzt einen Reboot wird der Stick als 12d1:140c erkannt. Kann ich das irgendwie festlegen? Das mit /dev/usbtty hat irgendwie nie so richtig funktioniert, deswegen das direkte.

    idVendor und idProduct dürfte sich eigentlich nicht ändern.
    Was sich aber ändern könnte ist die /dev/ Zuweisung, also zB ttyUSB0 oder ttyUSB1 usw. Oder die Bus:Device Adresse.
    Dieses Problem lässt sich aber ziemlich einfach mithilfe von UDEV lösen.

    Führ dazu folgenden Befehl aus:

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

    (oder einfach nur lsusb -v und dann den entsprechenden Abschnitt deines Geräts prüfen)

    Da sollte dann als idVendor der von dir verwendete Stick auftauchen. Du benötigst besagte idVendor und den dadrunter stehenden idProduct Wert, ohne die vorangestellte 0x

    Dann erstellst du eine UDEV Regel die zum Beispiel wie folgt aussehen könnte:
    sudo nano /etc/udev/rules.d/70-umts.rules

    Code
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2345", ATTRS{idProduct}=="0200", SYMLINK+="UMTS"

    Wenn dann das System bzw udev (neu)startet, wird immer ein Symlink (Verknüpfung) nach /dev/UMTS erzeugt und dein Gerät ist immer darüber ansprechbar


    PS: Das lässt sich mit allen Geräten so machen, siehe dazu: http://wiki.ubuntuusers.de/udev

Jetzt mitmachen!

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