VisualWSPR: Das neue WSPR RX/TX Programm für LINUX 
(PC und Raspi, Odroid...)

WSPR Sender/Empfänger  
mit komfortabler Benutzeroberfläche

STARK ERWEITERTE AKTUELLE LINUXVERSION

(allein dafür lohnt sich die Anschaffung eines ARM Minicomputers, läuft aber auch am PC)

Dieses Programm ist die stark erweiterte Linux Version, das bei weitem umfangreichste WSPR Empfangsprogramm dass es derzeit gibt.

Features:

WSPR Decoder von K9AN
FFT und GUI von DJ0ABR
Wasserfalldiagramm mit vielen Einstellmöglichkeiten
Liste empfangener Stationen
Direkte Kopplung mit WSPRNET.org, Spots werden im Minutentakt angezeigt
datenbankgestütze (SQlite) Speicherung der Spots von ein oder zwei Stationen
Listendarstellung mit direktem Vergleich von 2 Stationen
Grafische Darstellung auf Karten
Enthält ALLE Daten deiner jemals gesendeten oder empfangenen Spost (seit 2008, seit es WSPR gibt)
Steuerung des U02-DDS Synthesizers für WSPR Sendebetrieb via USB
Sende-/Empfangsbetrieb via Soundkarte mit jedem TRX
Multitasking Software macht reichlich Gebrauch von Multicore Prozessoren (auf ARM Boards ab Dualcore sinnvoll nutzbar)

ein paar Screenshots:

WSPR Empfangsfenster: Liste empfangener Stationen mit Vergleich: Liste der Spots mit Vergleich:

Systemvoraussetzungen:

Linuxrechner auf PC Basis oder ein ARM Scheckkartencomputer
ab 1 GHz CPU Takt
ab 1GB RAM
für ARM Computer: schnelle SD (Class 10) oder eMCC Karte (ab V4.0)
als Sender entweder ein U02-DDS-Synthesizer, angeschlossen via USB oder
ein normaler Transceiver mit einem handelsüblichen USB-Seriell Konverter für die PTT Steuerung

das Programm wurde getestet auf Ubuntu und debianbasierenden Distributionen sowie Opensuse.

 

Programminstallation:

Das sind die Schritte zur erfolgreichen Installation:

  1. Download der zum Computer passenden Version
  2. Installation von ein paar Systemprogrammen
  3. Prüfen der mono Version und ggf. baue einer aktuellen Version
  4. Installation des WSPR Programms

diese 4 Schritte werden im folgenden beschrieben:

 

1. DOWNLOAD 

fertige Binary Images Version 3.41-(inkl. SDR):

neu in V3.02: integrierter I/Q Demodulator. Es können jetzt herkömmliche Empfänger als auf SDR Empfänger benutzt werden.

64-bit PC Version:

für PCs mit installiertem 64-bit Linux -> DOWNLOAD

 

ARM Version (für Singleboad Computer wie Raspberry, Odroid...):

für Platinen mit ARM Prozessor (Odriod, Cubieboard, RaspberryPI2-Mod.B usw...). Für Quadcore CPUs (oder besser). (Nicht lauffähig auf langsamen Single/Dualcore CPUs wie dem älteren Raspberry, Banana usw.)
-> DOWNLOAD

ARM 64 bit Version (für Odroid-C2):

NUR für Odrois C2:
-> DOWNLOAD

ladet euch also eine der ZIP Dateien herunter. Die Installation wird später in Punkt 4 beschrieben.

 

UPDATE 3.8::

zunächst installiert man eine der obigen Versionen. Danach lädt man DIESE Datei und ersetzt damit die alte visualwspr.exe Datei. Weitere Hinweise zu diesem Update befinden sich am Ende dieser Seite.

Version 3.8: Optimiert damit es besser auf einem Raspberry PI 2-Mod B mit nur 1GB Ram läuft. Ich empfehle Odroid C2 oder XU4, auf diesen Systemen kann man fast wie mit einem großen PC arbeiten. Es geht auch der Raspi 3-Mod B, jedoch hat auch dieser nur 1GB Speicher.

 

 

