web-dev-qa-db-ja.com

GNU RadioでUSRPを使用しようとすると、「----->のデバイスが見つかりません」というエラーが表示されます

USRPを使用するGNUラジオプログラムを実行しようとすると、エラーバックトレースが発生します。これは(Pythonでは)通常次のように終わります。

    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が実行されています。

7
Marcus Müller

最初にuhd_find_devicesツールを使用して、生のUHD機能を最初にテストする必要があります。

uhd_find_devices

デバイスが起動してもデバイスが見つからない場合、私の経験では、単にデバイスと通信できない可能性が高いです。

  • EttusのUHDバージョンを使用していない場合 ' 独自のリポジトリ 、特に新品ではないUbuntuでは、 UHDは単にデバイスよりも古く、通信できない可能性があります。 uhd_find_devicesの出力の最初の行には、バージョンに関する情報が含まれます。執筆時点(2014年10月)では、3.9が最新リリースです。可能であれば、常に最新のリリースを使用してください。
    • B200/B210には少なくとも3.6.0が必要ですが、機能は3.8.4で大幅に向上しました。
    • X300/X310には少なくとも3.7.0が必要です
    • B200miniには3.9が必要です
    • USRP1/2/B100/N200/N210は直接サポートされているはずですが、最も古いリリースは実際にあります。すべてのドーターボードで使用できるほどではありません。前述のように、最新バージョンを使用してみてください。
  • [〜#〜] usb [〜#〜]接続デバイス(USRP B200、B210、B200mini、B100、USRP1)を使用している場合、チャンスはあなたのどちらかです
    • linuxの場合:「通常の」ユーザーがUSRPと通信できるようにするために必要な devルール はありません。 /etc/udev/rules.d/uhd-usrp.rulesのようなものが含まれているかどうかを確認します。
    • windowsの場合: Windows USBドライバーがインストールされている がない可能性があります。
    • 自分でUHDを構築した場合(また、GNU Radio through build-gnuradio.sh or pybombs )をインストールした場合は、 USBライブラリがありません。UHDcmakeログに「EnablingUSB」が含まれていることを確認してください。
    • USB3:一部のUSB3ホストコントローラーは標準に準拠して動作せず、接続を実現できません。 USB2ポート(通常は青色ではないもの)に接続したときにUSRPが検出された場合は、問題ないはずです。
  • ネットワークデバイス(1Gbit/10Gbitイーサネットを搭載したUSRPX300/X310、USRP N200/N210、USRP2)を使用している場合[.____]
    • ネットワークインターフェースがであることを確認してください
      • 1Gbit対応(または適用する場合は10GE)。 「ファストイーサネット」(10/100Mbit)NICはUSRPでは機能しません
      • Intel 82579LMネットワークコントローラー(オペレーティングシステムに通知せずにパケットを時々ドロップすることが知られている唯一のPCIeネットワークコントローラーIC)ではありません
      • uSB3からギガビットへのアダプタではありません(これらはパケットに対して興味深い並べ替えを行う傾向があるため、高速のリアルタイムサンプルには適していません)
    • コンピューターが同じIPネットワーク上にあることを確認してください。デフォルトでは、USRPには192.168.10.XXX範囲(出荷時設定ではXXX=2)のアドレスがあります。コンピューターのIPアドレスが同じ範囲であるが、同じアドレスではないことを確認してください。
    • 基本的なコミュニケーションが機能することを確認します(ping <ip address of USRP>による)。そうでない場合は、自分のIPアドレスを再確認し、USRPが正しいアドレスに構成されていることを確認してください。
      • USRPの現在のIPアドレスを確認するには、wireshark(ネットワークパケットスニファソフトウェア)を適切にインストールし、専用のネットワークインターフェイスを(電源がオフのUSRP)に接続し、キャプチャを開始するのが最も簡単な場合がよくあります。そのインターフェイス、およびUSRPの電源を入れます。
      • アドレスが間違っている場合は、 SRP X300/X31cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"のIPアドレスを再プログラムできます。
      • アドレスが間違っている場合は、 SRP N200/N210/USRP2cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"のIPアドレスを再プログラムできます。
    • トラフィックを許可するように構成されたファイアウォール USRPのポート49152から送信されていることを確認してください。Linuxでは、通常、次のiptablesコマンドがトリックを実行します¹:Sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT。これはファイアウォールに穴を開けることに注意してください。教育機関のセキュリティポリシーが適用される場合があります。
  • PCに接続されたUSRP E100、E110、E310、またはE312を使用しようとしている場合:
    • Eシリーズデバイスはスタンドアロンの組み込みLinuxSDRデバイスです。周辺機器としてPCに接続することはありません。ソフトウェア(該当する場合)を クロスコンパイラ でコンパイルし、ソフトウェアをEシリーズデバイス自体で実行する必要があります。ホストPC。

PC、USRP、ケーブルおよびデバイスのIP構成が正しいかどうかを簡単にテストするために、現在の GNU Radio Live DVD ²(ちなみに、これには大量のクールな例も含まれています)をダウンロードして起動しますそれを試して、そこでuhd_find_devicesを試してください。


¹各ディストリビューションにはファイアウォールの管理方法に関する独自のアイデアがあるため、マイレージは異なる場合があります

²可能であれば、トレントファイルを使用してください-AmazonAWSトラフィックはGNU Radioプロジェクトのメンテナーにとって無料ではありません。トレントファイルもソースとしてAWSサーバーを使用しますが、他のユーザーから画像の一部を取得します。

15
Marcus Müller