USB-Sprachempfänger für 144.300 MHz

Ein GNU-Radio-Flowgraph, der die im SSB-Grundlagenartikel hergeleitete Filtermethode auf den 2m-Anrufkanal anwendet — vom SDR-Rohsignal bis zum hörbaren Sprachsignal.

Dieses Projekt setzt die im Artikel Einseitenbandmodulation (SSB) hergeleitete Theorie in einen lauffähigen Empfänger um: einen GNU-Radio-Flowgraph, der auf 144,300 MHz — dem Anrufkanal für Sprechfunk im 2-Meter-Amateurfunkband — empfangene USB-Signale (Upper Sideband) demoduliert und über die Soundkarte ausgibt.

1. Warum 144,300 MHz?

Im 2-Meter-Band (144–146 MHz) ist SSB unterhalb von 144,4 MHz üblich, während der Rest des Bandes überwiegend FM nutzt. 144,300 MHz ist der etablierte Anrufkanal (Calling Frequency) für SSB-Sprechfunk auf 2m — der Ort, an dem Stationen typischerweise zuerst rufen, bevor sie auf eine freie Frequenz ausweichen. Er eignet sich als Ziel für dieses Projekt, weil dort mit guter Wahrscheinlichkeit tatsächlich Sprachverkehr zu finden ist.

Als Skalenfrequenz gilt bei SSB die unterdrückte Trägerfrequenz, nicht etwa eine Bandmitte — siehe Abschnitt 5 des SSB-Grundlagenartikels. Genau dieser Umstand bestimmt unten die Dimensionierung des Empfängers.

2. Architektur des Empfängers

Der Flowgraph gliedert sich in sechs Stufen:

  1. RTL-SDR-Quelle (RTL-SDR Source, angebunden über osmosdr/librtlsdr) liefert komplexe IQ-Abtastwerte bei 960 kSample/s.
  2. DC Blocker entfernt einen Restgleichanteil/IQ-Offset des Empfänger-Frontends, bevor das Signal weiterverarbeitet wird (Details dazu in Abschnitt 4).
  3. Frequency Xlating FIR Filter verschiebt den unterdrückten Träger auf 0 Hz, filtert per komplexem Bandpass ausschließlich das obere Seitenband heraus und dezimiert gleichzeitig auf die Audio-Rate.
  4. Power Squelch blendet die weitere Verarbeitung stumm, solange die Leistung des gefilterten Signals unter einer einstellbaren Schwelle liegt — sitzt bewusst vor der AGC (Begründung in Abschnitt 6).
  5. Complex to Real entnimmt den Realteil — das demodulierte NF-Signal.
  6. AGC, Lautstärkeregler und Audio Sink geben das Ergebnis über die Soundkarte aus; parallel läuft ein optionaler WAV-Mitschnitt.
RTL-SDR Source ─► DC Blocker ─┬─► QT GUI Freq Sink (RF-Spektrum)
  (960 kS/s)                  │
                               └─► Freq Xlating FIR Filter (ccc) ─► Power Squelch ─► Complex to Real ─► AGC ─► × Lautstärke ─┬─► Audio Sink
                                    (Shift + Bandpass + Dezim.)                                                              ├─► WAV-Sink
                                                                                                                               └─► QT GUI Freq Sink (NF)
RTL-SDR Source ─► DC Blocker ─┬─► QT GUI Freq Sink (RF-Spektrum)
  (960 kS/s)                  │
                               └─► Freq Xlating FIR Filter (ccc) ─► Power Squelch ─► Complex to Real ─► AGC ─► × Lautstärke ─┬─► Audio Sink
                                    (Shift + Bandpass + Dezim.)                                                              ├─► WAV-Sink
                                                                                                                               └─► QT GUI Freq Sink (NF)

3. Die Filtermethode in komplexem Basisband