U02-DDS Syntesizer:

wenn der U02 DDS Synthesizer als WSPR Sender zum Einsatz kommt, dann sollte ein Firmwareupgrade durchgeführt werden -> DOWNLOAD

 

2. Installation vom Systemprogrammen:

ein paar Systemprogramme müssen installiert werden, dazu benutzt man die Software-Installationstools seiner Linux-Distribution. Man installiert folgende Pakete:

libsndfile1 (heißt ev. auch libsndfile)
libsndfile1-dev (heißt ev. auch libsndfile-devel)
libfftw3-3 (heißt ev. auch libfftw3)
libfftw3-dev (heißt ev. auch libfftw3-devel)
mono-complete
gcc
make
unzip

je nach Version kann sich obiger Dateiname geringfügig ändern. Lassen sich obige Pakete nicht installieren, so sucht man nach alternativen Namen.

Raspberry PI 2 Model B benötigt zusätzlich folgende Pakete:

libtool
gettext
autoconf

 

Beispiel: In der Konsole gibt man ein

Ubuntu/Debian:     

sudo apt-get  install  libsndfile
usw...

Opensuse:  

sudo zypper in libsndfile
usw ...

 

zusätzlich dazu muss das Paket SQlite installiert sein (normalerweise die Version 3, also SQlite3). Da das bei allen mir bekannten Linuxdistributionen bereits standardmäßig installiert ist, braucht man hier nichts mehr zu machen.

 

3a. Aktualisieren der Version des Pakets "mono":

Im Moment werden bei allen mir bekannten Linuxdistributionen relativ alte und fehlerbehaftete Versionen des Pakets "mono" mitgeliefert, auch ein normaler Update ist nicht aktuell genug.

Aus diesem Grund muss die aktuellste Version selbst gebaut werden, was allerdings sehr einfach durch Eingabe einiger Kommandos in der Konsole zu erledigen ist. Je nach Geschwindigkeit des PC und des Internets kann das aber einige Zeit dauern (eine bis mehrere Stunden).

Man öffnet eine Konsole und geht in sein home Verzeichnis (wo man in der Regel sowieso schon drin ist). Dort gibt man der Reihe nach ein:

git clone git://github.com/mono/mono.git
cd mono
git checkout mono-3.12.0-branch   (oder eine spätere stabile Version)
./autogen.sh --prefix=/usr/local 
make
sudo make install 

Nach jeder Eingabe warten bis er fertig ist, wie gesagt, das kann länger dauern.

Jetzt den Computer neu booten !

Mögliches Problem (nur für Benutzer außerhalb US oder UK):
Wenn einige Zeit nach dem Ausführen des Kommandos make die Fehlermeldung  "Input string is not in the correct format" angezeigt wird, so liegt das an den Spracheinstellungen. In diesem Fall muss man das System auf Englisch zurückstellen. Nachdem make erfolgreich durchgelaufen ist, kann man wieder Deutsch einstellen. Beispiel: beim raspberry geht das mit dem Kommando raspi-config.

Mögliches Problem bei der Ausführung von make:
Wenn make abbricht mit der Meldung "The compiler gmcs doesnt appear to be usable", dann führe zunächst das Kommando: make get-monolite-latest aus und danach wieder make .

3b. Aktualisieren der gdi Libs:

Diese Bibliotheken sorgen für das Zeichnen der Bedienelemente am Bildschirm. Auch hier werden oft alte Versionen mit Ubuntu und anderen Distries mitgeliefert, ein Update kann daher nicht schaden. Dazu führt man folgende Befehle in der Kommandozeile aus:

Vorbereitung:

Ubuntu:   sudo  apt-get  install  libgtk2.0-dev  libjpeg8-devel

Opensuse: mit YAST installieren:  glib2-del , cairo-devel, libjpeg8-devel

git clone git://github.com/mono/libgdiplus
cd libgdiplus
./autogen.sh --prefix=/usr/local
make
sudo make install

3c. Installation von HAMLIB:

