Benutzer-Werkzeuge

Webseiten-Werkzeuge


gnuradio

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
gnuradio [2010/10/25 12:15] – angelegt 141.46.188.9gnuradio [2024/12/25 13:46] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== GNU Radio ====== ====== GNU Radio ======
 Eine Software um im PC Datensignale zu verarbeiten und zu erzeugen Eine Software um im PC Datensignale zu verarbeiten und zu erzeugen
 +  * Audioausgabe: [[gnuradio:audio]]
  
 ===== Code-Schnippsel ===== ===== Code-Schnippsel =====
Zeile 8: Zeile 9:
 Falls es Fehler gibt die darauf hinweisen, dass keine Hardware da ist, mit dem Befehl Falls es Fehler gibt die darauf hinweisen, dass keine Hardware da ist, mit dem Befehl
 ''ifconfig''  ''ifconfig'' 
-prüfen, ob die entsprechende Karte "up" ist. Wenn nicht, dann anschalten. Bei mir:+prüfen, ob die entsprechende Karte angezeigt wird (und "up" ist). Wenn nicht, dann anschalten. Bei mir:
 ''sudo ifconfig eth0 up''  ''sudo ifconfig eth0 up'' 
 +
 Jetzt ist die Netzwerkkarte verfügbar. Jetzt ist die Netzwerkkarte verfügbar.
  
Zeile 16: Zeile 18:
  
 Jetzt gibt es Aufgaben:  Jetzt gibt es Aufgaben: 
-  Daten aus dem Radio einlesen +  Daten aus dem Radio einlesen 
-  Daten mit GNU Radio verarbeiten+  Daten mit GNU Radio verarbeiten
  
 Und ich kenne min. 2 Arten das zu tun. Und ich kenne min. 2 Arten das zu tun.
Zeile 25: Zeile 27:
 2 Fenster 2 Fenster
 Fenster a: Fenster a:
-usrp2_rx_cfile.py -f 10700000 -s -d 250 pipe+  usrp2_rx_cfile.py -f 10700000 -s -d 250 pipe
  
 und später mit Strg+C beenden und später mit Strg+C beenden
  
 Fenster b: Fenster b:
