VirtualBox 中没有可用的 USB 设备

mgu*_*ssa 119 linux usb virtualbox virtual-machine ubuntu

Oracle VirtualBox 无法列出/过滤连接到我的系统的 USB 设备。因此,客户操作系统也无法看到任何 USB 设备。

这是我的配置:

  • 主机:Ubuntu 14.04 上的 VirtualBox 5.0.0 r101573,安装了 Oracle VM VirtualBox 扩展包
  • 来宾:Windows 7,安装了 VirtualBox 来宾添加

我一直在用U盘和Garmin运动手表试过:当连接到主​​机时,它们都被系统识别,即它们在lsusb命令输出的列表中。

但是,在运行 VirtualBox 时,实际上未检测到 USB 设备(Enable USB Controller显然已选中)。如果我选择 VM,然后Settings->USB并尝试添加过滤器,则会显示工具提示:

<no devices available>
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的选项作为 USB 控制器,甚至尝试将设备连接到不同的 USB 端口(2.0 而不是 3.0),但这并没有改变任何东西。由于那里没有列出 USB 设备,我认为问题出在主机上,而不是在来宾上。

我拥有的 USB 鼠标在主机和来宾中都可以使用,但这可能是一种被区别对待的设备。

VBox.log不报告关于USB什么可疑的东西,而VirtualBox的不要么抛出任何错误。

当我安装 VirtualBox 4.3.30 时发生了同样的问题。

有没有办法解决这个问题?

小智 199

vboxusers使用以下命令将您的用户名添加到组中:

sudo adduser $USER vboxusers
Run Code Online (Sandbox Code Playgroud)

之后,您必须注销并登录。(对于 Ubuntu 20.04,需要重启)

请检查此以获取更多详细信息:

https://help.ubuntu.com/community/VirtualBox/USB

  • 我在 opensuse 中遇到了同样的问题,将自己添加到 vboxusers 组没有解决问题 (6认同)
  • 您还可以使用以下命令检查这是否有效:`VBoxManage list usbhost` (5认同)
  • @Calin 将您的帐户添加到组 `vboxusers` 仅适用,如果 `/dev/bus/usb/XXX/YYY` 也属于组 `vboxusers`。 (3认同)
  • @FrankNocke 我今天刚遇到这个。将 GID 添加到 vbox 安装的 udev 规则文件即可。请参阅 https://github.com/dnschneid/crouton/wiki/VirtualBox-udev-integration。虽然它确实感觉很笨拙。 (3认同)
  • @olaf-dietsche 所有`/dev/bus/usb/...` 都属于用户 root、组 root ......有什么建议,那该怎么办? (2认同)

Bab*_*yan 28

如果您没有该adduser命令,则可以改为执行以下操作:

sudo usermod -aG vboxusers $USER
Run Code Online (Sandbox Code Playgroud)

注销并再次登录以重新加载用户的组信息,USB 设备现在将显示在列表中。


Hen*_*usa 13

与访客共享 USB 时,可能会出现很多问题。无论如何,我所做的清单是:

  • Extension Pack在主机和Guest Additions来宾上安装。
  • 将当前用户添加到vboxusers组中。
  • USB filter在 VirtualBox 设置中手动添加相应的设置,并在完成启动来宾操作系统连接设备。
  • 在 VirtualBox 下,首先尝试USB 3.0 (xHCI) Controler,如果不起作用,则继续使用USB 2.0 Controller.

经过一些最初的失败尝试后,我已成功地与 Linux Mint 19主机上的 Windows XP客户机共享 USB 记忆棒。祝你好运 !

  • 这个答案是唯一完整且正确的答案。请注意,您需要安装最新的 VirtualBox 扩展包才能获得 USB 3.0 支持。 (2认同)

gon*_*332 10

经过多次搜索后,我在这个 wiki的帮助下得出了解决问题的以下脚本的结论:

#!/bin/bash

#
# Heavily inspired by https://github.com/dnschneid/crouton/wiki/VirtualBox-udev-integration
#

vbox_usbnode_path=$(find / -name VBoxCreateUSBNode.sh 2> /dev/null | head -n 1)
if [[ -z $vbox_usbnode_path ]]; then
    echo Warning: VBoxCreateUSBNode.sh file has not been found.
    exit 1
fi

chmod 755 $vbox_usbnode_path
chown root:root $vbox_usbnode_path

vboxusers_gid=$(getent group vboxusers | awk -F: '{printf "%d\n", $3}')

vbox_rules="SUBSYSTEM==\"usb_device\", ACTION==\"add\", RUN+=\"$vbox_usbnode_path \$major \$minor \$attr{bDeviceClass} $vboxusers_gid\"
SUBSYSTEM==\"usb\", ACTION==\"add\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$vbox_usbnode_path \$major \$minor \$attr{bDeviceClass} $vboxusers_gid\"
SUBSYSTEM==\"usb_device\", ACTION==\"remove\", RUN+=\"$vbox_usbnode_path --remove \$major \$minor\"
SUBSYSTEM==\"usb\", ACTION==\"remove\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$vbox_usbnode_path --remove \$major \$minor\""

echo "$vbox_rules" > /etc/udev/rules.d/virtualbox.rules
rm -f /etc/udev/rules.d/*-virtualbox.rules
udevadm control --reload
adduser `logname` vboxusers

echo All actions succeeded.
echo Log out and log in to see if the issue go fixed.
Run Code Online (Sandbox Code Playgroud)

确保安装了VM VirtualBox 扩展包,并且至少在 VM 的 USB 设置中启用了 USB 2.0 (EHCI) 控制器。

满足这些要求后,使用 运行上述脚本sudo

您可能需要重新启动 Linux 机器。


kFY*_*tek 5

首先,@csorig 的回答是正确的。你需要在vboxusers组里。这是基本的。

但是,如果它出于任何原因仍然不起作用......它没有在任何地方记录,但我发现如果系统inotify资源耗尽,USB 主机设备共享不起作用。

你可以试试跑步之tail -f /var/log/syslog类的。如果它显示如下消息:

tail: inotify cannot be used, reverting to polling: Too many open files
Run Code Online (Sandbox Code Playgroud)

那么您需要增加您的inotify观看限制或禁用消耗它们的软件。就我而言,它是一个在后台运行的连续备份软件。

增加这个限制的基本方法是:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)