HAMLIB wird benutzt zur Fernsteuerung von Transceivern über die CAT Schnittstelle. Für die meisten Distributionen stehen fertige Pakete von hamlib zur Verfügung. Manchmal muss man vorher noch das passende Repository einbinden damit hamlib im Internet für die Installation gefunden wird.

Opensuse: 
füge diese Repository hinzu:  download.opensuse.org/repositories/hamradio/openSUSE_13.2  (oder die gewünschte OpenSuse Version).
Danach kann man hamlib mit Hilfe von Yast installieren. Zusätzlich kann man grig installeiren.

Ubuntu
soviel ich gesehen habe ist das Repository bereits fertig eingebunden. Die Installation erfolgt daher einfach durch Eingabe von:
apt-get install libhamlib-utils  grig

Prüfen der erfolgreichen Installation:
wenn hamlib richtig installiert wurde kann man mit dem Befehl:  rigctl  --list  eine Liste der unterstützten Transceiver ausgeben lassen.
Auch mit grig läßt sich eine sehr gute Prüfung durchführen.

4. Programminstallation:

unterhalb seines Benutzerverzeichnisses (also z.B.:  /home/bananapi) erstellt man ein Unterverzeichnis mit dem Namen wsprcan-master (oder irgend einem anderen Namen). Die zuvor heruntergeladene ZIP Datei kopiert man hier hinein. Jetzt muss noch die ZIP Datei entpackt werden mit:

unzip  wspr_xxx.zip  (Name je nach Version 32,64 bit oder ARM verschieden)

Das wars, wir sind fertig.  Unterhalb des Benutzerverzeichnisses ist jetzt das Unterverzeichnis  wsprcan-master, hier befinden sich alle Dateien.

Das WSPR Programm wird aufgerufen mit: 

mono visualwspr.exe

Wer es möchte kann sich diesen Aufruf auf ein Desktop-Symbol legen um es mit der Maus starten zu können. Wie das genau geht hängt von der Linuxdistribution ab. Aus einer Konsole heraus lässt es sich auch so starten. Der Start aus der Konsole hat den Vorteil, dass man den internen Programmablauf anhand der ausgegebenen Diagnosemeldungen verfolgen kann, so lassen sich Probleme leichter identifizieren.

 

5. Soundkartenauswahl:

das Programm greift auf die Default-Soundkarte zu. Das funktioniert normalerweise da man über eine Soundkarte verfügt.

Es gibt einige Spezialfälle wo die Soundkarte nicht, oder nicht die richtige, gefunden wird (z.B. wenn man 2 Soundkarten hat, wenn man über das Netzwerk zugreift, Verwirrungen im Zusammenhang mit Pulseaudio usw.)

Diesen Fall löse ich durch eine Konfigurationsdatei, in manchen Linuxinstallationen gibt es diese schon, in anderen fehlt sie und man muss sie erstellen. Die Datei heißt asound.cfg und befindet sich im Verzeichnis /etc. Sie sieht folgendermaßen aus (hier am Beispiel des Banana PI mit Lubuntu):

pcm.!default {
type hw
card 0
device 0
}
ctl.!default {
type hw
card 0
}

Beispiel: zusätzlich zur internen Soundkarte steckt man eine externe USB Soundkarte an. 

mit dem Befehl:  aplay  -l  (das -l ist ein Strich Lima) kann man sich die vorhandenen Soundkarten auflisten lassen. Die Karte 0 (card 0) ist in der Regel die interne Soundkarte. Die zweite USB Soundkarte bekommt dann die Nummer card 1.

Will man diese zweite Soundkarte benutzen, so ändert man in obiger Datei die Einträge card 0 nach card 1 ab. Dadurch wird die USB Soundkarte zur Default-Soundkarte (nach der Änderung bitte neu starten).

Raspberry PI2-Mod.B:

unter Raspbian ist das alles anders, wie DG6RCH herausgefunden hat. Möchte man eine externe USB Soundkarte benutzen, was wegen dem Line-IN wohl erforderlich ist, so muss man folgende Änderungen in Systemdateien durchführen:

Datei: /etc/modprobe.d/alsa-base.conf

