166

Oracle VirtualBox is unable to list/filter the USB devices attached to my system. As a result, the guest OS is not able to see any USB device either.

This is my configuration:

  • Host: VirtualBox 5.0.0 r101573 on Ubuntu 14.04, with Oracle VM VirtualBox Extension Pack installed
  • Guest: Windows 7, with VirtualBox Guest Additions installed

I've been trying with a USB flash drive and a Garmin sports watch: when connected to the host, they are both recognised by the system, i.e. they are in the list outputted by the lsusb command.

However, when running VirtualBox, no USB device is actually detected (Enable USB Controller is obviously checked). If I select the VM, then Settings -> USB and I try to add a filter, a tooltip is displayed:

<no devices available>

I've tried different options as USB controller, even tried to attach the devices to different USB ports (2.0 instead of 3.0), but that didn't change anything. Since no USB devices are listed there I assume the problem is with the host, not with the guest.

The USB mouse I have is working in both the host and the guest, but that's probably a device that is treated differently.

The VBox.log does not report anything suspicious regarding the USB, and VirtualBox does not throw any error either.

The same problem occurred when I had VirtualBox 4.3.30 installed.

Is there a way to resolve the issue?

1
  • 1
    most likely you don't have access rights to /dev/bus/usb/XXX/YYY . try running virtualbox as a root as a temporary measure to confirm.
    – akhmed
    May 1, 2017 at 4:16

7 Answers 7

265

Please add your user name to the vboxusers group with this command:

sudo adduser $USER vboxusers

After that you must logout and login. (For Ubuntu 20.04, a reboot is required)

Please check this for more details:

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

15
  • 6
    I have the same issue in opensuse adding myself to vboxusers group did not solve the problem
    – Calin
    Jan 13, 2016 at 7:47
  • 3
    @Calin Adding your account to group vboxusers works only, if /dev/bus/usb/XXX/YYY belongs to group vboxusers too. Aug 14, 2016 at 14:45
  • 7
    You can also check if this is working with following command: VBoxManage list usbhost
    – sequielo
    Jan 8, 2017 at 19:34
  • 2
    @olaf-dietsche All that /dev/bus/usb/… belongs to user root, group root... any advice, what to do then?
    – Frank N
    Mar 23, 2018 at 12:20
  • 4
    @FrankNocke I ran into this just today. Adding the GID to the udev rules file installed by vbox does the trick. See github.com/dnschneid/crouton/wiki/VirtualBox-udev-integration. It does feel kludgy though.
    – Raghu
    Jun 12, 2018 at 14:43
35

If you don't have the adduser command, you can do this instead:

sudo usermod -aG vboxusers $USER

Logout and login again in order to reload user's group info and usb device will now show up in the list.

0
13

There's a lot of things that can go wrong when sharing USB to guests. In any case, the checklist I did was:

  • install the Extension Pack on the host and Guest Additions on the guest.
  • add current user to vboxusers group.
  • manually add the corresponding USB filter in VirtualBox settings and only connect the device after finish booting the guest OS.
  • under VirtualBox, first try USB 3.0 (xHCI) Controler and if doesn't work then go for USB 2.0 Controller.

I've successfully managed to share a USB stick to a Windows XP guest on a Linux Mint 19 host after some initial failed attempts. Good luck !

3
  • 2
    This answer is the only complete and correct one. Note that you need a recent VirtualBox Extension Pack installed to get USB 3.0 support. Aug 7, 2020 at 8:38
  • 1
    This was helpful. In my case, my smart card reader refused on USB 3.0. Using USB 2.0 port and VirtualBox USB 2.0 Controller worked for me.
    – kevinarpe
    Nov 10, 2022 at 14:49
  • 1
    I needed this use case again and like @kevinarpe, using USB 2.0 instead worked. Apr 12, 2023 at 12:53
11

After numerous searching I've concluded with the help of this wiki to the below script that fixed the problem:

#!/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.

Be sure to have VM VirtualBox Extension Pack installed and at least USB 2.0 (EHCI) Controller enabled at VM's USB settings.

After these requirements are met, run the above script with sudo.

You may need to reboot the Linux box.

5
  • 1
    After trying a bunch of things, this finally worked in Ubuntu 21.04 w/ VirtualBox 6.1.26. Sep 19, 2021 at 16:24
  • This one worked for me.
    – void
    Apr 10, 2022 at 19:35
  • 1
    FYI: If you drop to root (sudo bash), you can run these commands one by one. It feels less mysterious! I still needed a Linux box reboot to get everything to work.
    – kevinarpe
    Nov 10, 2022 at 14:50
  • Thanks for the feedback.
    – gon1332
    Nov 10, 2022 at 19:01
  • This was exactly the answer for Fedora 38. Works on standard Workstation. Updated the script for a few more checks and balances so that it is a tiny bit more cross-distro. Thank you! gist.github.com/aaronhuggins/e260f0e1c26c1318f458dc5d44e4e490 Oct 14, 2023 at 15:45
10

First of all, @csorig's answer is right. You need to be in the vboxusers group. That's the basic.

But if it still doesn't work for any reason... it's not documented anywhere, but I found that USB host device sharing does not work if the system has run out of inotify resources.

You can try running tail -f /var/log/syslog or something like that. If it shows up a message like:

tail: inotify cannot be used, reverting to polling: Too many open files

then you need to increase your inotify watch limit or disable software that is consuming them. In my case it was a continuous backup software running in background.

The basic method to increase this limit is:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
5
  • Thanks @kFYatek! Found the problem much faster because of your comment! Just wanted to note that in my case the error happened even though tail -f /var/log/syslog worked just fine (no warning)…
    – ntninja
    Dec 19, 2017 at 21:19
  • I'm still getting the inotify cannot be used after increasing the limit. May 13, 2020 at 21:03
  • 1
    I fixed the inotify issue with fs.inotify.max_user_instances. However, this did not help with the missing USB devices. May 13, 2020 at 21:21
  • 1
    The only thing that worked for me is to increase both max_user_watches and max_user_instances and restart the virtualbox service
    – dargaud
    Feb 20, 2023 at 15:50
  • @dargaud, @kFYatek, @James_Hirschorn, Thanks for the tips, raising both limits, restarting vboxdrv.service, fixed everything. VSCode used to cause a lot of inotify watcher runnout error, too bad, I just never linked them together.
    – Ben
    Apr 8, 2023 at 4:49
0

I used another USB port and... it worked.

We have to be aware that there are different types of USB ports and devices.

If you please, try using another USB port before attempting other ways.

2
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Feb 18, 2022 at 12:06
  • This comment is added because of the "leave a comment below their post". I understand this is an answer to the question (the proposed way was useful, it avoided me trying a lot of futile methods for my case).
    – Ganton
    Feb 22, 2022 at 11:05
0

None of the solutions or ideas presented here worked for me. And my issue was intermittent, would come and go between updates and reboots and reinstalls of VirtualBox on Ubuntu.

Solution: using a slightly older kernel, i.e. rebooting and choosing a few versions back, does the trick: it works again.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .