无法在 macOS 主机上的 VirtualBox Guest 中访问 USB UART

Cannot access USB UART in VirtualBox Guest on macos Host

我通过 docker-machine 创建了一个 virtualbox:

$ docker-machine create --driver virtualbox default

在 Guest-OS 中,我想访问我的 USB 串行设备,它是 Nordic nRF52840 DevKit,在 macos 中列为 /dev/tty.usbmodem144241.

但是,此设备未被 virtualbox 列为 USB 设备。我还尝试将设备添加为端口模式 "Host-Device" 的串行端口,如 in this link 所述,但没有成功:

如果我将串行端口添加为 .tty-usbmodem virtualbox 将挂起 'Starting',我必须终止所有 virtualbox 进程或断开串行电缆才能重新启动。如果我使用 .cu-usbmodem virtualbox 启动但立即崩溃。

我 运行 没主意了。我被困在这个问题上,因为 docker for mac 不支持没有虚拟 machine 的 --devices 映射,而对于虚拟 machine 我不知何故无法添加端口。

关于我还可以尝试什么的任何想法?

事实证明,virtualbox 对设备实际连接的时间非常挑剔,并且无法像我使用 VMWare 时那样无缝工作:

  • 我使用的设备实际上只是在 USB 菜单中显示为 SEGGER J-Link
  • 必须添加为filter(filter真的很混乱>开始我以为它会忽略设备)
  • 设备无法添加到virtualbox 'on the fly'(使用'Show' window中的USB-icon,见截图),在virtualbox 启动。
  • serial-tab 无关 > 全部通过 USB 选项卡处理。

重要的事实是 设备不能连接 当 virtualbox 启动时。所以添加设备的步骤如下:

  • 关闭 virtualbox
  • 确保 USB 控制器已启用
  • 将USB/serial设备连接到计算机(主机)
  • 将其添加到虚拟框中的过滤器

现在每次你想使用带有虚拟机的设备时:

  • 确保 virtualbox 已关闭(例如 docker-machine stop default
  • 断开 USB/serial 设备与计算机的连接
  • 启动虚拟机(例如,docker-machine start default
  • Virtualbox 现在应该能够 "intercept" 设备并将其列在 /dev 下,例如 /dev/ttyACM0

Un-/Plugging 盒子启动后的过滤设备也可以使用(如果您在启动前忘记断开设备连接,则无需再次关闭虚拟机电源。只需等待盒子启动起来,拔,插,应该就好了)。