我创建了一个包含USRP_UHD和GPP的节点(并确保ip_address对于USRP_UHD是正确的(。我基于此节点启动了域。但是,我收到以下错误:
UHD Error:
Device discovery error: AssertionError: libusb_init(&_context) == 0
in libusb_session_impl::libusb_session_impl()
at /builddir/build/BUILD/uhd-release_003_005_003/host/lib/transport/libusb1_base.cpp:37
UHD Error:
Device discovery error: AssertionError: libusb_init(&_context) == 0
in libusb_session_impl::libusb_session_impl()
at /builddir/build/BUILD/uhd-release_003_005_003/host/lib/transport/libusb1_base.cpp:37
...
-- Opening a USRP2/N-Series device...
-- Current recv frame size: 1472 bytes
-- Current send frame size: 1472 bytes
UHD Warning:
Unable to set the thread priority. Performance may be negatively affected.
Please see the general application notes in the manual for instructions.
EnvironmentError: OSError: error in pthread_setschedparam
我确实得到了两个未分配(每个TX/RX(调谐器,但是分配这两个调谐器用于任何参数并不容易。
此外,如果我只是启动域并启动单个设备USRP_UHD,或者只是通过命令行窗口运行发现USRP_UHD命令,我会收到相同的错误:
UHD Error:
Device discovery error: AssertionError: libusb_init(&_context) == 0
in libusb_session_impl::libusb_session_impl()
at /builddir/build/BUILD/uhd-release_003_005_003/host/lib/transport/libusb1_base.cpp:37
2016-02-01 16:59:20 WARN USRP_UHD_i:943 - WARNING: NO UHD (USRP) DEVICES FOUND!
有人能弄清楚这个问题在哪里吗?提前感谢!
因此,首先,好消息是这是在USB设备的自动检测期间发生的,因此您的N2xx本质上不会受到影响,但是:
UHD 3.5.3不仅古老,而且古老。你真的应该卸载它(如果你有Debian或衍生的[Ubuntu],那就sudo apt-get remove uhd-host libuhd003 libuhd-dev
了(,直接从Ettus安装一个新版本(如有必要,可以帮助你(,然后针对该版本重建Redhawk。
,真的这样做。在诸如故障处理之类的行为方面有了很大的改进,因此在不更新的情况下修复此问题并不值得。
现在,如果您明确指定一个设备地址,允许您完全取消基于 USB 的 USRP 检测,您应该没问题。作为设备地址,请使用 USRP2、N200 和 N210 的type=usrp2
。
我在尝试在 CentOS 7 Docker 容器中安装 UHD v3.9.3 时遇到了这个问题 - 错误消息指向与 Redhawk 无关的 USB 问题。USRP_UHD,Redhawk设备只是Ettus UHD驱动程序之上的抽象层,因此判断问题是Redhawk还是其他原因的最简单方法是直接从终端尝试其中一个UHD命令以生成相同的错误,例如uhd_usrp_probe
。
要检查问题是否与USB驱动程序直接相关,请尝试命令lsusb
。这应该列出连接到操作系统的所有 USB 设备。这些是很好的调试技巧,可以隔离问题所在。
如果您碰巧使用 Linux 容器或 Docker 执行此操作,则必须提供适当的权限,请参阅 docker-any-way-to-get-access-to-host-usb-or-serial-device。否则,假设您从源代码构建了 UHD,请检查make test
步骤的输出 - 如果所有测试都通过了,那么 UHD 库应该没有任何问题。
编辑:此外,如果您在虚拟机中运行此功能,则必须确保您的主机在安装过程中已向虚拟机管理程序(例如VirtualBox(授予网络/USB/等权限,或者您已在虚拟机配置中附加了正确的虚拟硬件。