Website-Icon .: blog cscholz.io :.

Linux: UMTS Signalstärke auslesen in bash ausgeben

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.

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
Die mobile Version verlassen