【问题标题】:When trying to use my USRP in GNU Radio, I get a " No devices found for ----->" error尝试在 GNU Radio 中使用我的 USRP 时,我收到“No devices found for ----->”错误
【发布时间】:2016-01-23 03:17:11
【问题描述】:

在尝试执行使用 USRP 的 GNU Radio 程序时,我收到一个错误回溯,它(在 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 正在运行。

【问题讨论】:

    标签: gnuradio usrp uhd


    【解决方案1】:

    您应始终首先使用uhd_find_devices 工具测试原始超高清功能:

    uhd_find_devices
    

    如果它没有找到您的设备,虽然它已启动,但我的经验是您很有可能根本无法与设备通信:

    • 如果您没有使用来自 Ettus 的 own repositoriesUHD 版本,尤其是在非全新 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 上:没有必要的udev rules installed 允许“普通”用户与 USRP 通信;检查/etc/udev/rules.d/ 是否包含uhd-usrp.rules 之类的内容。
      • 在 Windows 上:您可能没有 Windows USB drivers installed
      • 如果您自己构建了 UHD(另外,如果您通过 build-gnuradio.shpybombs 安装了 GNU Radio),则可能缺少 USB 库。确保您的 UHD cmake 日志包含“启用 USB”。
      • USB3:某些 USB3 主机控制器的行为不符合标准,无法实现连接。如果在插入 USB2 端口(通常不是蓝色的任何人)时检测到您的 USRP,那么您应该没问题。
    • 如果您使用的是联网设备(带有 1Gbit/10Gbit 以太网的 USRP X300/X310、USRP N200/N210、USRP2)
      • 确保您的网络接口是
        • 支持 1Gbit(或 10GE,如果适用); “快速以太网”(10/100Mbit)网卡不适用于 USRP。
        • 不是 Intel 82579LM 网络控制器(唯一已知的偶尔会在不通知操作系统的情况下丢弃数据包的 PCIe 网络控制器 IC
        • 不是 USB3-to-Gigabit 适配器(这些往往会对数据包进行有趣的重新排序,使其不适合高速实时采样)
      • 确保您的计算机在同一个 IP 网络上。默认情况下,USRP 的地址来自192.168.10.XXX 范围(出厂设置为XXX=2)。确保您的计算机具有相同范围的 IP 地址,但地址不同
      • 确保基本通信正常(ping <ip address of USRP>)。如果不是,请重新检查您自己的 IP 地址,并尝试确保将 USRP 配置为正确的地址。
        • 要找出您的 USRP 的当前 IP 地址,通常最简单的方法是正确安装 wireshark(这是一个网络数据包嗅探器软件),将专用网络接口连接到(关闭 USRP),启动捕获该接口,然后打开 USRP。
        • 如果地址错误,可以重新编程USRP X300/X310的IP地址:cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"
        • 如果地址错误,可以重新编程USRP N200/N210/USRP2的IP地址:cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"
      • 确保您的firewall configured to permit traffic 来自USRP 的端口49152。在Linux 上,以下iptables 命令通常可以解决问题¹:sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT。请注意,这确实在您的防火墙上打了一个洞。您所在机构的安全政策可能适用。
    • 如果您尝试使用连接到 PC 的 USRP E100、E110、E310 或 E312
      • E 系列设备是独立的嵌入式 Linux SDR 设备;它们不作为外围设备连接到 PC。您必须使用cross-compiler 编译您的软件(如果适用)并在 E 系列设备本身上运行该软件,而不是在您的主机 PC 上。

    为了快速测试您的 PC、USRP 和布线以及设备 IP 配置是否正确,请下载当前的GNU Radio Live DVD²(顺便说一下,其中还包含大量很酷的示例),启动它,然后尝试@ 987654345@那里。


    ¹您的里程可能会有所不同,因为每个发行版对如何管理防火墙都有自己的想法

    ² 如果可能,请使用 torrent 文件——亚马逊 AWS 流量对于 GNU Radio 项目的维护者来说不是免费的。 torrent 文件也使用 AWS 服务器作为源,但会尝试从其他用户那里获取部分图像。

    【讨论】:

      【解决方案2】:

      在命令下运行:

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

      在包含device_addr 的行中添加B210 作为它的值。

      Args:
      device_addr : B210
      

      【讨论】:

      • 了解 SWIG:不要永远使用 swig 生成的 Python 文件。此外,在内部了解 UHD,device_addr=b210 会被 UHD 忽略,所以如果这对您有帮助,那纯属巧合。
      • 此外,我不确切知道这解决了什么问题,但它可能是非常具体的。
      猜你喜欢
      • 2017-11-19
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2020-12-15
      • 2023-04-03
      • 2021-01-02
      相关资源
      最近更新 更多