如何从另一个联网设备访问 Raspberry Pi 4 上直接连接的 USB 设备(UltraLite-mk5)?

如何从另一个联网设备访问 Raspberry Pi 4 上直接连接的 USB 设备(UltraLite-mk5)?

我在 Raspberry Pi 4 上运行 Ubuntu 21.04 服务器(GNU/Linux 5.11.0-1016-raspi aarch64),它通过其以太网端口连接到我的 LAN。

我有一个 MOTU UltraLite-mk5 声卡,通过 USB 直接连接到 Raspberry Pi 4,以便 UltraLite-mk5 输出流式传输到 Raspberry Pi 4 的声音。我希望能够同时通过网络从我的 Mac 访问 UltraLite-mk5,以便配置 UltraLite-mk5。

有没有什么方法可以配置 Raspberry Pi 4 以允许使用可从 LAN 访问的唯一 IP 地址来寻址 UltraLite-mk5?

背景

如果 UltraLite-mk5 通过 USB 直接连接到我的 Mac,我可以将声音直接发送到 UltraLite-mk5,同时使用 MOTU 提供的控制软件 (CueMix5) 访问 UltraLite-mk5。当我的 Mac 直接连接到 UltraLite-mk5 时,它会通过 USB 连接将 UltraLite-mk5 视为多功能设备:

  1. 首先作为声卡设备,并且......
  2. 其次通过Mac的网络设备en11作为网络设备。

因此,当直接连接时,UltraLite-mk5 会在 Mac 的系统偏好设置 | 网络选项卡中列出,并连接到自动私有 IP 地址 169.254.152.243。我还注意到,如果给出了 UltraLite-mk5 的 IP 地址,CueMix5 应用程序可以通过网络连接 UltraLite-mk5,但我没有测试过,因为我不知道如何通过 USB 将 UltraLite-mk5 直接连接到网络……因此才有这个问题!

潜在答案提纲

所以我猜测这些步骤(我都不完全理解!)将涉及以下内容。我正在寻求帮助,首先确认这听起来是正确的方法,然后帮助确定需要哪些正确的 CLI 命令。因此计划包括:

  1. 在 Raspberry Pi 4 的 NIC 上获取第二个 LAN IP 地址(因此 CM5 软件可以从另一台联网机器寻址该 IP 地址)。我知道 NIC 可以有多个 IP 地址。我想设置第二个地址,最好从网络的 DHCP 服务器获取(不确定这是否真的有必要避免 LAN 上的地址冲突),但关键是这个第二个 IP 地址需要与其余设置配合使用,特别是步骤 (3)。因此,这个第二个 LAN IP 地址是否需要是静态的?我需要什么 CLI 指令来设置它?

  2. 在 Raspberry Pi 4 上为 UltraLite-mk5 配置 USB 网络服务因此 Raspberry Pi 4 和 UltraLite-mk5 可以互相通信。我可以看到,我的 Mac 上为 UL5 安装的 MOTU 软件创建了一个 USB 网络服务(称为 UltraLite-mk5),如果我知道 Mac 的相关 CLI 说明,我就可以检查已设置的内容,以便在 Raspberry Pi 4 上重现它。但我还不知道如何做到这一点。你能帮我吗?

  3. 映射/路由/虚拟交换(在 Raspberry Pi 4 上)将 (1) 中设置的第二个 IP 地址映射到 Raspberry Pi 4 的 USB 网络连接上,然后连接到 UltraLite-mk5,这样 Raspberry Pi 4 便会通过 USB 网络服务将发往 UltraLite-mk5 网络 IP 的网络流量直接转发到 UltraLite-mk5,反之亦然。听起来很简单!如果您知道 CLI 指令是什么,我想它就是如此。救命!

毫无疑问,从我的描述中,您可以看出我对网络的理解并不深入,而且我最近才开始掌握 Ubuntu 的 CLI,因此请从这个层面来回复。非常感谢您的阅读。

答案1

看一下通用协议. 它将通过 IP 转发 USB 协议。

因此,您可以在 RaspPi 上安装服务器部分,并通过 RaspPi 所连接的任何网络在 RaspPi 的 IP 地址下访问它。它不会获取自己的地址(除非在 RaspPi 上以某种方式配置它,并为 RaspPi 提供专用的 IP 地址),但特定的 IP 地址应该不是必需的,因此您可以跳过所有联网步骤。

它还将完全转发 USB 设备,这意味着您将无法从 RaspPi 本地使用该设备。

缺点是 usbip 客户端目前仅适用于 Windows 和 Linux。因此,要从 Mac 访问它,您要么在 Mac 上的 VM 中运行 Windows 或 Linux,要么需要了解 Mac USB 框架,并调整 USB(开源)以与其配合使用。


如果你只想转发声音,你也可以使用Pulseaudio 模块在可以通过标准协议(例如 ROAP/Apple Airtunes)进行流式传输的 RaspPi 上,然后从 Mac 访问它。

这应该可以开箱即用,但不会直接转发 USB 设备。


请注意,无论使用哪种解决方案(以及所有其他潜在的解决方案),都会增加延迟。


(请使用您在评论中提供的有关在 RaspPi 上出现和运行的网络接口的信息来更新您的问题)。

为了允许从外部访问USB设备的网络接口,需要设置普通路由(所有操作都需要root):

  1. 您的 RaspPi 和 MAC 可能都获得了 LAN 上由 DHCP 分配的私有范围 IPv4 地址。找到一些与您的 LAN 子网不重叠的子网。例如,如果您的 LAN 子网是10.23.5.*/24(这/24意味着前 16 位计数,此子网中有 256 个地址),请使用例如10.23.6.*/24

  2. 将此子网中的 IP 地址分配给 USB 网络接口:

    ip 地址添加 10.26.6.1/24 dev enx0001f2fff397

  3. 在 RaspPi 上启用转发

    回显“ 1”> / proc / sys / net / ipv4 / ip_forward

  4. 在 Mac 上,通过 RaspPi 地址添加到此地址的路由。假设您的 Mac 已获得10.26.5.12,而您的 RaspPi 已获得10.26.5.23,则您需要执行

    路由-n添加-net 10.23.6.0/24 10.26.5.23

  5. 现在您应该能够从 Mac ( ping 10.23.6.1) ping USB 接口。

  6. 不能FE80::...对于类似这样的情况,请使用链路本地IPv6 地址。

  7. 有多种方法可以自动化所有这些,但是现在,请尝试手动使其运行。

  8. 我不知道这样的网络接口如何控制声卡。手动的没有提到任何细节。我期望在分配给网络接口的网络地址后面有第二个网络地址,或者某个点对点接口。因此,虽然上述内容将允许访问网络接口,无论他们在声卡上做什么有趣的事情,它都可能起作用,也可能不起作用。

如果这是我的硬件,我要做的第一件事就是在我的 Mac 上运行 Wireshark 来查看那里到底发生了什么。

答案2

有一个更简单的解决方案。由于 CueMix 5 只是一个与 UltraLite 建立 WebSocket 连接的 Web 应用程序(如果您愿意,也可以是网页),因此可以运行一个在 Pi 上运行的 WebSocket 应用程序,并在您的计算机和 MOTU 之间双向传递消息。我实际上想做一些与你尝试做的事情非常相似的事情,所以我编写了这个简单的 node.js 应用程序来完成这项工作:https://github.com/jpcarrascal/motu-ultralite-mk5-bridge

我认为你应该能够在 Pi 上运行 node.js,所以这个解决方案应该适合你的情况。我希望这有效,如果你有任何问题请告诉我!

编辑:修正错字。

相关内容