in der Zeile: options snd- usb-audio index=-2 ändern auf index=0

Datei: /etc/modules

anfügen der Zeile: snd-usb-audio
sowie mit einem vorangestellten # die vorhande Zeile snd-bcm2835 auskommentieren, damit ist die interne Soundkarte abgeschaltet

danach neu booten.

Sound Aufnahme Optionen (ab Software Version 2.0):

dieses Programm benutzt das Linux Tool arecord um von der Soundkarte aufzuzeichnen.
Die Kommandozeilenoptionen sind:  -d 112 -f S16_LE -r 12000 -t wav

Manchmal kann es notwendig sein weitere Optionen hinzuzufügen, etwa um eine andere Soundkarte oder Kanal auszuwählen usw.

Diese zusätzlichen Optionen können im Setup Fenster eingetragen werden.

(Ich benutze manchmal die zusätzliche Option:  -Dplug:default . Das brauche ich dann, wenn ich das Programm auf einem Odroid Computer laufen lasse und es via Netzwerk fernbediene. Das ist schon etwas spezieller, zeigt aber was es alles für Möglichkeiten gibt).

 

6a. PTT Steuerung via RTS/DTR:

Hier wird beschrieben, wie die PTT eines Transceivers gesteuert wird.
(Wer einen U02-DDS Synthesizer benutzt kann diese Beschreibung überspringen)

Zur PTT Steuerung wird ein USB-Seriell Konverterkabel benutzt wie es sehr preiswert in jedem PC Laden zu bekommen ist.

Die PTT-Steuerung befindet sich an Pin 4 und alternativ auch an Pin 7 des 9-pol Sub-D Steckers. Allerdings muss der Ausgangspegel dieser Leitung noch zum PTT Eingang des Transceivers passend gemacht werden was jedoch sehr einfach ist.

(Wer bereits ein Soundkarteninterface mit PTT Steuerung hat, z.B. für PSK31, der hat folgendes vielleicht schon erledigt)

Dieses Bild zeigt den Aufbau. Der Transistor ist mit Sicht von unten auf die drei Pins gesehen gezeichnet. Die 3 Bauteile können leicht ins Steckergehäuse eingebaut werden.

Auf der Transceiverseite wird üblicherweise ein 6-pol PS2 Stecker für den Packet-Radio bzw.DATA Anschluss des Transceivers benutzt werden. Bei älteren Transceivern kann natürlich auch ein anderer, passender PTT Anschluss benutzt werden

Man verbindet Pin-5 des 9-pol Steckers mit dem Masse (GND) Pin der DATA Buchse.
Den Anschuss D (Drain) des BS170 verbindet man mit dem PTT Pin der DATA Buchse.

Bei der Gelegenheit können auch gleich die Audioanschlüsse gemacht werden, wie es im Kapitel "Anschluss der Soundkarte" beschrieben ist.

Fertig, jetzt kann das WSPR Programm die PTT steuern.

Bitte nicht vergessen, dass bei den meisten Transceiver über einen Menüpunkt die DATA (Packet-Radio) Buchse aktiviert werden muss !

! der aktive User Account muss die passende Berechtigung haben um auf den USB-serial Konverter (tty device) zuzugreifen.

ARM-Lubuntu: das ist standardmäßig OK, keine weiteren Aktionen erforderlich.

Ubuntu and Opensuse:  der normale Benutzer hat KEINE Zugriffsrechte. Entweder man startet das Programm als Administrator (root), oder besser, man für die Zugriffrechte seinem User Account hinzu. Das geht mit folgendem Kommando sehr einfach:  sudo   gpasswd   --add   username   dialout  (wobei username der Name des aktuell benutzten Logins ist). Nach diesem Eintrag bitte neu booten damit die Änderung wirksam wird.

 

6b. PTT Steuerung und automatische Frequenzeinstellung via HAMLIB:

Ab Version 2.1 unterstützt visualwspr die Transceiversteuerung via HAMLIB. Dazu muss hamlib natürlich installiert sein, wie oben beschrieben.

