Hier klicken, um diese Seite im Design für einfache Browser (z.B. Textbrowser) zu sehen. Natur- und Heimatfreunde Maxsain Zusammen für Maxsain & Zürbach


🗼️  Funkreichweiten mit Signal-Server berechnen

(Please find this text in English here)


Stand: 2025-09-23



Worum geht es?

Wer sich mit der Ausbreitung von Funkwellen beschäftigt, sei es professionell oder als Funkamateur, kommt möglicherweise an den Punkt, die Ausbreitung eines Signals auf Frequenzen ab 50 MHz aufwärts auf einer Landkarte oder im Geländerelief simulieren zu wollen. Dafür existiert quelloffene Software wie Signal-Server. Da die Verwendung dieses Kommandozeilenprogramms jedoch nicht selbsterklärend ist und insbesondere die Einbettung der Ergebnisse in eine Karte nicht trivial ist, möchte ich hier einige Hinweise geben, um den Einstieg zu erleichtern. Ein grundlegendes Verständnis der Kommandozeile, Git und Linux dürfte Voraussetzung sein, um die nachfolgenden Schritte nachvollziehen zu können.

Die Software ist im Laufe der Jahre von verschiedenen Personen geforkt worden. Ich beziehe mich in dieser Beschreibung auf diese Version, wobei viele andere Varianten vermutlich genauso funktionieren werden. Signal-Server geht aus der Software SPLAT! hervor, die bis heute in verschiedenen Linux-Distributionen verfügbar ist und möglicherweise ebenfalls mit kleinen Anpassungen nach dieser Anleitung genutzt werden kann.

Nachdem die Software nach der zugehörigen verlinkten Anleitung installiert bzw. kompiliert worden ist, müssen Höhendaten (Reliefdaten) für den Bereich beschafft werden, in dem man Berechnungen durchführen möchte. In der Theorie existieren hierfür viele mitunter sehr detaillierte und hochwertige Quellen, wobei mir die Umwandlung in zu Signal-Server kompatible Formate oftmals nicht gelungen ist. Die groben aber aus meiner Sicht im Fernfeld vollkommen ausreichenden SRTM-Daten der NASA lassen sich jedoch verwenden. Nach dem Herunterladen und Entpacken müssen diese in das von Signal-Server genutzte SDF-Format umgewandelt werden. Dafür findet sich im Unterordner utils/sdf/usgs2sdf das Programm srtm2sdf, welches möglicherweise zuvor mit dem Aufruf von make gesondert kompiliert werden muss. Nähere Informationen dazu finden sich in der README.md in diesem Unterordner. Die SDF-Dateien können dann in den Unterordner data verschoben werden.

Nun ist es an der Zeit, die erste Abdeckungskarte zu zeichnen. Das Programm selbst befindet sich im Unterordner build und lässt sich dort mit ./signalserver aufrufen. Ich werde an dieser Stelle nicht näher auf die Kommandozeilenoptione der Software eingehen, da diese gut beschrieben sind. Für einen ersten Test eignet sich folgender Aufruf, wobei die Koordinaten an die eigenen Bedürfnisse angepasst werden sollten:

./signalserver -sdf ../data/ -lat 50.55123 -lon 7.78321 -txh 15 -f 2320 -erp 1000 -rxh 5 -rt -120 -dbm -m -o test1 -R 160 -pm 1

Dabei wird zunächst der Pfad zu den Höhendaten angegeben, gefolgt vom Breitengrad (lat), dem Längengrad (lon), der Höhe der Sendeantenne über Grund in Metern (txh), der Frequenz in MHz (f), der effektiven Strahlungsleistung in Watt (erp), der Höhe der Empfangsantenne über Grund in Metern (rxh) und der Empfänger-Threshold in dBm (rt). Da es sich um eine US-amerikanische Software handelt, müssen mit -m explizit metrische Einheiten aktiviert werden. Mit -o wird der Name für die Ausgabedatei festgelegt, mit -R der zu berechnende Radius um den Sender in Kilometern und durch -pm wird mit ITM eines von mehreren Ausbreitungsmodellen für die Berechnung gewählt.



🗺️   Ausbreitung, aber bitte mit Karte

Als Ergebnis erhalten wir eine Datei test1.ppm im gleichen Ordner. Dabei handelt es sich um eine Bilddatei mit der Ausbreitung, jedoch ohne geographische Orientierungspunkte. Für eine sinnvolle Nutzung müssen wir daher eine Karte hinterlegen. Im Sinne hoher Flexibilität habe ich mich dafür entschieden, diese Bilddatei in ein Overlay für eine browserbasierte Openstreetmap-Karte umzuwandeln. Dies geschieht zunächst mit dem kommandozeilenbasierten Grafikpaket Imagemagick (das möglicherweise zunächst installiert werden muss und in gängigen Linux-Distributionen enthalten ist):

convert test1.ppm -transparent "#ffffff" test1_trans.png
convert test1_trans.png -resize 3452x3452\! test1_resize.png
convert test1_resize.png -alpha set -background none -channel A -evaluate multiply 0.5 +channel test1.png

