Als ich vor einigen Tagen per UMTS mal wieder eine relativ schlechte Verbindung hatte, fragte ich mich, ob man nicht ein bash script schreiben könnte, dass die UMTS Signalstärke regelmäßig ausließt und auf der bash ausgibt um so den UMTS stick evtl. "ausrichten" zu können.

    Das ganze gestaltete sich jedoch schwieriger als gedacht. Mittels minicom kann man zwar auf den UMTS-Stick (Modem) zugreifen und auch die Signalstärke ausgeben lassen AT+CSQ, jedoch ließ sich das ganze nicht so automatisieren.

    Mit viel gefummel hab ich dann doch irgendwann hinbekommen, leider nur wenn der UMTS Stick offline ist.

    • mittels cat /dev/ttyUSB0 > $tempfile lass ich mir die Antworten des Modems in eine Datei schreiben.
    • durch echo -ne "AT+CSQr" > /dev/ttyUSB0 frage ich die Signalstärke ab
    • strings /tmp/test.log | grep '[0-9]+,[0-9]{2}' | awk '{print $2} ließt aus der binärdatei! den Signalwert aus
    • und durch ATZ resettet ich das Modem wieder.

    Die Befehle jeweils einige Zeit brauchen, habe ich eine Pausen mittels sleep eingebaut. Das fertige Script sieht dann wiefolgt aus:

    #!/bin/bash
    #Programm while.sh
    
    tempfile=$(mktemp)
    # modem auslesen
    cat /dev/ttyUSB0 > /tmp/test.log &
    sleep 5
    count=0           #Zähler auf Null setzen
    
    #So lange durchlaufen  bis count nicht mehr unter 10 ist
    while [ $count -le 2 ]
     do
     echo -ne "AT+CSQr" > /dev/ttyUSB0
     sleep 2
     signal=$(strings /tmp/test.log | grep '[0-9]+,[0-9]{2}' | awk '{print $2}')
     echo "Signal:" $signal
     sleep 11
     echo -ne "ATZr" > /dev/ttyUSB0
     echo > /tmp/test.log
     sleep 2
     done
    exit 0

    aufgerufen werden muss es mittels

    ./umtssignal.sh && killall cat
    

    1 Kommentar

    Leave A Reply