Es muss eine Anpassung an den eigenen Transceiver vorgenommen werden. Im Setup Fenster wählt man PTT-Mode: rigctl(hamlib) aus. Die Zeile RIG Control Script sieht standardmäßig so aus:

rigctl -m 114 -r /dev/ttyUSB1 -s 4800

Hier ändert man folgendes ab:

-m 114 ... anstelle der 114 muss die Transceivernummer des eigenen Funkgerätes eingetragen werden. die unterstützten Transceiver kann man in der Konsole mit dem Kommando rigctl -l  ausgeben lassen, eine mehr oder weniger aktuelle Liste befindet sich am Ende dieser Seite.

-f /dev/ttyUSB1 ... die Bezeichnung der seriellen Schnittstelle an welcher der Transceiver angeschlossen ist. In aller Regel wird man einen USB/Seriell Adapter benutzen. Dieser hat unter Linux die Bezeichung /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 ... usw. Die genaue Bezeichnung des eigenen USB/seriell Wandlers kann man mit dem Konsolenkommando  ls  /dev/tty*  ausgeben lassen. Hat man mehrere Wandler angeschlossen, muss man probieren welche der richtige ist, es ist aber empfehlenswert nur einen USB/seriell Wandler zu benutzen, das beugt Verwirrung vor. Bitte nicht vergessen, dass der eigene User Account zur Gruppe "dialout" gehören muss um Zugriff auf die seriellen Schnittstellen zu bekommen. Das kann man prüfen mit dem Konsolenkommendo groups , hier muss auch dialout ausgedruckt werden. Falls nicht dann bitte in der Benutzerverwaltung eintragen.

-s 4800 ... das ist die Baudrate zur Übertragung zum Transceiver. Hat der Transceiver ein Menü zur Einstellung der Baudrate, so muss dort natürlich die selbe angegeben werden. Es ist empfehlenswert hohe Baudraten zu benutzen, falls das möglich ist.

Weitere Optionen:

Benutzt man einen ICOM Transceiver so benötigt dieser eine CIV Adresse. Im Menü des Transceivers stellt man eine ein, oder übernimmt die voreingestellte. 
Beispiel: der Transceiver hat die CIV Nummer 127, dann ergänzt man die obige Zeile mit:  -c  127 (zwischen allen Eingaben muss ein Leerzeichen sein !)

automatisch hinzugefügte Einträge:

folgende Angaben ergänzt visualwspr automatisch, man muss sich nicht darum kümmern, ich erwähne es hier nur der Vollständigkeit wegen:

F 7038600 ... die Freuquenz. Bei jedem Bandwechsel wird damit der Transceiver auf die neue Frequenz umgeschaltet

T 0 oder T 1 ... damit wird die PTT des Transceivers geschaltet (falls PTT mode: rigtcl(hamlib) gewählt wurde).

7. weitere nützliche Einstellungen

alle temporären Daten werden im Unterverzeichnis wav gespeichert und nach der Auswertung wieder gelöscht. Wenn man keine Festplatte sondern eine SD Karte benutzt so kann man deren Lebensdauer verlängern wenn man dieses wav Verzeichnis als Ram-Disk anlegt.

Als root öffnet man die Datei:
/etc/fstab

und trägt dort folgende Zeile ein:

tmpfs   /home/userxyz/wsprcan-master/wav   tmpfs   nodev,nosuid,size=25M,mode=1777   0    0

Jetzt hat man eine 25MB große Partition im RAM und die SD Karte wird geschont.

Nach dem Eintrag bitte neu booten.

 

8. Erster Programmstart

Beim ersten Start geht sofort das Setup Fenster auf. Hier trägt man Rufzeichen und QTH-Locator ein. Weiters kann man die PTT aktivieren (external TRX) und mit dem Knopf "PTT manual ON/OFF" testen.

Außerdem gibt man die WSPR Parameter: Power, TX Interval und offset ein.

Danach geht man in der Reiter "WSPR Spots" und trägt bei Call-1 sein eigenes Rufzeichen und bei Call-2 das Rufzeichen eines Freundes ein mit dem man sich vergleichen möchte.

