USRP B210 + GNU Radio: Von der Hardware-Einrichtung bis zur ersten Signalübertragung & -empfang
Wenn man den USRP B210 zum ersten Mal an den Computer anschließt, erinnere ich mich noch lebhaft an die Mischung aus Aufregung und Nervosität. Als Star-Hardware in der Welt des Software-Defined Radio (SDR) ist der USRP B210 dank seines hervorragenden Preis-Leistungs-Verhältnisses und seiner leistungsstarken Fähigkeiten zur ersten Wahl für unzählige Funkamateure und Forscher geworden. Doch angesichts dieser scheinbar komplexen „Black Box“ wissen viele Anfänger nicht, wo sie anfangen sollen. Dieser Artikel führt Sie durch den Hardware-Anschluss, die Treiberkonfiguration, den grundlegenden Sende-/Empfangsfluss und schließlich – die Übertragung und den Empfang Ihres allerersten Signals.
1. Hardware-Vorbereitung & Umgebungs-Setup
Das USRP B210 ist ein vielseitiges, von Ettus Research entwickeltes Software-Defined Radio Peripheriegerät. Es kommuniziert über USB 3.0 mit dem Host-Computer, unterstützt Vollduplex-Betrieb und deckt einen Frequenzbereich von 70 MHz bis 6 GHz ab. Im Vergleich zu seinen größeren Geschwistern bietet das B210 die perfekte Balance zwischen Kosten und Leistung und ist somit ideal für einzelne Entwickler und Bildungszwecke.
Grundlegende Hardware-Checkliste
- USRP B210 Gerät
- Zwei SMA-Antennen (die Ihr Zielfrequenzband abdecken)
- USB 3.0 Typ-A auf Micro-B Kabel (Originalkabel wird empfohlen)
- Ein Computer mit einem USB 3.0 Port (Linux-System bevorzugt)
Software-Anforderungen
- UHD-Treiber (USRP Hardware Driver)
- GNU Radio Framework
- GNU Radio Companion (GRC) – grafische Entwicklungsumgebung
Für Linux-Benutzer (Ubuntu 18.04/20.04 empfohlen) installieren Sie alle benötigten Pakete mit einem Befehl:
----------------------------------------------------------------------------
sudo apt-get update
sudo apt-get install gnuradio uhd-host
----------------------------------------------------------------------------
Nach der Installation überprüfen Sie, ob UHD Ihr B210 erkennt:
uhd_find_devices
Wenn alles korrekt ist, sollten Sie eine ähnliche Ausgabe sehen wie:
----------------------------------------------------------------------------
[INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; UHD_3.15.0.0
----------------------------------------------------
UHD Device 0
----------------------------------------------------
Device Address:
serial: 31FC89D
name: B210
product: B210
type: b200
----------------------------------------------------------------------------
2. Grundlegender Sende- & Empfangs-Flowgraph
Starten wir nun GNU Radio Companion (GRC) und erstellen wir Ihren ersten Signaltransceiver-Flowgraph. GRC ist die grafische Benutzeroberfläche für GNU Radio, mit der Sie Blöcke per Drag & Drop verschieben und Signalpfade verbinden können, um intuitiv komplexe Funksysteme zu erstellen.
Einen neuen Flowgraph erstellen
- Geben Sie
gnuradio-companionim Terminal ein, um GRC zu starten. - Klicken Sie auf Datei → Neu , um einen neuen Flowgraph zu erstellen.
- Legen Sie eine Abtastratenvariable fest: Fügen Sie einen Variablenblock namens
sample_ratemit dem Wert1e6(1 MHz) hinzu.
Ziehen Sie die folgenden Kernblöcke aus der Blockbibliothek per Drag & Drop:
- Signal Source – erzeugt das zu sendende Basisbandsignal
- USRP Sink – USRP-Senderblock
- USRP Source – USRP-Empfängerblock
- QT GUI Time Sink – Zeitbereichswellenformanzeige
- QT GUI Frequency Sink – Spektrumsanzeige
Stellen Sie sicher, dass die Datentypen übereinstimmen. Ein grundlegender Loopback-Test-Flowgraph sieht folgendermaßen aus:
[Signal Source] → [USRP Sink]
[USRP Source] → [QT GUI Time Sink]
[USRP Source] → [QT GUI Frequency Sink]
Wichtige Modulparameter
| Block | Parameter | Empfohlener Wert | Beschreibung |
|---|---|---|---|
| Signal Source | Output Type | Complex | Erzeugt komplexes Signal |
| Signal Source | Frequency | 1000 | 1 kHz Sinuswelle |
| USRP Sink | Device Address | (leer) | Erkennt das erste USRP automatisch |
| USRP Sink | Center Frequency | 2.4e9 | 2.4 GHz Träger |
| USRP Sink | Gain | 30 | Sendeleistung |
| USRP Source | Center Frequency | 2.4e9 | Gleich wie TX-Frequenz |
3. Fehlerbehebung & Leistungsoptimierung
Auch bei sorgfältiger Befolgung der Schritte können Anfänger auf Probleme stoßen. Hier sind die häufigsten Probleme und Lösungen:
Problem 1: USRP-Gerät nicht erkannt
- Überprüfen Sie die USB-Verbindung.
- Vergewissern Sie sich, dass Sie einen USB 3.0-Anschluss verwenden.
- Führen Sie
lsusbaus, um zu sehen, ob das Gerät erkannt wird. - Schließen Sie das Gerät erneut an und führen Sie
uhd_find_deviceserneut aus.
⚠️ Problem 2: Signalverzerrung durch falsche Abtastrate
Das USRP B210 unterstützt Abtastraten von 200 kHz bis 56 MHz, der nutzbare Bereich hängt jedoch von der Konfiguration ab. Beachten Sie diese Richtlinien:
- Für Schmalbandsignale verwenden Sie eine Abtastrate von 1–5 MHz.
- Für Breitbandanwendungen versuchen Sie 20 MHz oder höher.
- Verwenden Sie
uhd_usrp_probe, um die exakt unterstützten Raten anzuzeigen.
Problem 3: Abnormale Spektrumsanzeige
- Antennenverbindung überprüfen.
- Mittenfrequenz und Span im GUI-Sink anpassen.
- Bestätigen Sie, dass die Frequenz der Signalquelle angemessen ist.
- Verstärkung reduzieren, um Sättigung zu vermeiden.
uhd.usrp.MultiUSRP("num_recv_frames=512,num_send_frames=512")
USRP B210 Leistungsspezifikationen
| Parameter | Spezifikation | Anmerkungen |
|---|---|---|
| Frequenzbereich | 70 MHz – 6 GHz | Erfordert geeignete Antennen |
| Instantane Bandbreite | Bis zu 56 MHz | Abhängig vom USB-Host-Controller |
| Sendeleistung | Bis zu 10 dBm | Abhängig von Frequenz- und Verstärkungseinstellungen |
| Phasenrauschen | -90 dBc/Hz bei 1 MHz Offset | Typisch bei 2,4 GHz |
| Stromverbrauch | ~5W | Erfordert ausreichende USB-Stromversorgung |
4. Fortgeschritten: Benutzerdefinierte Signalverarbeitungsmodule
Sobald Sie die Grundlagen beherrschen, müssen Sie möglicherweise benutzerdefinierte Signalverarbeitungsfunktionen entwickeln. GNU Radio unterstützt die Erstellung benutzerdefinierter Blöcke in C++ oder Python. Nachfolgend finden Sie ein Beispiel für die Verwendung eines Python-Blocks.
Erstellen eines benutzerdefinierten hierarchischen Blocks
- Klicken Sie mit der rechten Maustaste auf den GRC-Arbeitsbereich und wählen Sie Hierarchischen Block erstellen.
- Benennen Sie den Block (z. B.
MyAMDemodulator). - Fügen Sie Eingangs- und Ausgangsports hinzu.
- Schreiben Sie die interne Verarbeitungslogik.
Einfache AM-Demodulator-Implementierung:
----------------------------------------------------------------------------
import numpy as np
from gnuradio import gr
class my_am_demodulator(gr.sync_block):
def __init__(self):
gr.sync_block.__init__(
self,
name="my_am_demodulator",
in_sig=[np.complex64],
out_sig=[np.float32]
)
def work(self, input_items, output_items):
in0 = input_items[0]
out0 = output_items[0]
# AM demodulation: take magnitude
out0[:] = np.abs(in0)
return len(output_items[0])
----------------------------------------------------------------------------
Nach dem Speichern erscheint das Modul in der GRC-Blockbibliothek und kann wie integrierte Blöcke verwendet werden.
C++ vs. Python Module
| Feature | C++ Modul | Python Modul |
|---|---|---|
| Entwicklungsschwierigkeit | Höher | Niedriger |
| Ausführungseffizienz | Hoch | Mittel |
| Hot Reloading | Nicht unterstützt | Unterstützt |
| Debugging-Komfort | Komplex | Einfach |
| Anwendungsfälle | Hochleistungsverarbeitung | Schnelles Prototyping |
5. Praktische Anwendung: UKW-Rundfunkempfänger
Wenden wir das Wissen auf ein reales Szenario an: den Bau eines einfachen UKW-Rundfunkempfängers. Dieses Beispiel zeigt, wie man normale UKW-Radiosignale mit dem USRP B210 und GNU Radio empfängt und demoduliert.
Implementierungsschritte
- Stellen Sie die Mittenfrequenz der USRP-Quelle auf einen lokalen UKW-Sender ein (z. B. 98,1 MHz).
- Fügen Sie einen Tiefpassfilter hinzu, um Rauschen außerhalb des Bandes zu entfernen.
- Verwenden Sie den integrierten WBFM Receive-Block, um das Signal zu demodulieren.
- Fügen Sie Audio-Resampling- und Audio-Sink-Blöcke hinzu.
Der vollständige GRC-Flowgraph besteht aus:
[USRP Source] → [Low Pass Filter] → [WBFM Receive] → [Rational Resampler] → [Audio Sink]
Wichtige Parameter für den UKW-Empfänger
- USRP Source: Mittenfrequenz = 98.1e6 (lokal anpassen), Verstärkung = 30–50, Abtastrate = 2e6
- Low Pass Filter: Grenzfrequenz = 200 kHz, Übergangsbreite = 50 kHz
- WBFM Receive: Audioabschwächung = 10, Demodulationsverstärkung = 0.1
- Rational Resampler: Eingangsrate = 200 kHz, Ausgangsrate = 48 kHz (Standard-Audio)
Führen Sie den Flowgraph aus, schließen Sie Kopfhörer oder Lautsprecher an, und Sie sollten klaren UKW-Radioempfang haben. Wenn Sie Rauschen oder Verzerrungen feststellen, versuchen Sie diese Anpassungen:
- Feinabstimmung der Mittenfrequenz (die tatsächliche Senderfrequenz kann einen kleinen Offset haben).
- USRP-Verstärkung anpassen.
- Überprüfen Sie, ob Ihre Antenne für das UKW-Rundfunkband geeignet ist.
- Stellen Sie sicher, dass keine starken Störungen in der Nähe vorhanden sind.
Dieser einfache UKW-Empfänger demonstriert die Leistungsfähigkeit von USRP B210 und GNU Radio. Basierend darauf können Sie die Funktionalität mit Kanalsuche, Signalaufzeichnung, RDS-Decodierung und vielem mehr erweitern.
6. Hardware-Kompatibilität & Ressourcen
Unterstützt UHD Version 3.0 und höher – keine Notwendigkeit, Binärdateien zu ersetzen. Der USRP B210 arbeitet nahtlos mit modernen SDR-Frameworks zusammen.
YX-OS32 USRP B210 SDR Plattform – YanTechLab
Inzwischen sollten Sie eine solide Grundlage für die Verwendung des USRP B210 mit GNU Radio haben. Experimentieren Sie mit verschiedenen Modulationsschemata, erforschen Sie digitale Kommunikationsformen und bauen Sie Ihre eigenen drahtlosen Projekte. Viel Spaß beim Hacken!