Der SSB-Grundlagenartikel unterscheidet Filtermethode, Phasenmethode (Hartley) und Weaver-Methode zur SSB-Erzeugung (Abschnitt 3) — dieselben drei Prinzipien lassen sich spiegelbildlich zur Demodulation einsetzen. Dieser Empfänger nutzt eine digitale Variante der Filtermethode, die die dort beschriebene Schwäche (extrem steile Filterflanken direkt an der Trägerfrequenz) umgeht:

  • Der Träger wird durch die LO-Abstimmung exakt auf 0 Hz gelegt.
  • Ein komplexer Bandpass (firdes.complex_band_pass) kann — anders als ein reeller Filter — asymmetrisch nur den positiven Frequenzbereich (+300 Hz bis +3000 Hz) durchlassen und damit ausschließlich das obere Seitenband selektieren, ohne die diskontinuierliche Flanke direkt bei 0 Hz, an der ein reeller Filter Träger und unteres Seitenband trennen müsste.
  • Das verbleibende Signal enthält nur noch das USB-Spektrum. Da darin keine negativen Frequenzanteile mehr vorkommen, entspricht die Bildung des Realteils (Complex to Real) exakt der Demodulation — mathematisch dieselbe Auslöschung, die die Phasenmethode in Abschnitt 2 des Grundlagenartikels über Hilbert-Transformation und Addition zweier Zweige erreicht, hier jedoch als einzelner komplexer Filter ausgeführt.

4. Warum die LO-Verstimmung um 24 kHz?

Woher der DC-Spike kommt

Der RTL-SDR-Stick ist ein Direktabwärtsmischer (Direct-Conversion- bzw. Zero-IF-Empfänger): Der lokale Oszillator (LO) wird direkt auf die Empfangsfrequenz gestimmt und mischt das RF-Signal in einem einzigen Schritt auf 0 Hz herunter — ohne den Umweg über eine höhere Zwischenfrequenz, wie ihn klassische Superhet-Empfänger nutzen. Diese Einfachheit ist zugleich die Ursache des Artefakts:

  • LO-Leckage: Ein winziger Teil des LO-Signals koppelt parasitär in den RF-Signalpfad des Mischers zurück. Der Mischer kann diesen Anteil nicht von einem echten Empfangssignal exakt auf der LO-Frequenz unterscheiden und setzt ihn ebenfalls auf 0 Hz herunter.
  • DC-Offset von ADC und Verstärkerkette: Analoge Bauteile (Verstärker, AD-Wandler) haben nie exakt symmetrische Ein- und Ausgänge; die resultierende kleine Gleichspannungsabweichung landet nach der Abwärtsmischung ebenfalls exakt bei 0 Hz.

Das Ergebnis ist eine stehende Spitze exakt bei 0 Hz relativ zur Tuner-Frequenz — unabhängig davon, ob auf dem Kanal tatsächlich gesendet wird. Stimmt man den Tuner exakt auf 144,300 MHz, läge dieses Artefakt direkt im demodulierten Nutzband und wäre von einem echten Träger kaum zu unterscheiden.

Die LO-Verstimmung als Gegenmaßnahme

Der Flowgraph stimmt den Tuner deshalb 24 kHz unterhalb der Zielfrequenz ab (freq_tune = freq_dial − freq_offset) und kompensiert den Versatz digital im Frequency-Xlating-Filter (center_freq = freq_offset), der den Träger wieder exakt auf 0 Hz zurückschiebt. Der DC-Spike landet dadurch 24 kHz neben dem eigentlichen Träger — weit außerhalb des 300–3000-Hz-Sprachbandes, das der nachfolgende Bandpass ohnehin durchlässt.

DC Blocker als zusätzliche Absicherung

Die LO-Verstimmung verschiebt gezielt den einen, punktuellen DC-Spike aus dem Passband. Sie hilft aber nicht gegen ein verwandtes, aber eigenständiges Problem: IQ-Imbalance — eine nicht perfekt symmetrische Verstärkung oder Phasenlage zwischen I- und Q-Zweig des Empfängers — kann zusätzlich einen breiteren, nicht rein punktförmigen Anteil nahe 0 Hz erzeugen, der von der reinen Frequenzverschiebung nicht getroffen wird. Der DC Blocker-Block sitzt deshalb direkt hinter der SDR-Quelle und entfernt fortlaufend jeden verbleibenden Gleichanteil des Rohsignals — unabhängig davon, wohin gerade gestimmt ist. Beide Maßnahmen ergänzen sich: die LO-Verstimmung schiebt den Spike aus dem Nutzband, der DC Blocker räumt danach auf, was an Restgleichanteil übrig bleibt.

5. Dimensionierung

Parameter Wert Begründung
samp_rate 960.000 S/s mit gängigen RTL-SDR-Sticks kompatible Rate, ganzzahlig durch 48.000 teilbar
audio_rate 48.000 S/s Standard-Soundkarten-Rate
decim 20 samp_rate / audio_rate
freq_offset 24 kHz verschiebt den DC-Spike aus dem Sprachband (Abschnitt 4)
DC-Blocker-Länge 32 Samples Standardlänge des gleitenden Mittelwertfilters, das den Restgleichanteil schätzt und subtrahiert
Bandpass +300 Hz … +3000 Hz typische Sprachbandbreite für verständlichen SSB-Funkverkehr, nur oberhalb 0 Hz (USB)
Filter-Übergangsbreite 300 Hz Kompromiss zwischen Flankensteilheit (Filterlänge) und Nachbarkanaltrennung

6. Bedienelemente

Der Flowgraph stellt im laufenden Betrieb vier Regler bereit:

  • Frequenz (144,000–144,500 MHz, 500-Hz-Schritte): verstimmt die Empfangsfrequenz live, ohne Neustart — nützlich auch, um zu prüfen, ob eine auffällige Spektrallinie mitwandert (dann Artefakt des Empfängers) oder stehen bleibt (dann externe Quelle).
  • RF-Gain (0–49 dB): Empfängerverstärkung, an Antennensignalstärke und SDR-Hardware anzupassen.
  • Squelch (−80 bis 0 dB): Schwelle für den Power Squelch. Er misst die Leistung des gefilterten IQ-Signals vor der AGC — würde er stattdessen nach der AGC ansetzen, hätte die AGC reines Rauschen längst auf einen konstanten Pegel hochgeregelt, und die Schwelle liefe leer.
  • Lautstärke (0,1–3,0): linearer Faktor nach der AGC.

Zwei QT-GUI-Frequenzanzeigen erlauben die Kontrolle: eine zeigt das rohe RF-Spektrum vor der Filterung (zur Prüfung, ob überhaupt Signal im abgetasteten Band liegt), die zweite das demodulierte NF-Spektrum (zur Kontrolle der Sprachbandbreite nach der Filterung).

Auch ohne Nutzsignal zeigt das NF-Spektrum meist ein durchgehendes, wannenförmiges Plateau in Form des 300–3000-Hz-Bandpasses: Die AGC regelt kontinuierlich auf ihren Referenzpegel hoch — auch wenn dort nur gefiltertes Rauschen ankommt. Ein echtes Signal erkennt man daran, dass es über dieses Plateau hinausragt, nicht am Plateau selbst.

7. Demodulation testen ohne Hardware

Ohne Antenne oder RTL-SDR lässt sich die Demodulationskette trotzdem prüfen — mit einem eigenen Sender-Flowgraph, der das Gegenstück zu diesem Empfänger bildet, und einer Testvariante des Empfängers, die statt vom RTL-SDR aus einer Datei liest.

Der Sender: Phasenmethode als Modulator

Der SSB-Grundlagenartikel leitet in Abschnitt 2 die Phasenmethode (Hartley-Modulator) her — dort zur Erzeugung eines SSB-Signals aus Basisband und Träger. Genau dieses Verfahren setzt ein separater Sender-Flowgraph um: Ein Audiosignal durchläuft eine Hilbert-Transformation (erzeugt das analytische Signal $m(t) + j\hat m(t)$), wird per Rational Resampler auf eine höhere Abtastrate gehoben und anschließend mit einem komplexen Oszillator aufwärtsgemischt — das Ergebnis ist ein einseitiges (USB-)Signal an einer frei wählbaren „Sendefrequenz" innerhalb einer komplexen IQ-Datei (Standard: 500 kHz), bereit zum Einspeisen in einen Empfänger.

Zwei Varianten stehen zur Wahl: eine mit Live-Mikrofonaufnahme für eigene Sprachdurchsagen, und ein reproduzierbarer Batch-Generator, der ein mitgeliefertes Testsignal (linearer Sinus-Chirp von 300 bis 3000 Hz) verwendet — ein Chirp durchläuft die komplette Sprachbandbreite und macht jede Lücke oder Beschneidung im Passband sofort als Aussetzer hörbar.

Geschlossener Testkreislauf

