当我试图在GNU Radio中使用我的USRP时,我得到了一个"找不到----->"错误

时间:2015-10-23 14:27:33

标签: gnuradio usrp uhd

当尝试执行使用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正在运行。

2 个答案:

答案 0 :(得分:13)

您应该首先使用uhd_find_devices工具首先测试原始UHD功能:

uhd_find_devices

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

  • 如果你没有使用来自Ettus'own repositories UHD版,特别是在非全新的Ubuntus上,你的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,您应该没问题。
  • 如果您使用的是联网设备(USRP X300 / X310,1Gbit / 10Gbit以太网,USRP N200 / N210,USRP2)
    • 确保您的网络接口是
      • 1Gbit(或10GE,如果适用); “快速以太网”(10 / 100Mbit)NIC 与USRP不起作用
      • 不是英特尔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²(顺便提一下,还包含大量很酷的示例),启动它,然后在那里试试uhd_find_devices

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

²如果可能,请使用torrent文件 - 对于GNU Radio项目的维护者,Amazon AWS流量不是免费的。 torrent文件还使用AWS服务器作为源,但尝试从其他用户获取图像的一部分。

答案 1 :(得分:-2)

运行以下命令:

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

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

Args:
device_addr : B210