Since a while I ran into the problem where my VirtualBox vms weren’t able to mount external USB devices (which were available on the host system). After spending a night puzzling and many many reboots, I found a working solution.
Problem
Host: Microsoft Windows 10 Enterprise, Version 1809
VirtualBox version: 6.0.4
- Oracle VM VirtualBox Extension Pack 6.0.4
Virtual machines: Microsoft Windows 10 Enterprise, Version 1803
- Oracle VM VirtualBox Guest Additions Version 6.0.4
Ubuntu 18.04.2 LTS
- Oracle VM VirtualBox Guest Additions Version 6.0.4
Whenever I wanted to mount an USB device in a vm I got no response at all. Trying it a second time got me this message:
USB device ‘SanDisk Ultra Fit’ with UUID {c851d433-3939-4170-a131-b5a2e6016da1} is busy with a previous request. Please try again later.
Result code:E_INVALIDARG (0x80070057)
Solution
This was consistent behaviour for both vms. So I shifted my focus towards the host.
Ater monitoring USB with USBDeview, working through several logfiles (Get-Content “C:\Users\<user>\VirtualBox VMs\Linux\Logs\*.log” -Wait -Tail 30), many discussions on IRC and following several suggestions for different forums I came to the conclusion that the solution is, either deleting the (host) registry key UpperFilters in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{36FC9E60-C456-12CF-8078-44455443540000} or manually (re)installing the VirtualBox USB driver (rightmouse-click on C:\Program Files\Oracle\VirtualBox\drivers\USB\filter\VboxUSBMon.inf and choose Install). (Reboots required).
Source: https://forums.virtualbox.org/viewtopic.php?f=6&t=39104#p176270
After this I got an error when trying to mount an USB device:
ERROR [COM]: aRC=E_FAIL (0x80004005) aIID={872da645-4a9b-1727-bee2-5585105b9eed} aComponent={ConsoleWrap} aText={Failed to create a proxy device for the USB device. (Error: VERR_PDM_NO_USB_PORTS)}, preserve=false aResultDetail=-2861
Solution, enable USB 3.0 (note, requires Extenstion Pack); for testing purposes I changed this to a lower version
I wasn’t able to determine the root cause; it would take more time and more thorough testing to come up with that. This workaround, however, seems to be consistent, too 🙂