2015-10-23 7 views
5

Quando provo ad eseguire un programma GNU Radio che usa un USRP, ottengo un errore di backtrace, che (in Python) termina in genere con:Quando provo ad usare il mio USRP in GNU Radio, ottengo un errore "Nessun dispositivo trovato per ----->"

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 -----> 

USRP è in esecuzione.

risposta

10

Si dovrebbe sempre verificare la funzionalità UHD grezzo prima con lo strumento uhd_find_devices prima:

uhd_find_devices 

Se non trova il dispositivo, anche se viene avviato, la mia esperienza è che si ha un'alta probabilità di semplicemente non essendo in grado di comunicare con il dispositivo:

  • Se non si utilizza una versione UHD da Ettus' own repositories, in particolare sul non-nuovo di zecca Ubuntus, il vostro UHD potrebbe semplicemente essere più vecchio del dispositivo e non posso parlarci. La prima riga di output di uhd_find_devices conterrà informazioni sulla versione. Al momento della stesura (ottobre 2014), 3.9 è l'ultima versione. Se possibile, usa sempre l'ultima versione.
    • B200/B210 necessita di almeno 3.6.0, ma la funzionalità migliorata significativamente con 3.8.4
    • X300/X310 necessita di almeno 3.7.0
    • B200mini necessita 3,9
    • USRP1/2/B100/N200/N210 dovrebbe essere supportato direttamente per le versioni meno recenti che troverai in natura. Non tanto per tutte le schede figlie che puoi usare con loro - come detto, prova ad usare una versione recente.
  • Se stai usando un dispositivo collegato USB (USRP B200, B210, B200mini, B100, USRP1), è probabile che si sia
    • su Linux: non si ha il udev rules installed necessaria consentire agli utenti "normali" di comunicare con gli USP; controllare se /etc/udev/rules.d/ contiene qualcosa come uhd-usrp.rules.
    • su Windows: potrebbe non essere il Windows USB drivers installed.
    • se hai costruito UHD da solo (anche se hai installato GNU Radio tramite build-gnuradio.sh o pybombs), potrebbero essersi perse delle librerie USB. Assicurati che i tuoi registri Uma cmake contengano "Abilitazione USB".
    • USB3: alcuni controller host USB3 non si comportano in modo conforme agli standard e non è possibile ottenere la connettività. Se il tuo USRP viene rilevato quando collegato a una porta USB2 (qualcuno che non è blu, di solito), dovresti stare bene.
  • Se siete su un dispositivo collegato in rete (USRP X300/X310 con 1 Gbit/10 Gbit Ethernet, USRP N200/N210, USRP2)
    • assicurarsi che l'interfaccia di rete è
      • Compatibile con 1 Gbit (o 10GE, se applicabile); Le schede NIC "Fast Ethernet" (10/100Mbit) non funzionano con gli USRP.
      • Non il controller di rete Intel 82579LM (l'unico controller di rete PCIe IC noto a cadere di tanto in tanto i pacchetti senza dire il sistema operativo
      • non un adattatore USB3-to-Gigabit (questi tendono a fare riordino interessante sui pacchetti, rendendoli inadatto per i campioni in tempo reale ad alta tasso)
    • assicurarsi che il computer sia sulla stessa rete IP. per impostazione predefinita, USRPs hanno indirizzi della gamma 192.168.10.XXX (XXX=2 in impostazioni di fabbrica). assicurarsi che il computer ha un IP indirizzo dallo stesso intervallo, ma non lo stesso indirizzo.
    • assicurarsi che la comunicazione di base funzioni (entro il ping <ip address of USRP>). In caso contrario, ricontrolla il tuo indirizzo IP e cerca di assicurarti che USRP sia configurato per l'indirizzo corretto.
      • Per scoprire l'indirizzo IP corrente della vostra USRP, è spesso più facile da installare correttamente wireshark (che è un software di rete packet sniffer), hanno un'interfaccia di rete dedicata connettersi alla (spento USRP), avviare la cattura su quell'interfaccia e accendi l'USRP.
      • Se l'indirizzo è sbagliato, è possibile riprogrammare l'indirizzo IP del USRP X300/X310: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"
      • Se l'indirizzo è sbagliato, è possibile riprogrammare l'indirizzo IP del USRP N200/N210/USRP2: cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"
    • assicurarsi di avere il tuo firewall configured to permit traffic proveniente dalla porta USRP 49152. Su Linux, il seguente comando iptables tipicamente fa il trucco¹: sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT. Si noti che questo fa buca un buco nel firewall. Potrebbero essere applicate le politiche di sicurezza dell'istituto.
  • Se stai cercando di utilizzare un USRP E100, E110, E310 o E312 collegato al PC:
    • I dispositivi della serie E sono dispositivi Linux DSP incorporato standalone; non si collegano a un PC come periferica. Dovrai compilare il tuo software (se applicabile) con un cross-compiler ed eseguire il software sul dispositivo E-series stesso, non sul PC host.

Come test rapido se il PC, USRP e configurazione del cablaggio e IP dispositivo siano corrette, scaricare la corrente GNU Radio Live DVD ² (che, tra l'altro, contiene anche una copiosa quantità di esempi interessanti), avviarlo e prova uhd_find_devices lì.


¹ il chilometraggio può variare, come ogni distribuzione ha la propria idea di come gestire il firewall

² Si prega di utilizzare i file torrent, se possibile - il traffico Amazon AWS non è libero per la manutentori del progetto GNU Radio. Il file torrent utilizza anche i server AWS come origine, ma cerca di ottenere una parte dell'immagine da altri utenti.

-2

Run Sotto Comando:

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

In linea, contente device_addr aggiungere B210 come il suo valore.

Args: 
device_addr : B210 
+0

Conoscere SWIG: non ** mai ** un file Python generato da swig. Inoltre, conoscendo UHD internamente bene, 'device_addr = b210' viene ignorato da UHD, quindi se questo ti aiuta, è per coincidenza. –

+0

Inoltre, non so esattamente quale problema risolve, ma probabilmente è qualcosa di * molto * specifico. –

Problemi correlati