Wideband-Spectrum mit Funcube Dongle für GnuRadio
Wideband-Spectrum mit Funcube Dongle für GnuRadio
Wideband-Spectrum mit Funcube Dongle für GnuRadio
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Wideband</strong>-<strong>Spectrum</strong> <strong>mit</strong> <strong>Funcube</strong> <strong>Dongle</strong><br />
<strong>für</strong> <strong>GnuRadio</strong><br />
Michael Hartje, DK5HH, Bremen, Germany<br />
15. Juli 2012<br />
Der FunCube <strong>Dongle</strong> (FCD) [2] ist ein USB-Stick <strong>für</strong> den Empfang zwischen<br />
60 MHz und 1,7 GHz. Eine Vielzahl von SDR-Programmen [5] und auch <strong>GnuRadio</strong><br />
[3] erlaubt in einfacher Weise den Empfang in einem Spektrum von 96 kHz. Mit der<br />
hier vorgeschlagenen Python-Prozedur wird das automatische Durchstimmen und die<br />
Darstellung der Empfangssignale als Spektrum ermöglicht. Es basiert auf [4].<br />
1 Installation<br />
1. Installation von <strong>GnuRadio</strong> Version 3.5.3 oder neuer auf einem Linux. Alternativ kann<br />
eine ältere Version von <strong>GnuRadio</strong> verwendet werden, in die zusätzlich nachträglich die<br />
Bibliotheks-Routinen <strong>für</strong> FCD eincompiliert worden sind.<br />
2. Installation Gnuplot und python-gnuplot <strong>für</strong> die Verbindung zwischen Python und Gnuplot.<br />
3. Anschluss von FunCube-<strong>Dongle</strong> - wird als Sondkarte hw:1 angesprochen, dies kann über<br />
Aufrufparameter gegebenenfalls geändert werden.<br />
4. die Parameter DC-I-Oset, DC-Q-Oset, IQ-phase-Balance und IQ-gain-Balance sowie die<br />
Frequency-corr. (in ppm) sind <strong>für</strong> den verwendeten FCD zu erproben und auch im Python-<br />
Skript einzustellen. Ein falscher Wert <strong>für</strong> diese Parameter führt zu Empfang von Spiegelfrequenzen<br />
und einem zusätzlichen Signal in der Mitte des Empfangsbereichs (96 kHz). Die<br />
Messergebnisse werden dadurch beeinträchtigt.<br />
2 Benutzung<br />
Derzeit ist eine Nutzung nur unter Linux möglich. Da aber bereits <strong>GnuRadio</strong> <strong>für</strong> Windows<br />
als vorcompilierte Version zur Verfügung steht, ist es möglicherweise auch unter Windows zu<br />
verwenden. Wer es ausprobiert meldet mir (DK5HH) dies bitte zurück.<br />
2.1 erster Aufruf<br />
python fcd−wideband−spectrum . py<br />
gibt eine Liste aller Parameter und einer kurzen Hinweis auf die Funktionsweise und Benutzung.<br />
Dies hilft zur Orientierung, ist jedoch nicht unbedingt notwendig.<br />
2.2 normaler Aufruf<br />
python fcd−wideband−spectrum . py 144000000 146000000<br />
1
3 Funktionsweise der Prozedur<br />
erlaubt einen Plot der Frequenzen von 144-146 MHz.<br />
2.3 Aufrufparameter<br />
zusätzliche Aufrufparameter werden bei Bedarf zusätzlich zu den beiden Frequenzgrenzen angegeben:<br />
args beschreibt die Hardwareadresse des genutzten FunCube <strong>Dongle</strong> als Soundkartenadresse<br />
des Systems<br />
samp_rate ist beim FCD auf 96 kSample/s vorgegeben<br />
gain Stellt die Verstärkung des Low Noise Ampliers (LNA) Vorverstärkers ein (in dB)<br />
tune-delay Verzögerungszeit nach Einstellen der neuen Frequenz beim Durchlaufen des gewählten<br />
Frequenzbereichs<br />
dwell-delay Verweilzeit auf der jeweiligen eingestellten Mittenfrequenz; dient dazu, die in den<br />
Puern noch bendlichen Abtastwerte der letzten Frequenzeinstellung <strong>für</strong> die neue Frequenz<br />
ausreichend sicher zu ersetzen.<br />
t-size gibt vor, <strong>mit</strong> wie vielen FFT-Bins (Frequenzpunkte) die Frequenztransformation vorgenommen<br />
wird. Diese Zahl ist vorher als zeitliche Abstastpunkte vom FCD <strong>mit</strong> 96 kSample/s<br />
zu liefern.<br />
show-disp Zeigt während der Messung die gerade gemessene Mittenfrequenz sowie Mittel- und<br />
Maximalwert zusätzlich auf StandardOUT an.<br />
num-tests gibt die Zahl der Wiederholungen von gesamten Durchläufen durch das gewählte<br />
Frequenzband an<br />
3 Funktionsweise der Prozedur<br />
Für einen zu untersuchenden Frequenzbereich von min_freq bis max_freq wird dieser in kleinen<br />
Schritten durchlaufen. Die Schrittweite ∆f step beträgt<br />
∆f step = 3 4 f samp_rate = 3 96 kHz = 72 kHz (1)<br />
4<br />
Sie führt zur Überlappung der einzelnen Messabschnitte. Mit einer Samplerate von 96 kHz<br />
wird die Frequenz <strong>für</strong> jede Messung um 72 kHz versetzt.<br />
Es werden im einzelnen nun t_len = 256 Abastwerte <strong>mit</strong> einer Abtastrate von 96 kHz<br />
aufgenommen und in den Frequenzbereich transformiert. Vor dieser Fouriertransformation wird<br />
ein Blackman-Harris-Fenster auf die zeitliche Messung angewendet, um so<strong>mit</strong> ein möglichst fehlerfreies<br />
Signal im Frequenzbereich zu erhalten und Fehler durch eine Rechteckfensterung zu<br />
verringern. Es enstehen nach der Transformation 256 Frequenzpunkte - sogenannte Bins. Diese<br />
haben einen Frequenzabstand<br />
∆f bin = f samp_rate<br />
fft len<br />
=<br />
96 kHz<br />
256<br />
= 375 Hz (2)<br />
und beinhalten nun die Signalleistung in diesem Frequenzband von ∆f bin Breite.<br />
Aus dem errechneten Spektrum <strong>mit</strong> 256 Werten wird der Mittelwert des Betrages und das<br />
Maximum aller FFT-Bins als logarithmischer Wert er<strong>mit</strong>telt. Bezugsgröÿe (0 dB) ist ein Sinussignal<br />
<strong>mit</strong> voller Aussteuerung nach Behandlung <strong>mit</strong> der Fensterfunktion. Es wird die Leistung<br />
dargestellt.<br />
Die Werte werden <strong>mit</strong> dem <strong>mit</strong>telsten Wert des aktuell gerade gemessenen Frequenzbandes<br />
von 96 kHz in eine Zeile geschrieben. (3 aufeinander folgende Zeilen hier dargestellt)<br />
2
3 Funktionsweise der Prozedur<br />
# Frequenz/Hz Mittelwert /dB Maximalwert/dB<br />
85108000.0 −61.0323811229 −52.6974319553<br />
85180000.0 −60.5301315731 −51.3511142129<br />
85252000.0 −60.6840445172 −52.3867772847<br />
Nach dem vollständigen Durchlauf von der kleinsten bis zur gröÿten Frequenz werden alle<br />
Messwerte, die während der Messung in die Datei fcd-measure-power.dat geschrieben worden<br />
sind auf die Datei fcd-measure-plot.dat umkopiert. Da<strong>mit</strong> wird es möglich, schon während der<br />
nächsten Messung dieser neue Datei zu plotten. Das geschieht <strong>mit</strong>tels Gnuplot und dem Skript<br />
plot-wideband-spectrum.gp. (Wenn wir die Messdatei noch weiter auswerten wollen, ist jetzt<br />
Zeit, diese Datei zu kopieren oder umzubenennen).<br />
Die Prozedur ist der im Gnuradio verfügbaren Prozedur usrp_spectrum_sense.py ähnlich.<br />
Die Funktionsweise dieser Prozedur ist in dem Beitrag [1] weiter beschrieben.<br />
An dieser Stelle soll auf die Parameter <strong>für</strong> Gnuplot nicht weiter eingegangen sondern auf die<br />
Programmhilfe zu Gnuplot verwiesen werden. Mit den gewählten Parametern entsteht ein Plot,<br />
der die Messpunkte <strong>mit</strong> Linien verbindet. Insbesondere bei einer hohen Anzahl von Messpunkten<br />
(mehr als 300) kann ein solcher Übergang von einer Darstellung <strong>mit</strong> Punkten und den verbindenden<br />
Linien hin zu einer Darstellung <strong>mit</strong> verbindenden Linien ohne explizit ausgezeichnete<br />
Messpunkte die Darstellung verbessern.<br />
Abbildung 1: Beispiel <strong>für</strong> einen Plot der Mittelwerte von 66 bis 122 MHz in Bremen<br />
Das Bild 1 zeigt einen Frequenzausschnitt der Mittelwerte im Frequenzbereich zwischen 66 und<br />
122 MHz. dabei wurde eine Innenantenne <strong>mit</strong> einem Draht von 30 cm Länge (nicht resonant im<br />
dargestellten Frequenzbereich) in Bremen verwendet. Deutlich sichtbar sind gröÿere Amplituden<br />
auf den Frequenzen der lokalen UKW-Stationen, aber auch im Bereich von 115 bis 122 MHz<br />
Teile des lokalen Flugfunks (bei relativ geringem Abstand des Messortes zum Flughafen).<br />
Durch Änderung der Parameter im Plot-Skript kann Mittelwert und Maximum gemeinsam<br />
dargestellt werden.<br />
Der deutlich unterschiedliche Amplitudenwert von Mittelwert und Maximum (zwischen 10<br />
und 20 dB) im Frequenzbereich von 88-108 MHz entsteht durch die Modulation der in diesem<br />
Frequenzbereich bendlichen Sender sowie dadurch, dass bei einer Samplerate von 96 kHz das<br />
3
4 Listings<br />
Abbildung 2: Beispiel <strong>für</strong> einen Plot von 65 bis 120 MHz <strong>mit</strong> Mittelwert und Maximum der<br />
Leistungen<br />
Aufnehmen von 256 Abtastwerten bereits einen Zeitraum von<br />
1<br />
∆t = 256 · = 2, 67 ms (3)<br />
96 kHz<br />
in Anspruch nimmt. Da auch die Frequenzverstimmung der jeweiligen Mittenfrequenz von<br />
einem zum Nachbarwert über Parameter eingestellt eine zusätzliche Zeit von etwa 20 ms, zusammengesetzt<br />
aus dwell-delay = 10 ms und tune-delay = 10 ms, in Anspruch nimmt, hat sich<br />
bei breitbandig modulierten Signalen deren Amplitude bereits wieder verändert.<br />
Ein Ausschnitt im folgenden Bild zeigt<br />
Im Bild 3 ist deutlich das Absinken des Mittelwertes (rot) im Bereich von 1,0 bis 1,2 GHz<br />
zu erkennen. In diesem Bereich hat der Tuner keinen Empfang, da der Local-Oszillator in diesem<br />
Bereich nicht ordentlich synchronisert. Glücklicherweise ist in dem <strong>für</strong> den Amateurfunk<br />
interessanten Bereich oberhalb 1,200 GHz wieder Empfang möglich.<br />
Auch ist zu erkennen, das der Mittelwert <strong>mit</strong> der Frequenz nicht konstant ist. An den Stellen<br />
218, 330, 430 und 670 MHz schaltet intern der FCD um, so dass anschlieÿend <strong>mit</strong> steigender<br />
Frequenz ein höherer Rauschpegel entsteht, der aber <strong>mit</strong> weiter steigender Frequenz abnimmt.<br />
Eine weitere Untersuchung ist bisher nicht durchgeführt worden.<br />
Die vielen aus dem Rauschpegel herausragenden Spitzen sind zumindest im Bereich um 100<br />
MHz, und im Bereich von 930 bis 960 MHz eindeutig auf einen Direktempfang von Sendern<br />
<strong>mit</strong> dem oenem Antenneingang zurückzuführen. Es handelt sich um eine Einstrahlung in das<br />
nicht schirmende Plastikgehäuse des FCD. Da aber selbst im Mobilfunkbereich bei 950 MHz<br />
die entstehenden Amplituden nicht besonders hoch sind, kann im praktischen betrieb durch den<br />
Parameter gain eine Anpassung an die geforderten Empndlichkeiten erfolgen.<br />
4 Listings<br />
4.1 Gnuplot-Steuerdatei<br />
Aufruf innerhalb der Prozedur<br />
4
4 Listings<br />
Abbildung 3: Frequenzgang von 65-1700 MHz <strong>mit</strong> oenem Antenneneingang - dargestellt ist der<br />
Mittelwert (rot, unten) und der jeweilige Maximalwert eines Spektralausschnittes<br />
von 96 kHz (grün) (22000 Messpunkte)<br />
Diese Datei beinhaltet die Steuerbefehle <strong>für</strong> Gnuplot. Die Beduetung ist über die Hilfefunktion<br />
des Programms nachzuschlagen. Mit dem Zeichen # beginnt eine Kommentarzeile. Diese<br />
werden auch genutzt, um 'derzeit' nicht aktivierte Programmteile zu deaktivieren<br />
##<br />
## gnuplot−commands f o r fcd−wideband−spectrum . py<br />
s e t autoscale<br />
unset l o g s c a l e<br />
unset l a b e l<br />
s e t x t i c auto<br />
s e t y t i c auto<br />
s e t format x "%.1 s %c"<br />
s e t t i t l e "<strong>Wideband</strong> <strong>Spectrum</strong> Analyzer f o r FunCube−<strong>Dongle</strong>"<br />
s e t x l a b e l "Frequenz / Hz −−−>"<br />
s e t y l a b e l " Leistung / dB −−−>"<br />
s e t term wxt<br />
s e t grid<br />
#s e t term pdf<br />
#s e t out " fcd−measure−plot . pdf "<br />
#plot " fcd−measure−plot . dat " using 1:2 t i t l e ' Mittelwert ' w lp ps 1<br />
#s e t out<br />
#s e t term wxt<br />
plot " fcd−measure−plot . dat" u 1:2 t ' Mittelwert ' with l i n e s<br />
# , ' ' u 1:3 t "Maxwert" with points<br />
4.2 Python-Prozedur<br />
Die notwendige Python-Prozedur ist als separate Datei verfügbar.<br />
5
5 Quellenverzeichnis<br />
5 Quellenverzeichnis<br />
Literatur<br />
[1] Firas, A.: Some usrp-spectrum-sense.py explanations. Forum Gnu Radio. http://www.<br />
ruby-forum.com/topic/174437. Version: 12 2008<br />
[2] n.n.: FUNcube <strong>Dongle</strong>. http://www.funcubedongle.com/<br />
[3] n.n.: www.gnuradio.org. http://www.gnuradio.org<br />
[4] Ortega, S.: <strong>Wideband</strong> <strong>Spectrum</strong> Analyser. Forum Gnu Radio. http://www.ruby-forum.<br />
com/topic/169964. Version: 11 2008<br />
[5] Sonore, Editeur: Ham Radio Software from F6CTE. http://f6cte.free.fr/index_<br />
anglais.htm. Version: 3 2011. F6CTE<br />
6