You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS主机通过docker-machine创建的VirtualBox无法访问USB UART设备求助

解决docker-machine VirtualBox虚拟机访问Nordic nRF52840 USB串口的问题

我之前也碰到过类似的Nordic开发板串口映射问题,给你梳理几个靠谱的解决步骤:

一、先搞定VirtualBox的USB设备识别问题

你说VirtualBox没把nRF52840识别为USB设备,大概率是虚拟机的USB控制器没开或者设备过滤器没配置:

  1. 先停掉你的docker-machine虚拟机:
    docker-machine stop default
    
  2. 打开VirtualBox图形界面,找到default虚拟机,右键选设置 -> 切换到USB标签:
    • 勾选「启用USB控制器」,然后选择「USB 3.0 (xHCI)控制器」(nRF52840用3.0兼容性更好)
    • 点击右侧的「添加USB设备过滤器」按钮,在列表里找到标注为「Nordic Semiconductor」的设备(如果没看到,先插拔下开发板刷新设备列表),添加进去
  3. 重新启动虚拟机:
    docker-machine start default
    
  4. 进入虚拟机检查:
    docker-machine ssh default
    ls /dev/ttyACM*  # nRF52840被识别为USB串口后一般会显示为ttyACM0
    

二、解决macOS的USB权限问题

如果还是看不到设备,大概率是VirtualBox没获得macOS的USB访问权限:

  • 打开「系统偏好设置」->「安全性与隐私」->「隐私」标签,找到「USB」选项
  • 确保列表里的「Oracle VM VirtualBox」被勾选,如果没看到,先重启VirtualBox,再插拔开发板,系统会弹出权限请求,点击「允许」

三、如果USB方式还是不行,试试正确的串口映射

你之前尝试的串口映射没成功,可能是路径或配置不对:

  1. 停掉虚拟机后,进入VirtualBox设置 -> 串口标签:
    • 勾选「启用串口」,端口号选「COM1」(对应虚拟机内的/dev/ttyS0)
    • 端口模式选「主机设备」,然后在「路径/地址」里输入macOS上的设备路径:/dev/tty.usbmodem144241
    • 注意:每次插拔开发板,这个路径的后缀可能会变,先在macOS终端用ls /dev/tty.usb*确认最新路径
  2. 启动虚拟机后,进入虚拟机检查串口是否存在:
    docker-machine ssh default
    ls /dev/ttyS0
    
  3. 给当前用户添加串口访问权限:
    sudo usermod -aG dialout docker
    

四、容器内访问串口的注意事项

如果是要在docker容器里访问串口,运行容器时需要挂载设备:

docker run --device=/dev/ttyACM0:/dev/ttyACM0 --user $(id -u):$(id -g) your-image-name

(如果是串口映射的ttyS0就替换成对应路径)

额外排查点

  • 先在macOS上用screen /dev/tty.usbmodem144241 115200测试设备本身是否能正常通信,排除硬件或驱动问题
  • 如果VirtualBox的USB过滤器里找不到设备,用system_profiler SPUSBDataType在macOS终端获取设备的Vendor ID和Product ID,手动添加到USB过滤器里(输入VID和PID的十六进制值)

内容的提问来源于stack exchange,提问作者martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:10:26