WSPR und Raspberry

Page content

Grundlagen WSPR sind hier https://www.delta25.de/wspr/Grundlagen/ zu finden. Ein detaillierter Bericht ist hier http://www.hjberndt.de/dvb/wspr.html

WsprryPi implementiert das WSPT Protokoll und nutzt Hardware auf dem Raspberry PI zur Erzeugung des Funksignals. Dieses Signal liegt an GPIO4 des Raspberrys an und kann theoretisch direkt über eine Antenne abgestrahlt werden. Leider besitzt das Signal aber einen zu hohen Anteil an Oberwellen und muss daher via einem passenden Tiefpaß mit einer Antenne verbunden werden.

Das “Original” WsprryBi liegt auf GitHub hier https://github.com/DanAnkers/WsprryPi, ist allerdings viele Jahre alt und funktioniert so nicht auf Raspberry Pi 4. Eine passende Version findet man hier https://github.com/threeme3/WsprryPi, wobei das Makefile mit dem Namen makefile2 zu verwenden ist.

Ein einfacher Aufruf

wspr -r -o <callsign> <locator> 10 15m

sendet z.B. mit 10mW auf dem 15m Band. Die Ausgabe des Tools sieht in etwa aus wie folgt:

Detected Raspberry Pi version 4
WSPR packet contents:
  Callsign: xxx
  Locator:  JO40HC
  Power:    10 dBm
Requested TX frequencies:
  21.096100 MHz
Extra options:
  NTP will be used to periodically calibrate the transmission frequency
  Transmissions will continue forever until stopped with CTRL-C
  A small random frequency offset will be added to all transmissions

Ready to transmit (setup complete)...
Desired center frequency for WSPR transmission: 21.096078 MHz

Den Locator-String kann man z.B. mit diesem Tool https://k7fry.com/grid/ ermitteln. Mein Locator ist z.B. JO40HC .

Mittels Transceiver kann man verifizieren, dass das eigene Signal wirklich ausgesendet wird. Ein 5 cm Draht aufgesteckt auf GPIO4 bringt auf meinem Receiver in 10 Meter Umkreis ein starkes und deutliches Signal.

Unter https://www.wsprnet.org/drupal/wsprnet/map kann man die weltweit momentan sichtbaren WSPR Baken sehen.

Achtung: Die Aussendung von WSPR Signalen erfordert den Besitz einer Amateurfunk Zulassung!

Decodieren von WSPR Signalen

Zum Dekodieren gibt es zahlreiche Tools, ich habe WSJT-X verwendet.

Ich habe kein für OpenSuse geeignetes RPM gefunden, das Tool kann aber von Source her compiliert werden. Unter OpenSuse 15.3 müssen dazu eine ganze Menge von Headern und Bibliotheken nachinstalliert werden.

Im folgenden meine Liste von zu installierenden Dependencies. Diese kann nach erfolgter Installation erzeugt werden mittels

cut -d "|" -f 1-4 -s --output-delimiter " | " /var/log/zypp/history | grep -v " radd "

In der Liste sind auch viele transitive Dependencies, d.h. dies sind Abhängigkeiten anderer Abhängigkeiten und werden automatisch mitinstalliert. Die ganzen libboost_-Dependencies habe ich alle installiert, ohne zu prüfen welche genau benötigt wird. Das war weniger Aufwand.