Was ist hier passiert? Wir nutzen das convert-Werkzeug von Imagemagick, um in der ersten Zeile den weißen Bereich der Ausbreitungskarte in transparente Fläche umzuwandeln. In der zweiten Zeile skalieren wir das Bild auf gleiche Länge und Breite. In diesem Fall angepasst an die Bildgröße, die Signal-Server automatisch bei Radius 160 km wählt. In der dritten Zeile wird schließlich die Deckkraft der Ausbreitungskarte auf 50 Prozent gesetzt, damit die Karte im Hintergrund durchschimmern kann.

Hinweis: Je nach Version und Distribution kann es sein, dass jedem convert-Befehl der Befehl magick vorangestellt werden muss: magick convert test1...


Bildschirmfoto eines Aufrufs von Signal-Server im Terminal
Bildschirmfoto eines Aufrufs von Signal-Server im Terminal


🌍️   Openstreetmap im Browser

Ein weitverbreitetes Framework, um Openstreetmap-Karten in Websites einzubinden, ist Leaflet. Es ist damit möglich, interaktiv in Karten hineinzuzoomen, was zugleich auch unsere Ausbreitungskarte interaktiv macht. Wir können Leaflet herunterladen, in einen Ordner neben Signal-Server entpacken und lokal nutzen. In diesen Ordner schieben wir eine zusätzliche Datei. Und zwar die HTML-Datei, die die Landkarte und die Ausbreitungsdatei miteinander verbindet. Es wird kein eigener Webserver benötigt, der Aufruf der lokalen HTML-Datei im Browser genügt. Sie kann hier heruntergeladen und an die eigenen Bedürfnisse angepasst werden. Hier ist insbesondere die Anpassung der Koordinaten wichtig. Zum einen der Kartenmittelpunkt: in eckigen Klammern, zunächst Breitengrad, dann Längengrad. Werte östlicher Länge sind positiv:

var Karte = L.map('meineKarte').setView([50.55123, 7.78321], 12);

Und dann die Randpunkte der Ausbreitungskarte nach dem gleichen Muster, wie sie von Signal-Server an der Konsole ausgegeben werden, sobald die Berechnung beendet ist:

[info] Area boundaries:52.312300 | 10.632100 | 48.712300 | 4.932100

Umgesetzt in die HTML-Datei sieht das wie folgt aus:

imageBounds = [[52.3123, 10.6321], [48.7123, 4.9321]];

Natürlich muss evtl. auch die URL angepasst werden:

var imageUrl = '../Signal-Server/build/test1.png',

Mir fiel auf, dass die Karte mit den von Signal-Server ausgegebenen Koordinaten einen leichten Versatz nach Norden hat, den ich mir nicht erklären kann. Wenn ich beim Breitengrad jeweils 0.03 subtrahiere, passt der Standort in etwa. Weitere Feinjustage ist empfohlen.


Bildschirmfoto einer Ausbreitungskarte auf Openstreetmap mit Leaflet im Browser
Bildschirfoto einer Ausbreitungskarte auf Openstreetmap mit Leaflet im Browser


📈️   Geländemodell zwischen zwei Punkten

Neben den Karten kann Signal-Server auch Geländemodelle zwischen zwei Punkten berechnen. Dabei werden Textdateien erzeugt, die das Höhenprofil und die Fresnelzonen beinhalten. Diese lassen sich dann z.B. in gnuplot oder eine Tabellenkalkulation einlesen und dort visualisieren. Ein Beispielbefehl kann so aussehen:

/signalserver -sdf ../data -lat 50.745 -lon 7.956 -txh 10.0 -m -erp 10.0 -f 433.0 -R 30-pm 1 -rt -o MeinStandort -rxh 10.0 -rla 50.213 -rlo 7.255 -ng

Neben vielen Parametern, die uns aus dem Beispiel oben bereits bekannt sind, finden wir hier am Ende die Parameter für Empfängerhöhe (rxh) und die geographischen Koordinaten (rla und rlo) sowie einen Parameter, um den Graphen zu normalisieren.



ℹ️   Abschließendes

Signal-Server ist ein mächtiges Werkzeug, das eine zeitlose Alternative zu Programmen wie Radio Mobile bieten kann. Ab Frequenzen von 30 GHz wird die direkte Sichtlinie berechnet. Somit ist das Werkzeug nicht nur für die Berechnung der Funkausbreitung interessant, sondern kann auch genutzt werden, um zu prüfen, welche Orte von einem bestimmen Punkt visuell sichtbar sind.

Ein weiterer Entwicklungsschritt wäre, die Prozesse der Kartenerstellung zu automatisieren, insbesondere die Übernahme der Koordinaten in die HTML-Datei sowie möglicherweise ein Umschalten zwischen verschiedenen Ausbreitungsmodellen aus dem Browser heraus zu ermöglichen.

Es gibt auch die Möglichkeit, aus Signal-Server heraus KML-Dateien zu erzeugen, und die Ausbreitungskarten somit in kommerzielle Software einzubetten oder aber in freie Software wie Viking und QGIS. Dieser Weg man in manchen Fällen einfacher sein. Es sei auch erwähnt, dass es mit signalserver_gui eine browserbasierte Lösung zur Bedienung von Signal-Server gibt, die jedoch recht viele Python-Bibliotheken voraussetzt und zudem zwar hilfreich bei Peer-to-Peer-Geländereliefs sein kann, aber leider keine Kartendarstellung besitzt.



Über mich und Kontakt

Sie finden hier Kontaktmöglichkeiten und weitere Informationen über mich.



     
Impressum, Schlichtungsstelle und Datenschutzerklärung