Freitag, 16. Januar 2009

WLAN Signal Power Beep Script

Wieder einmal wurde ich beeindruckt von der IT-Solution™-Power, die Linux dem Normalsterblichen völlig selbstverständlich zur Verfügung stellt. Mein Problem war im Prinzip, dass sich mein WLAN Adapter draußen befindet und ich beim Ausrichten nicht auf meinen Bildschirm schauen konnte wie gut die Signalstärke war. Also schrieb ich mir schnell ein Skript welches mir die 'Link Quality' in Audio Signale mittels PC-Speaker ausgibt - denn die konnte ich draußen noch sehr gut hören.

while true; do

QUALY=`/sbin/iwconfig wlan0 | /bin/grep "Link Quality" | /usr/bin/perl -pe 's/.*=(\d+)\/\d+.*/$1/g'`
FREQ=$(($QUALY * 100))

if [ $FREQ == 0 ]; then
FREQ=100;
fi

echo "Beeping at freq $FREQ"
sleep 1 && /usr/bin/beep -f $FREQ -r 2

done

Natürlich hätte man das auch mit Windows machen können, aber eben nicht so schnell & einfach. Das 'Link Quality' in Zeile 3 gilt anzupassen, sollte es in deutsch sein. Das Kernel Modul für den PC-Speaker sollte geladen sein sowie das Programm `beep` installiert.

Update: Zugegeben, beep ist nicht gerade sehr flexibel. Man kann die Lautstärke nicht einstellen, Ausgabe über Kopfhörer nicht möglich usw. Außerdem musste ich mittlerweile feststellen dass die 'Link Quality' nicht sehr ausschlaggebend für die Gesamt-Qualität ist. Selbst bei über 50% kann die Verbindung immer noch schnell zusammenbrechen wenn der Signal Level einfach zu schlecht ist. Also habe ich mein Skript ein wenig modifiziert, Voraussetzung diesmal ist übrigens sox und eine geeignete Sound-Datei. Ich gehe hier von einem Mindest Signal Level von -90 aus und mein Interface ist wlan0:

while true; do

QUALY=`sudo iwconfig wlan0 | grep "Signal level" | perl -pe 's#.*Signal level:(-\d+) dBm.*#$1#'`
PITCH=`echo "scale=2; $(((92-($QUALY*-1))))/0.01" | bc`
echo -ne "\r$PITCH"
sleep 0.5 && play -q "beep.wav" pitch $PITCH

done

Keine Kommentare:

Kommentar veröffentlichen