-''cat pipe | ../../../../baudline/baudline -reset -samplerate 400000 -channels 2 -quadrature -format le16 -stdin''+  ''cat pipe | ../../../../baudline/baudline -reset -samplerate 400000 -channels 2 -quadrature -format le16 -stdin''
  
 Oder in einem Terminal: Oder in einem Terminal:
 durch Anhängen des Zeichen ''&'' wird das Terminal nicht blockiert bis das Programm beendet ist. Jedoch werden alle Ausgaben die das Programm an Stdout schickt angezigt. Zusätzlich erfährt man die ID des Programms. Diese ist wichtig um das Programm mit dem Befehl ''kill'' zu beenden. ''kill 5123'' beendet den Prozess 5123. Prozesse können mit ''top'' angezeigt werden und sind z.B. nach Rechenleitung sortiert. durch Anhängen des Zeichen ''&'' wird das Terminal nicht blockiert bis das Programm beendet ist. Jedoch werden alle Ausgaben die das Programm an Stdout schickt angezigt. Zusätzlich erfährt man die ID des Programms. Diese ist wichtig um das Programm mit dem Befehl ''kill'' zu beenden. ''kill 5123'' beendet den Prozess 5123. Prozesse können mit ''top'' angezeigt werden und sind z.B. nach Rechenleitung sortiert.
 +
 +
 +
 +=== Netzwerkschnittstelle aktivieren ===
 +
 +
 +  sudo ifconfig eth0 up
 +
 +im Verzeichnis gnuradio/gr-utils/src/python:
 +die FIFO Datei pipe erzeugen (einmalig)
 +  mkfifo pipe
 +
 +usrp2 in diese Pipe streamen lassen
 +
 +
 +  usrp2_rx_cfile.py -f 10700000 -d 125 pipe
 +  usrp2_rx_cfile.py -f 10700000 -s -d 250 pipe
 +
 +
 +(mit Strg + C abbrechen) - es wird in den FIFO geschrieben!
 +
 +  cat pipe | ../../../../baudline/baudline -reset -samplerate 400000 -channels 2 -quadrature -format le16 -stdin
 +
 +  cat pipe | ../../../../baudline/baudline -reset -samplerate 800000 -channels 2 -quadrature -format le16 -stdin
 +
 +
 +=== multimon: ===
 +
 +  make
 +
 +  cd multimon/bin-i686
 +  ./multimon
 +
 +== Frequenzen ==
 +
 +http://linuxreviews.org/man/fflush/
 +465,97MHz
 +466,23MHz
 +mitte auf 466,09 MHz stellen und mit 400000 sps (250er Decimation)
 +
 +131,9MHz service channels aircrafts
 +392,775 MHz FSK Moduliert, hohe Bitrate, kleiner Hub
 +391,325MHz, 391,95MHz FSK
 +187,75MHz lokale Werbung?
 +182,25 MHZ ASK?
 +172,25MHz FM digital
 +168,725MHz digital 164,15
 +151,95MHz Digital
 +
 +
 +mit angehängtem Zeichen "&" das Terminal freigeben, und mit kill [pid] beenden
 +
 +Anzeigen der pid mit ps
 +phyton und baudline sind die gestarteten Prozesse
 +
 +FM Spektrum bei Sprache 3 Träger (oder Seitenbänder?)
 +99,2 MHz
 +99,49 MHz
 +
 +12.629MHz: TAH
 +14.070 CW und Digimodes
 +
 +Divider samplerate
 +250 400000
 +125 800000
 +100 1000000
 +50 2000000
 +
 +  sudo aptitude install gnuradio gnuradio-companion gnuradio-utils usrp python-usrp libgnuradio-usrp python-gnuradio-usrp
 +  python-gnuradio-usrp
 +  libgnuradio-usrp
 +  python-usrp
 +
 +
 +
 +FM-Demodulator (fm2.grc):
 +
 +Die Abtastraten müssen vom USRP übers Filter und den FM-Demodulator (WBFM Receive) bis zur Soundkarte stimmen. Im Beispiel heißt das:
 +
 +USRP2 bietet 100Msamples/s geteilt durch die Dezimierung an, also 
 +100e6 / 125 = 800e3
 +
 +Tiefpass dezimiert dieses Eingangssignal mit 5:
 +800e3 / 5 = 160e3
 +
 +FM-Demodulator nimmt 160k als Quadraturrate und dezimiert die Audio-Ausgabe mit 5:
 +160e3 / 5 = 32e3
 +
 +Die Soundkarte wird mit 32kHz angesprochen.
 +Hinweis: Bei "Device Name" im Audio Sink muss plughw:0,0 eingetragen werden, da sonst nur eine Sample Rate von 48kHz möglich ist, was ausgehend von 100Msamples/s nicht einfach zu erreichen ist.
 +
 +Zur USRP2-Quelle:
 +"Frequency" wird auf die gewünschte Eingangsfrequenz eingestellt. Der FPGA im USRP mischt diese Frequenz herunter ins Basisband. Dort wird sie mit 100Msamples/s abgetastet, was auch fürs Gbit-Ethernet Interface zu viel ist. Daher wird noch einmal die Dezimierung verwendet, die einen Tiefpass-Charakter hat und das Signal auf einen übers Gbit-Ethernet transportablen Strom wandelt. Dieser kann dann weiterverwendet werden.
 +
 +http://www.gnu.org/software/gnuradio/doc/howto-write-a-block.html
 +https://radioware.nd.edu/documentation
 +
 +
 +187,75 MHz (Oberwelle Radio FM?), Spiegelempfang (AM/FM Durchschlag!)
 +192,24 TV Bild
 +136 digitales Spektrum
 +195,7 abwechselnd analog und digitale modulation?
 +197,5 FM auslänisch
 +197,75FM auslänisch
 +221,75
 +233,55 digital
 +
 +
 +Pfeifen, 50Hz und ähnlihe Sachen
 +125
 +150
 +196,6
 +200
 +206,4
 +223,52
 +
 +==== UHD ====
 +Einlesen: uhd_rx_cfile.py -f 10700000 -s pipe &
 +Baudline starten: cat pipe | ./baudline -reset -samplerate 1000000 -channels 2 -quadrature -format le16 -stdin
 +
 +
 +
 +
 +====== USRP2 ======
 +Um auszulesen, welche Hardware verfügbar ist:
 +  * ''find_usrps''
 +  * ''uhd_find_devices''
 +
 +===== Umstieg auf UHD Treiber =====
 +Um auf die neuen UHD Treiber umzustellen, ist es nötig die SD-Karte mit den neuen Dateien zu beschreiben. Diese enthalten das Image für den FPGA und die Firmware. Der alte Treiber wird hier beschrieben: [[http://gnuradio.org/redmine/projects/gnuradio/wiki/USRP2UserFAQ]]. Infos zu dem neuen UHD Treiber: [[http://files.ettus.com/uhd_docs/manual/html/usrp2.html]], Beispielprogramme [[http://gnuradio.org/redmine/projects/gnuradio/wiki/HowToUse]]
 +
 +Als Vorbereitung benötigt man:
 +  * Die Dateien: [[http://files.ettus.com/uhd_releases/003_003_002/images-only/]] oder eine andere aktuelle Ausgabe von [[http://files.ettus.com/uhd_releases/]]
 +  * ein SD-Laufwerk, prüfen, welche Bezeichnung die SD Karte hat: ''sudo fdisk -l'', in meinem Fall ''/dev/sdb''
 +  * die GNURADIO Companion Umgebung mit UHD, damit folgender Befehl funktioniert: 
 +
 +  cd /usr/local/share/uhd/utils
 +  sudo ./usrp2_card_burner_gui.py
 +
 +  * Zunächst den Inhalt der originalen Karte sichern: ''sudo dd if=/dev/sdb of=~/sdcardusrp2_org.img''
 +  * (Mit dem Befehl ''sudo dd if=~/sdcardusrp2_org.img of=/dev/sdb'' könnte der alte Inhalt wiederhergestellt werden.)
 +  * Die Datei [[http://files.ettus.com/uhd_releases/003_003_002/images-only/UHD-images-003.003.002-release.zip]] oder eine neuere entpacken und im Verzeichnis ''/UHD-images-003.003.002-release/share/uhd/images/'' die Dateien ''usrp2_fpga.bin'' und ''usrp2_fw.bin'' extrahieren.
 +  * Jetzt ''sudo /usr/local/share/uhd/utils/usrp2_card_burner_gui.py'' aufrufen
 +  * Die 2 Dateien wählen und los gehts!
 +  * Achtung hier könnte auch eine Festplatte oder Speicher überschrieben werden!
 +  * {{:bildschirmfoto-usrp2_sd_card_burner.png|}}
 +  * {{:bildschirmfoto-verbose.png|http://example.com|Externer Link}}
 +  * Ups, hier gabe es einen Fehler, irgenwas mit der Unicode-Unterstürtzung, es gibt im SVN/GIT eine Änderung [[http://code.ettus.com/redmine/ettus/projects/uhd/repository/diff/host?rev=529297b97df9b9d928c30bb7cdb51f14f3fb3ab0&rev_to=60669a28d8862fd2a8ea324f947580485585b317&type=inline|1]], die mich inspirierte in Zeile 53 folgendes zu ändern [[http://docs.python.org/howto/unicode.html|1]] [[http://pastebin.com/9xF0Tazm|2]]:
 +<code python>
 +# Zeile 53 in /usr/local/share/uhd/utils/usrp2_card_burner.py
 +#      verbose = p.stdout.read().decode()
 +       verbose = p.stdout.read().decode('utf-8')
 +</code>
 +  * Jetzt klappt es:
 +
 +<code>
 +$ sudo ./usrp2_card_burner.py --fw=/home/student/usrp2_fw.bin --dev=/dev/sdb
 +Burn firmware image:
 +32+0 Datensätze ein
 +32+0 Datensätze aus
 +16384 Bytes (16 kB) kopiert, 0,00756297 s, 2,2 MB/s
 +
 +Verification Passed:
 +32+0 Datensätze ein
 +32+0 Datensätze aus
 +16384 Bytes (16 kB) kopiert, 0,0058502 s, 2,8 MB/s
 +
 +
 +
 +$ sudo ./usrp2_card_burner.py --fpga=/home/student/usrp2_fpga.bin --dev=/dev/sdb
 +Burn fpga image:
 +1685+0 Datensätze ein
 +1685+0 Datensätze aus
 +862720 Bytes (863 kB) kopiert, 0,647275 s, 1,3 MB/s
 +{{:erfolg-verbose.png|}}
 +Verification Passed:
 +1685+0 Datensätze ein
 +1685+0 Datensätze aus
 +862720 Bytes (863 kB) kopiert, 0,0873257 s, 9,9 MB/s
 +
 +</code>
 +  * {{:erfolg-verbose.png|}}
 +
 +==== Test ====
 +Zum Testen wird die SD Karte eingelegt, das USRP2 wieder mit Spannung versorgt. Die Netzwerkverbindung zum PC endet im PC an einer Gigabitkarte die auf eine IP-Adresse im Subnetz 255.255.255.0 eingerichtet ist. z.B. 192.168.10.1. Das USRP2 hat im UHD Treiber im Normalfall die 192.168.10.2. Nun sollte der Befehl ''uhd_find_devices'' eine erfreuliche Antwort liefern:
 +<code>
 +$ uhd_find_devices 
 +linux; GNU C++ version 4.4.3; Boost_104000; UHD_003.004.000-287958b
 +
 +--------------------------------------------------
 +-- UHD Device 0
 +--------------------------------------------------
 +Device Address:
 +    type: usrp2
 +    addr: 192.168.10.2
 +    name: 
 +    serial: 252
 +
 +
 +</code>
 +
 +Jetzt sollte das Beispielprogramm uhd_fft.py [[http://gnuradio.org/redmine/projects/gnuradio/wiki/HowToUse|1]] laufen, aber leider nicht:
 +<code>RuntimeError: RuntimeError: 
 +Please update the firmware and FPGA images for your device.
 +See the application notes for USRP2/N-Series for instructions.
 +Expected FPGA compatibility number 8, but got 7:
 +The FPGA build is not compatible with the host code build.</code>
 +Also wiederholen! Ich hatte eine Datei vom November 2011 ausgewählt, nochmal mit den Dateien aus ''UHD-images-003.004.000-322fb97.zig'' dann, klappt es.
 +
 +
 +
 +
 +
 +
  
  
  
gnuradio.1288001709.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki