2015-10-23 13 views
5

Wenn ich versuche ein GNU Radio Programm auszuführen, das ein USRP verwendet, erhalte ich einen Fehler backtrace, der (in Python) endet normalerweise mit:Wenn ich versuche, mein USRP in GNU Radio zu verwenden, bekomme ich einen "No devices found for ----->" Fehler

self.u = uhd.usrp_source(device_addr=args, stream_args=uhd.stream_args('fc32')) 
    File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/__init__.py", line 122, in constructor_interceptor 
    return old_constructor(*args) 
    File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/uhd_swig.py", line 2351, in make 
    return _uhd_swig.usrp_source_make(*args) 
RuntimeError: LookupError: KeyError: No devices found for -----> 

Die USRP läuft.

Antwort

10

Sie immer roh UHD Funktionalität zuerst mit dem uhd_find_devices Werkzeug zuerst prüfen sollten:

uhd_find_devices 

Wenn es nicht Ihr Gerät nicht finden, obwohl es gestartet wird, ist meine Erfahrung, dass Sie eine hohe Chance haben einfach nicht mit dem Gerät kommunizieren zu können:

  • Wenn Sie eine UHD Version von Ettus nicht verwenden own repositories, vor allem auf nicht-brandneuen Ubuntus, könnte einfach Ihre UHD älter sein als das Gerät und kann nicht damit reden. Die erste Ausgabezeile von uhd_find_devices enthält Informationen zur Version. Zum Zeitpunkt des Schreibens (Oktober 2014) ist 3.9 die neueste Version. Verwenden Sie nach Möglichkeit immer die neueste Version.
    • B200/B210 benötigt mindestens 3.6.0, aber die Funktionalität verbessert signifikant mit 3.8.4
    • X300/X310 benötigt mindestens 3.7.0
    • B200mini braucht 3.9
    • USRP1/2/B100/N200/N210 sollte direkt unterstützt werden, aber die ältesten Versionen, die Sie in freier Wildbahn finden. Nicht so sehr für alle Daughterboards, die Sie mit ihnen verwenden können - wie erwähnt, versuchen Sie eine aktuelle Version zu verwenden.
  • Wenn Sie eine USB angeschlossen Gerät verwenden (USRP B200, B210, B200mini, B100, USRP1), stehen die Chancen, dass Sie entweder
    • auf Linux: Sie haben nicht die notwendigen udev rules installed damit "normale" Benutzer mit den USRPs kommunizieren können; Überprüfen Sie, ob /etc/udev/rules.d/ etwas wie uhd-usrp.rules enthält.
    • unter Windows: Sie haben möglicherweise nicht die Windows USB drivers installed.
    • Wenn Sie UHD selbst gebaut haben (auch wenn Sie GNU Radio über build-gnuradio.sh oder pybombs installiert haben), dann könnten USB-Bibliotheken fehlen. Stellen Sie sicher, dass Ihre UHD cmake-Protokolle "USB aktivieren" enthalten.
    • USB3: Einige USB3-Host-Controller verhalten sich nicht normkonform, und Konnektivität kann nicht erreicht werden. Wenn Ihr USRP erkannt wird, wenn es an einen USB2-Anschluss angeschlossen wird (normalerweise nicht blau), sollte alles in Ordnung sein.
  • Wenn Sie auf einem vernetzten Gerät (USRP X300/X310 mit 1 GBit/10 Gbit Ethernet, USRP N200/N210, USRP2)
    • stellen Sie sicher, Ihre Netzwerk-Schnittstelle
      • ist 1Gbit-fähig (oder 10GE, wenn angewendet); "Fast Ethernet" (10/100Mbit) NICs funktionieren nicht mit den USRPs.
      • Nicht die Intel 82579LM Netzwerk-Controller (der einzige PCIe-Netzwerk-Controller-IC bekannt gelegentlich Pakete fallen zu lassen, ohne das Betriebssystem
      • keine USB3-to-Gigabit zu sagen Adapter (diese sind in der Regel interessante Umordnung auf den Pakete zu tun, so dass sie ungeeignet für Echtzeit-Proben mit hohen Rate)
    • stellen Sie sicher, auf dem gleichen IP-Netzwerk Ihres Computer ist. Standardmäßig hat USRPs Adressen aus dem 192.168.10.XXX Bereich (XXX=2 in Werkseinstellung). Ihr Computer eine IP-stellen Sie sicher, hat Adresse aus dem gleichen Bereich, aber nicht gleich Adresse
    • stellen Sie sicher, dass grundlegende Kommunikation funktioniert (von ping <ip address of USRP>). Wenn nicht, überprüfen Sie Ihre eigene IP-Adresse erneut und versuchen Sie sicherzustellen, dass das USRP für die richtige Adresse konfiguriert ist.
      • Um die aktuelle IP-Adresse Ihres USRP, ist es oft am einfachsten richtig herauszufinden, installieren wireshark (das ist ein Software-Paket-Sniffer Network), haben eine dedizierte Netzwerk-Schnittstelle zum (ausgeschaltet USRP) anschließen, starten Sie das Capture auf diese Schnittstelle und die USRP einschalten.
      • Wenn die Adresse falsch ist, können Sie die IP-Adresse des USRP X300/X310 umprogrammieren kann: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"
      • Wenn die Adresse falsch ist, können Sie die IP-Adresse des USRP N200/N210/USRP2 umprogrammieren: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"
    • stellen Sie sicher, Ihr firewall configured to permit traffic kommt von dem USRP-Port 49152. Unter Linux führt der folgende iptables-Befehl typischerweise den Trick¹: sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT. Beachten Sie, dass diese ein Loch in Ihre Firewall einlochen. Möglicherweise gelten die Sicherheitsrichtlinien Ihrer Institution.
  • Wenn Sie versuchen, eine USRP E100, E110, E310 oder E312 an Ihren PC angeschlossen zu verwenden:
    • Die E-Serie-Geräte sind eigenständige Embedded-Linux-SDR-Geräte; sie hängen nicht an einen PC als Peripheriegerät an. Sie müssen Ihre Software (falls zutreffend) mit einer cross-compiler kompilieren und die Software auf dem E-series Gerät selbst ausführen, nicht auf Ihrem Host-PC.

Als ein schneller Test, ob Ihr PC, USRP und Verkabelung und Geräte-IP-Konfiguration korrekt sind, laden Sie die aktuelle GNU Radio Live DVD ² (die, nebenbei bemerkt, auch reichlich kühlen Beispiele enthält), booten und versuchen Sie uhd_find_devices dort.


¹ Ihre Laufleistung variieren kann, da jede Verteilung seine eigene Vorstellung davon hat, wie der Firewall

² Bitte verwenden Sie die Torrent-Dateien zu verwalten, wenn möglich - Amazon AWS-Verkehr für die ist nicht kostenlos Betreuer des GNU-Radio-Projekts. Die Torrent-Datei verwendet auch die AWS-Server als Quelle, versucht jedoch, einen Teil des Bilds von anderen Benutzern abzurufen.

-2

Run Im Folgenden Befehl:

sudo gedit /usr/lib/python2.7/dist-packages/gnuradio/uhd/uhd_swig.py 

In Zeile containig device_addrB210 hinzufügen, wie es Wert ist.

Args: 
device_addr : B210 
+0

Wissen, SWIG: ** ** ** ** ** ** nicht jemals eine swig-generierte Python-Datei. Auch wenn UHD intern gut bekannt ist, wird 'device_addr = b210' von UHD ignoriert, wenn das also hilft, ist es Zufall. –

+0

Außerdem weiß ich nicht genau, welches Problem das löst, aber es ist wahrscheinlich etwas * sehr * spezifisch. –

Verwandte Themen