"WSPR-RX" ist das Hauptfenster des WSPR Empfängers. Nach dem Programmstart wird auf den Beginn eines WSPR Intervalls (geradzahlige Minute) gewartet, dabei zeigt die Statuszeile an: "wait for start".

Sobald ein WSPR Intervall beginnt startet die Aufzeichnung was man im Wasserfall und Spektrum beobachten kann. Jetzt kann man auch die Aufnahmelautstärke der Soundkarte so justieren dass die Ausstueuerungsanzeige (unten rechts) im grünen oder gelben Bereich ist. Unter Linux stellt man die Aufnahmelautstärke mit dem Alsamixer oder dem Pulseaudio-Volume-Control ein, je nachdem was im System eingerichtet ist.

! Nach dem Start wird im Hintergrund die WSPR Datenbank aufgebaut. Dazu werden alle jemals getätigten Spots (ab 2008) geladen und gespeichert. Im oberen Teil des Programmfensters steht "Database from ...". Hier sieht man welcher Zeitraum bereits geladen wurde. Die Datenbank baut sich im Hintergrund langsam auf, das kann sehr lange dauern. Da das System mit dieser Arbeit sehr ausgelastet ist sollte man warten bis alle Spots verarbeitet wurden bevor man den normalen Betrieb aufnimmt. Startet man das Programm aus einem Terminal (mit: mono visualwspr.exe) so kann man die Bearbeitungsschritte im Terminal verfolgen.

Jetzt ist alles fertig um mit dem Programm zu spielen, die weiteren Funktionen kannst du selbst entdecken, ich wünsche dabei viel Spaß !

DJ0ABR
Kurt

Update 3.6:

ab Version 3.5: unterstützt die gut bekannte Datenbank MYSQL, lokal oder über das Netzwerk. Die bisher übliche sqlite Datenbank wird ebenfalls unterstützt.

Die Datenbank kann im "SETUP" Fenster ausgewählt werden. Klicke auf  "Database Setup" und wähle die gewünschte Datenbank aus. Sobald hier Änderungen vorgenommen wurden muss das Programm neu gestartet werden !

Welche Datenbank sollte benutzt werden::

"normale Benutzer": sollten sqlite verwenden. Diese Datenbank benötigt keine spezielle Installation und läuft sofort nach der Programminstallation.

"erfahrene Benutzer": wenn man auf dem lokalen computer oder irgendwo im Heimnetzwerk einen MYSQL-Server installiert hat, so kann man mysql auswählen. Das hat einige Vorteile: zum einen  ist es schneller und zum anderen kann eine MYSQL Datenbank mehrere Installationen von visualwspr gleichzeitig bedienen. Das ist interessant wenn man z.B. zwei Rechner mit visualwspr laufen hat und beide auf die gleiche Datenbasis zurückgreifen können.

Die Datenbank (egal welche) wird nach dem Programmstart im Hintergrund mit sämtlichen deinen WSPR Spots (ab 2008) gefüllt. Das läuft vollautomatisch, in dieser Zeit kann das Programm ganz normal zum WSPR Funkbetrieb benutzt werden.

Damit visualwspr für die MySQL Datenbank zugreifen kann muss ein "Connector" installiert werden. Dazu lädt man hier 

https://dev.mysql.com/downloads/connector/net/6.9.html

die aktuelle Version herunter, als Platform wählt man: NET&mono. Es wird eine ZIP Datei heruntergeladen.

Diese ent-zippt man und geht dann in das Unterverzeichnis 4.5. Dort schreibt man (in einer Konsole) folgenden Befehl:

sudo gacutil -i MySql.Data.dll

Jetzt ist das System betriebsbereit und kann auf einen MySQL Server (lokal oder im Netzwerk) zugreifen.

60m Band Erweiterung:

nachdem es derzeit zwei unterschiedliche 60m WSPR Frequenzen gibt, kann man diese auswählen. Im Setup-Fenster rechts unten wählt man die gewünschte Frequenz (separat für RX und TX). Man kann auch beide Frequenzen wählen, dann werden diese wechselweise benutzt.