运行 来自 Docker 的 GNU Radio 流程图,带有 Ettus B200 USRP 和 UHD

Run GNU Radio flowgraph from Docker with Ettus B200 USRP with UHD

我正在尝试从 Docker 容器中 运行 GNU Radio 流程图(无 GUI)。主机和 docker 图像上的 OS 都是 Ubuntu 18.04。我正在 运行正在使用 GNU Radio v3.7.13.4 和 UHD v3.14.0.0。

在主机上我可以 运行 grcc -e flowgraph.grc 并按预期执行。当我尝试 运行 它在 Docker 容器中时,它报告

Validation failed:

Block - blocks_tagged_stream_multiply_length_0 - Tagged Stream Multiply Length Tag(blocks_tagged_stream_multiply_length):
        Source - out(0):
                Port is not connected.
Error during file compilation.

在主机和 Docker 容器中 uhd_find_devices returns:

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.14.0.HEAD-0-g6875d061
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
    serial: 30CF9B7
    name: MyB210
    product: B210
    type: b200

看来我在主机和容器之间正确地共享了 USB 设备(尽管我怀疑问题是与此有关的一些更精细的细节)。

我 运行 将容器与: docker run -it -v /dev/bus/usb:/dev/bus/usb --privileged csradio:latest

有人知道问题出在哪里吗?

编辑 1:添加了 OS、GNU 和 UHD 版本详细信息。

查看您的 Dockerfile 出现上述错误的最可能原因是 UHD 块丢失,因为您在安装 gnuradio.

之后又安装了 uhd

解决方案是先构建安装uhd,然后再构建gnuradio