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

时间:2018-03-12 17:09:47

标签: usb virtualbox docker-machine

我已通过docker-machine创建了一个虚拟机:

$ docker-machine create --driver virtualbox default

在Guest-OS中,我想访问我的USB-Serial设备,这是一个北欧的nRF52840 DevKit,在macos中列为/dev/tty.usbmodem144241

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

USB devices in VirtualBox Serial Port in VirtualBox

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

我在这里没有想法。我遇到了这个问题,因为docker for mac不支持没有虚拟机的--devices映射,对于虚拟机,我无法设法添加端口。

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

1 个答案:

答案 0 :(得分:0)

因此事实证明,虚拟机在设备实际连接时非常挑剔,并且无法像我在使用VMWare时那样无缝地工作:

  • 我使用的设备实际上只是在USB菜单中显示为SEGGER J-Link
  • 必须添加为过滤器(过滤器确实令人困惑>首先我认为它会忽略设备)
  • 无法在运行中将设备添加到虚拟机中(使用“显示”窗口中的USB图标,请参见屏幕截图),在虚拟机启动之前不得连接它。
  • 串口标签不相关>它全部通过USB标签处理。

Virtualbox grays out the device - it was connected before powering up the box

重要的事实是,虚拟机启动时,设备不得连接。因此,添加设备的步骤如下:

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

现在每次要将设备与虚拟机一起使用时:

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

Device is connected!

在盒子启动后取消/插入已过滤的设备也可以正常工作(如果在启动设备之前忘记断开设备,则无需再次关闭虚拟机。只需等待盒子启动,拔掉插头,应该不错。