Bei SSTV-Aussendungen von der Internationalen Raumstation ISS – beispielsweise im Rahmen von ARISS-Aktionen – lassen sich die übertragenen Bilder mit relativ einfacher SDR-Hardware empfangen und dekodieren.
In diesem Beitrag beschreibe ich meine komplette Empfangskette unter Ubuntu. Als Empfänger kommt ein RTL-SDR zum Einsatz. SDRangel übernimmt Empfang, NFM-Demodulation, Satellitenverfolgung und die automatische Doppler-Korrektur. Das Audiosignal wird anschließend über ein virtuelles PipeWire-Audiogerät direkt an QSSTV weitergegeben.
Damit funktioniert der komplette Signalweg rein digital:
ISS / ARISS
│
│ 437,550 MHz
▼
RTL-SDR
│
▼
SDRangel
│
├── Satellite Tracker
│ └── automatische Doppler-Korrektur
│
├── NFM Demodulator
│ └── virtuelles Audiogerät "SSTV"
│
└── optional: zweiter NFM Demodulator
└── Lautsprecher zum Mithören
│
▼
PipeWire
│
SSTV.monitor
│
▼
QSSTV
│
▼
SSTV-Bild
Hinweis: Frequenz und Betriebsart können sich je nach ARISS-/ISS-SSTV-Aktion unterscheiden. Die hier beschriebene Konfiguration verwendet 437,550 MHz. Vor einem geplanten Empfang sollte daher immer geprüft werden, welche Frequenz und Betriebsart für die jeweilige Aussendung angekündigt wurde.
Benötigte Hardware und Software
Für meinen Aufbau verwende ich:
- RTL-SDR
- Ubuntu Linux
- SDRangel
- Satellite Tracker in SDRangel
- NFM-Demodulator in SDRangel
- PipeWire
- QSSTV
- eine geeignete Antenne für das 70-cm-Band
Optional verwende ich einen zweiten NFM-Demodulator in SDRangel, damit ich das SSTV-Signal gleichzeitig über die Lautsprecher mithören kann.
Virtuelles Audiogerät für SSTV anlegen
SDRangel muss sein demoduliertes Audiosignal irgendwie an QSSTV weitergeben. Dafür ist kein physisches Audiokabel und auch keine zweite Soundkarte erforderlich.
Unter aktuellen Ubuntu-Versionen übernimmt PipeWire das Audio-Routing. PipeWire stellt gleichzeitig eine PulseAudio-kompatible Schnittstelle bereit, sodass sich mit pactl sehr einfach ein virtuelles Audiogerät erzeugen lässt.
Im Terminal wird dafür folgender Befehl ausgeführt:
pactl load-module module-null-sink \
sink_name=SSTV \
sink_properties=device.description="SSTV"
Anschließend kann kontrolliert werden, ob das Gerät angelegt wurde:
pactl list short sinks | grep SSTV
Bei mir sieht die Ausgabe beispielsweise so aus:
24842 SSTV PipeWire float32le 2ch 48000Hz RUNNING
Damit existiert jetzt ein virtuelles Audio-Ausgabegerät mit dem Namen:
SSTV
PipeWire erzeugt gleichzeitig automatisch einen Monitor-Eingang:
SSTV.monitor
Genau dieser Monitor wird später von QSSTV als Audioeingang verwendet.
Der Audio-Signalweg sieht damit folgendermaßen aus:
SDRangel
│
▼
SSTV
│
▼
SSTV.monitor
│
▼
QSSTV
Vorhandene virtuelle Audiogeräte anzeigen
Alle vorhandenen Ausgabegeräte lassen sich mit folgendem Befehl anzeigen:
pactl list short sinks
Die verfügbaren Audioquellen zeigt:
pactl list short sources
Dort sollten anschließend sowohl SSTV als auch SSTV.monitor auftauchen.
Achtung bei mehrfacher Ausführung
Der Befehl zum Erzeugen des virtuellen Audiogerätes sollte nicht mehrfach hintereinander ausgeführt werden. Bei jedem Aufruf wird ein weiteres Null-Sink-Modul erzeugt. Dadurch können anschließend mehrere Geräte mit ähnlichem Namen vorhanden sein.
Die geladenen Module lassen sich kontrollieren mit:
pactl list short modules
SDRangel einrichten
Als Empfänger verwende ich einen RTL-SDR.
Für meinen aktuellen Aufbau sind die grundlegenden Einstellungen ungefähr:
Frequenz: 437,550 MHz
Samplerate: 1 MS/s
Decimation: 8
Gain: ca. 37–42 dB
LO ppm: abhängig vom verwendeten RTL-SDR
Die optimale Verstärkung hängt von Antenne, Standort und verwendetem SDR-Stick ab. In meinem Aufbau liegt der Gain beispielsweise bei ungefähr 40 dB.
NFM-Demodulator für SSTV einrichten
In SDRangel wird im RTL-SDR Device Set ein NFM Demodulator hinzugefügt.
Für meinen Aufbau verwende ich ungefähr folgende Parameter:
RF-Bandbreite: ca. 15 kHz
AF-Bandbreite: ca. 3 kHz
FM Deviation: ±5 kHz
Squelch: möglichst niedrig bzw. offen
In meiner aktuellen Konfiguration liegt die RF-Bandbreite beispielsweise bei rund 14,9 kHz und die AF-Bandbreite bei 3 kHz.
Der entscheidende Punkt ist die Audioausgabe des NFM-Demodulators.
Als Audiogerät wird nicht der normale Lautsprecherausgang verwendet, sondern das zuvor erzeugte virtuelle Gerät:
SSTV
Damit landet das demodulierte Audiosignal direkt im virtuellen PipeWire-Audiogerät.
Zweiten NFM-Demodulator zum Mithören verwenden
Optional kann in SDRangel ein zweiter NFM-Demodulator hinzugefügt werden.
Der erste Demodulator schickt sein Audiosignal an QSSTV:
NFM 1 → SSTV → SSTV.monitor → QSSTV
Der zweite Demodulator kann dagegen auf den normalen Audioausgang des Rechners gelegt werden:
NFM 2 → Lautsprecher
Damit kann man das charakteristische SSTV-Signal während des Empfangs hören, ohne die Audioverbindung zwischen SDRangel und QSSTV verändern zu müssen.
Der zweite Demodulator ist für die eigentliche SSTV-Decodierung nicht erforderlich.
SDRangel-Preset für den ISS-Empfang anlegen
Ein etwas weniger offensichtlicher Punkt bei der Einrichtung ist das Preset-System von SDRangel.
Damit der Satellite Tracker später die vorbereitete Empfangskonfiguration auswählen kann, sollte zunächst ein vollständiges Device-Set-Preset gespeichert werden.
Dazu wird zuerst die komplette gewünschte Konfiguration eingerichtet:
RTL-SDR
Center Frequency: 437,550 MHz
NFM Demodulator 1
Audio: SSTV
optional:
NFM Demodulator 2
Audio: Lautsprecher
Wenn alles korrekt eingestellt ist, wird diese Konfiguration als Preset gespeichert.
Im RTL-SDR Device Set – bei mir R0 – befindet sich dafür das Preset-/Stern-Symbol.
Dort wird ein neues Device-Set-Preset angelegt.
Beispielsweise:
Group: ISS-SSTV
Name: 437.550 - ISS-SSTV
Damit wird die vorbereitete Konfiguration einschließlich der zugehörigen Demodulatoren gespeichert.
Das ist wichtig, weil der Satellite Tracker später genau dieses Preset verwenden kann.
Preset dauerhaft speichern
Nach dem Erstellen des Presets sollte die SDRangel-Konfiguration gespeichert werden.
Je nach SDRangel-Version erfolgt das über die entsprechenden Einstellungen beziehungsweise über:
Preferences → Save all
Danach sollte das Preset auch nach einem Neustart von SDRangel weiterhin zur Verfügung stehen.
Warum das Preset wichtig ist
Der Satellite Tracker kann damit beim Satellitenempfang auf eine fertig konfigurierte Empfangskette zurückgreifen.
Das Preset enthält beispielsweise:
- den verwendeten SDR-Empfänger
- die eingestellte Frequenz
- die NFM-Demodulatoren
- Filtereinstellungen
- Audio-Routing
Dadurch muss die komplette Konfiguration nicht vor jedem Überflug neu aufgebaut werden.
Satellite Tracker hinzufügen
Als nächstes wird in SDRangel das Feature Satellite Tracker hinzugefügt.
Als Satellit wird die ISS ausgewählt.
Target: ISS
Außerdem müssen im Tracker die Koordinaten des eigenen Empfangsstandortes eingetragen werden.
Der Satellite Tracker kann anschließend unter anderem folgende Informationen anzeigen:
- AOS
- LOS
- Azimut
- Elevation
- Flugbahn
- maximale Elevation
AOS und LOS
AOS bedeutet Acquisition of Signal.
Das ist der Zeitpunkt, zu dem der Satellit am eigenen Standort über dem Horizont erscheint.
LOS bedeutet Loss of Signal.
Das ist der Zeitpunkt, zu dem die ISS wieder unter dem lokalen Horizont verschwindet.
Azimut und Elevation
Der Azimut gibt die Richtung auf dem Horizont an.
0° = Norden
90° = Osten
180° = Süden
270° = Westen
Die Elevation gibt dagegen die Höhe über dem Horizont an.
0° = Horizont
45° = halbe Höhe
90° = direkt über dem Beobachter
Im Polar-Diagramm von SDRangel lässt sich dadurch sehr gut erkennen, aus welcher Richtung die ISS kommt und wohin sich die Antenne während des Überflugs orientieren muss.
Preset im Satellite Tracker auswählen
Jetzt kommt der wichtige Schritt: Das zuvor erstellte Device-Set-Preset wird mit dem Satellite Tracker verbunden.
Im Satellite Tracker gibt es dafür den Bereich zur SDRangel-Steuerung.
Dort wird sinngemäß eingestellt:
Satellite: ISS
Device Set: R0
Preset: ISS-SSTV / 437.550 - ISS-SSTV
Das zuvor gespeicherte Preset sollte nun in der Auswahlliste erscheinen.
Falls es dort nicht auftaucht, sollte zuerst kontrolliert werden, ob tatsächlich ein Device-Set-Preset gespeichert wurde und ob sich das Preset in derselben SDRangel-Installation beziehungsweise demselben Profil befindet.
Das ist insbesondere dann relevant, wenn mehrere SDRangel-Versionen parallel installiert sind, beispielsweise Flatpak und eine manuell installierte Version.
Automatische Doppler-Korrektur
Die ISS bewegt sich mit ungefähr 28.000 km/h um die Erde.
Dadurch entsteht beim Funkempfang ein deutlich messbarer Dopplereffekt.
Wenn sich die ISS auf den Empfänger zubewegt, erscheint die empfangene Frequenz etwas höher. Nachdem sie den Beobachter passiert hat und sich wieder entfernt, erscheint die Frequenz etwas niedriger.
Das bedeutet vereinfacht:
ISS nähert sich
437,558 MHz
437,556 MHz
437,554 MHz
437,552 MHz
437,550 MHz
437,548 MHz
437,546 MHz
ISS entfernt sich
Die Werte sind hier nur zur Veranschaulichung dargestellt. Die tatsächliche Verschiebung hängt unter anderem von der relativen Geschwindigkeit zum Beobachter ab.
Ohne Doppler-Korrektur würde das Satellitensignal während des Überflugs durch das Empfangsfilter wandern.
SDRangel kann diese Frequenzverschiebung automatisch kompensieren.
Doppler-Korrektur im Satellite Tracker konfigurieren
Im Satellite Tracker wird der verwendete Demodulator mit der Satellitenverfolgung verbunden.
Für meinen Aufbau ist das:
Satellite: ISS
Channel: NFMDemod
Zusätzlich wird die tatsächliche Sendefrequenz angegeben beziehungsweise die im Preset gespeicherte Frequenz überschrieben.
Override preset frequency:
437.550 MHz
Der Satellite Tracker verwendet diese Frequenz als Referenz für die Berechnung der Doppler-Korrektur.
Während des Überflugs kann die im SDR angezeigte Frequenz deshalb beispielsweise bei:
437,558 MHz
liegen, obwohl die eigentliche Sendefrequenz:
437,550 MHz
beträgt.
Das ist kein Fehler, sondern genau die gewünschte Doppler-Korrektur.
Der komplette Zusammenhang sieht damit so aus:
Device-Set-Preset
ISS-SSTV
│
▼
Satellite Tracker
│
├── Satellite: ISS
├── Device Set: R0
├── Preset: ISS-SSTV
│
└── Referenzfrequenz: 437,550 MHz
│
▼
Doppler-Berechnung
│
▼
NFMDemod
QSSTV installieren und einrichten
Die eigentliche Bilddecodierung übernimmt QSSTV.
QSSTV bekommt dabei keinen direkten Zugriff auf den RTL-SDR. Das Programm erhält nur das bereits von SDRangel demodulierte Audiosignal.
Dafür verwenden wir den Monitor unseres virtuellen Audio-Sinks:
SSTV.monitor
Für die Kontrolle des Audio-Routings ist pavucontrol sehr hilfreich.
Falls es noch nicht installiert ist:
sudo apt install pavucontrol
Anschließend starten:
pavucontrol
Nun QSSTV starten.
Im Bereich für aktive Aufnahmeprogramme von pavucontrol sollte QSSTV erscheinen.
Als Aufnahmequelle wird dort eingestellt:
Monitor of SSTV
beziehungsweise:
SSTV.monitor
Damit steht die Audioverbindung:
SDRangel
│
▼
SSTV
│
▼
SSTV.monitor
│
▼
QSSTV
QSSTV-Einstellungen
In QSSTV verwende ich den normalen SSTV-Empfang mit automatischer Synchronisation.
Unter anderem sind bei mir folgende Optionen aktiviert:
Auto Slant: aktiviert
Autosave: aktiviert
Sensitivity: Normal
Solange kein gültiges SSTV-Signal empfangen wird, zeigt QSSTV:
No sync
Das ist völlig normal.
Sobald ein korrektes SSTV-Signal anliegt und die Synchronisationssignale erkannt werden, beginnt QSSTV automatisch mit dem Aufbau des Bildes.
Audioweg vor dem ISS-Überflug testen
Vor einem echten Überflug sollte kontrolliert werden, ob die komplette Audiokette funktioniert.
Zunächst:
pactl list short sinks
Dort sollte das Gerät:
SSTV
auftauchen.
Anschließend:
pactl list short sources
Dort sollte:
SSTV.monitor
vorhanden sein.
In pavucontrol kann zusätzlich kontrolliert werden, ob während der Wiedergabe aus SDRangel ein Audiopegel vorhanden ist.
Auch QSSTV sollte einen entsprechenden Audiopegel anzeigen.
Frequenzfehler des RTL-SDR und Doppler sind zwei verschiedene Dinge
Eine wichtige Unterscheidung ist der Unterschied zwischen Doppler-Korrektur und einem Frequenzfehler des verwendeten SDR-Sticks.
Die Doppler-Korrektur kompensiert:
Bewegung ISS ↔ Empfänger
Die PPM-Korrektur des RTL-SDR kompensiert dagegen:
Frequenzfehler des Oszillators im SDR-Stick
Wenn ein RTL-SDR beispielsweise dauerhaft einige Kilohertz neben der tatsächlichen Frequenz liegt, sollte dieser Fehler über die entsprechende PPM-Korrektur kalibriert werden.
Dadurch muss während eines ISS-Überflugs nicht zusätzlich manuell nachgestimmt werden.
Typischer Ablauf vor einem ARISS-/ISS-SSTV-Überflug
- RTL-SDR anschließen.
- Virtuelles Audiogerät
SSTVkontrollieren. - SDRangel starten.
- ISS-SSTV-Preset laden.
- Satellite Tracker öffnen.
- Als Satellit die ISS auswählen.
- Device Set und ISS-SSTV-Preset auswählen.
- 437,550 MHz als Referenzfrequenz kontrollieren.
- Doppler-Korrektur für den NFM-Demodulator aktivieren.
- Audioausgang des SSTV-Demodulators auf
SSTVstellen. - QSSTV starten.
- QSSTV mit
SSTV.monitorverbinden. - Audiopegel kontrollieren.
- Auf AOS der ISS warten.
Ab diesem Zeitpunkt übernimmt SDRangel die laufende Anpassung der Empfangsfrequenz.
Fehlersuche
QSSTV zeigt dauerhaft „No sync“
Zunächst prüfen, ob überhaupt Audio bei QSSTV ankommt.
In pavucontrol sollte beim laufenden SDRangel ein Pegel am entsprechenden Aufnahme-Stream sichtbar sein.
Außerdem kontrollieren:
SDRangel NFM
↓
Audio Device: SSTV
↓
QSSTV Input: SSTV.monitor
QSSTV bekommt das Mikrofon statt SDRangel
In pavucontrol bei QSSTV die Aufnahmequelle von Mikrofon beziehungsweise Standardgerät auf:
Monitor of SSTV
ändern.
Mehrere SSTV-Audiogeräte vorhanden
Vermutlich wurde der Befehl:
pactl load-module module-null-sink ...
mehrfach ausgeführt.
Die geladenen Module können mit:
pactl list short modules
kontrolliert werden.
Preset erscheint nicht im Satellite Tracker
Prüfen, ob tatsächlich ein Device-Set-Preset gespeichert wurde.
Außerdem kontrollieren, ob Preset und Satellite Tracker innerhalb derselben SDRangel-Installation verwendet werden.
Wer beispielsweise gleichzeitig eine Flatpak-Version und eine manuell installierte SDRangel-Version verwendet, kann unterschiedliche Konfigurationen und Preset-Speicher besitzen.
Das Signal wandert trotz Satellite Tracker
Kontrollieren:
- ist die ISS als Satellit ausgewählt?
- sind die Standortkoordinaten korrekt?
- ist der richtige NFM-Demodulator für die Doppler-Korrektur ausgewählt?
- ist die Referenzfrequenz korrekt?
- ist das richtige Device Set ausgewählt?
Signal ist ständig neben der Sollfrequenz
Dann liegt möglicherweise zusätzlich ein Frequenzfehler des RTL-SDR vor.
Dieser sollte über den LO-PPM-Wert des RTL-SDR korrigiert werden.
Fazit
Mit SDRangel, PipeWire und QSSTV lässt sich unter Ubuntu eine komfortable Empfangsstation für ARISS-/ISS-SSTV aufbauen.
Der große Vorteil von SDRangel ist die Integration des Satellite Trackers. Dadurch kann die Doppler-Verschiebung der ISS automatisch kompensiert werden, anstatt während des gesamten Überflugs die Frequenz manuell nachzuführen.
Auch das Audio-Routing bleibt vollständig digital:
RTL-SDR
│
▼
SDRangel
│
├── Satellite Tracker
│ └── Doppler-Korrektur
│
▼
NFM Demodulator
│
▼
virtuelles PipeWire-Gerät "SSTV"
│
▼
SSTV.monitor
│
▼
QSSTV
│
▼
SSTV-Bild
Ist die Konfiguration einmal als Preset gespeichert, reduziert sich die Vorbereitung eines Überflugs im Wesentlichen auf das Starten von SDRangel und QSSTV sowie die Kontrolle des Audio-Routings.
Damit eignet sich der Aufbau sowohl für eigene Experimente mit Amateurfunksatelliten als auch für den Empfang von SSTV-Aussendungen im Umfeld von ARISS-Projekten.