2021-12-30 18:09:42 | install | gcc7-fortran | 7.5.0+r278197-4.30.1
2021-12-30 18:09:42 | install | gcc-fortran | 7-3.9.1
2021-12-30 18:23:04 | install | libboost_atomic1_66_0 | 1.66.0-10.1
2021-12-30 18:23:04 | install | libboost_chrono1_66_0 | 1.66.0-10.1
2021-12-30 18:23:04 | install | libboost_container1_66_0 | 1.66.0-10.1
2021-12-30 18:23:05 | install | libboost_context1_66_0 | 1.66.0-10.1
2021-12-30 18:23:05 | install | libboost_graph1_66_0 | 1.66.0-10.1
2021-12-30 18:23:07 | install | libboost_headers1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:07 | install | libboost_log1_66_0 | 1.66.0-10.1
2021-12-30 18:23:07 | install | libboost_math1_66_0 | 1.66.0-10.1
2021-12-30 18:23:07 | install | libboost_numpy-py3-1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_python-py2_7-1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_python-py3-1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_random1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_stacktrace1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_test1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_type_erasure1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libboost_wave1_66_0 | 1.66.0-10.1
2021-12-30 18:23:08 | install | libibumad3 | 31.0-2.14
2021-12-30 18:23:08 | install | libinfinipath4 | 3.3-3.22
2021-12-30 18:23:09 | install | libpsm2-2 | 11.2.185-1.45
2021-12-30 18:23:09 | install | libucm0 | 1.9.0-2.11
2021-12-30 18:23:09 | install | mpi-selector | 1.0.3-1.25
2021-12-30 18:23:09 | install | openmpi2-config | 2.1.6-10.19
2021-12-30 18:23:09 | install | rsocket | 31.0-2.14
2021-12-30 18:23:09 | install | libboost_timer1_66_0 | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_fiber1_66_0 | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_coroutine1_66_0 | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_system1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_signals1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_serialization1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_regex1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_program_options1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:09 | install | libboost_locale1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_iostreams1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_graph1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_context1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_container1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_chrono1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_atomic1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_math1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_numpy-py3-1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_python-py2_7-1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_python-py3-1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_mpi_python-py3-1_66_0 | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_random1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_stacktrace1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_test1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libboost_type_erasure1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:10 | install | libibmad5 | 31.0-2.14
2021-12-30 18:23:10 | install | libpsm_infinipath1 | 3.3-3.22
2021-12-30 18:23:10 | install | libucs0 | 1.9.0-2.11
2021-12-30 18:23:11 | install | libboost_timer1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_filesystem1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_date_time1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_fiber1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_coroutine1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libibnetdisc5 | 31.0-2.14
2021-12-30 18:23:11 | install | libfabric1 | 1.11.2-1.4
2021-12-30 18:23:11 | install | libuct0 | 1.9.0-2.11
2021-12-30 18:23:11 | install | libboost_wave1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_thread1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | libboost_log1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:11 | install | infiniband-diags | 31.0-2.14
2021-12-30 18:23:11 | install | libucp0 | 1.9.0-2.11
2021-12-30 18:23:12 | install | rdma-core-devel | 31.0-2.14
2021-12-30 18:23:12 | install | openmpi2-libs | 2.1.6-10.19
2021-12-30 18:23:12 | install | openmpi2 | 2.1.6-10.19
2021-12-30 18:23:12 | install | openmpi2-devel | 2.1.6-10.19
2021-12-30 18:23:12 | install | libboost_mpi1_66_0 | 1.66.0-10.1
2021-12-30 18:23:12 | install | libboost_mpi1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:12 | install | libboost_graph_parallel1_66_0 | 1.66.0-10.1
2021-12-30 18:23:12 | install | libboost_mpi_python-py3-1_66_0-devel | 1.66.0-10.1
2021-12-30 18:23:12 | install | libboost_graph_parallel1_66_0-devel | 1.66.0-10.1
2021-12-30 18:24:02 | install | fftw3-threads-devel | 3.3.9-1.6
2021-12-30 18:24:03 | install | libfftw3_mpi3 | 3.3.9-1.6
2021-12-30 18:24:03 | install | fftw3-mpi-devel | 3.3.9-1.6
2021-12-30 18:24:40 | install | libqt5-qtserialport-devel | 5.12.7-1.49
2021-12-30 18:25:03 | install | libpulse-devel | 14.2-4.2
2021-12-30 18:25:03 | install | libqt5-qtmultimedia-devel | 5.12.7-2.14
2021-12-30 18:25:39 | install | ruby2.5-rubygem-asciidoctor | 2.0.10-1.22

Nach dem Compilieren und installieren kann man WSJT-X starten.

WSJT-X Main window

WSJT-X Hauptfenster

WSJT-X Waterfall window

WSJT-X Wasserfall Fenster

Wenn der Transceiver auf die WSPR Frequenz eingestellt wird und sein Audio-Ausgang mit dem Eingang des PCs verbunden wird, kann WSJT-X dieses Eingangssignals dekodieren.