Eine Testvariante des Empfängers ersetzt den RTL-SDR Source-Block durch einen File Source-Block, der die vom Sender erzeugte IQ-Datei einliest — die restliche Demodulationskette (Frequency-Xlating-Filter, Power Squelch, AGC) bleibt unverändert. Damit lässt sich der komplette Weg von der Audioquelle bis zum demodulierten Ausgangssignal durchspielen, ohne dass irgendwo tatsächlich gefunkt wird.

Verifiziert (GNU Radio 3.10.12.0, tatsächlich ausgeführt): Das per Phasenmethode erzeugte Testsignal zeigt im Spektrum die erwartete einseitige USB-Charakteristik — das Spiegelband (unteres Seitenband) ist um 114 dB unterdrückt:
Peak-Pegel bei +300..+503 kHz (USB, erwartet): 0.0 dB
Peak-Pegel bei -503..-300 kHz (Spiegel-/LSB-Bereich): -114.3 dB
Peak-Pegel bei -3..+3 kHz um DC: -178.9 dB
Peak-Pegel bei +300..+503 kHz (USB, erwartet): 0.0 dB
Peak-Pegel bei -503..-300 kHz (Spiegel-/LSB-Bereich): -114.3 dB
Peak-Pegel bei -3..+3 kHz um DC: -178.9 dB

Nach dem vollständigen Durchlauf durch die Test-Empfänger-Kette folgt die Momentanfrequenz des demodulierten Audiosignals dem eingespeisten Chirp-Verlauf über die gesamte Dauer, z. B. bei t=2,05 s gemessen 1710,9 Hz gegenüber 1682,4 Hz erwartet — die kleine, gleichbleibende Differenz stammt von der Frequenzauflösung der Messung (STFT-Fenstergröße), nicht von der Modulations- oder Demodulationskette.

8. Grenzen

  • Keine Frequenznachführung: Ein Versatz der LO-Frequenz verschiebt — wie im Grundlagenartikel (Abschnitt 5) beschrieben — die gesamte Tonhöhe. Dieser Empfänger bietet keine automatische Trägerrekonstruktion; Feinabstimmung erfolgt manuell über den Frequenzregler.
  • Squelch-Schwelle nicht automatisch kalibriert: Der Startwert (−50 dB) ist eine Schätzung und muss je nach Empfangssituation, Antenne und RF-Gain von Hand nachjustiert werden.
  • Keine Frequenzkalibrierung: corr0 (Frequenzkorrektur des RTL-SDR-Quarzes) steht fest auf 0 — siehe RTL-SDR kalibrieren für die Messung und Begründung, warum das bei 144,3 MHz durchaus einige hundert Hz ausmachen kann.
  • Keine IQ-Imbalance-Korrektur: Der DC Blocker behebt nur den Gleichanteil, nicht die Verstärkungs-/Phasenunsymmetrie zwischen I- und Q-Zweig, die das reale Spiegelunterdrückungsmaß begrenzt — siehe IQ Bal Fix und IQ Bal Optimize für die Blöcke, die genau das nachrüsten würden.
  • Feste Bandbreite: Der 300–3000-Hz-Bandpass ist im Flowgraph fest verdrahtet, nicht als Laufzeitregler ausgeführt.
  • Rein funktionale Optik: Schieberegler und Spektrumplots, kein Empfänger-Frontpanel — siehe Ein Frontpanel für den USB-Empfänger für S-Meter, Signal-LED und Gestaltungsmöglichkeiten.

9. Download

Download: Beide Flowgraphs dieses Artikels (Empfänger und Datei-Testvariante, jeweils als .grc und generiertes .py) als ZIP — ssb-usb-empfaenger.zip herunterladen, entpacken, dann in GNU Radio Companion öffnen oder direkt ausführen:
gnuradio-companion ssb_usb_144300.grc
# oder als Testvariante ohne RTL-SDR, mit einer IQ-Datei vom USB-Sender:
gnuradio-companion ssb_usb_144300_file_test.grc
gnuradio-companion ssb_usb_144300.grc
# oder als Testvariante ohne RTL-SDR, mit einer IQ-Datei vom USB-Sender:
gnuradio-companion ssb_usb_144300_file_test.grc

Für die IQ-Testdatei siehe den USB-Sender.