Issue: 3rd party USB Bluetooth adaptor plugged into Mac is not available for pass-through to virtual machine guest OS. Error: “Failed to attach”. I found this issue using Mac OS Catalina 10.15.1 with VirtualBox, but I can see it also being a problem in Parallels and VMware Fusion too.
If you plug a USB Bluetooth adaptor into a Mac, the default behaviour (it would appear) is now to switch the default bluetooth adaptor in use by the system from the Mac’s built in bluetooth radio to the newly installed USB Bluetooth adaptor.
As USB devices cannot be shared, this means that the USB Bluetooth adaptor is not free for use by a VM host.
To change this behaviour, which is defined by a NVRAM boot argument, open up terminal and enter the following command:
sudo nvram bluetoothHostControllerSwitchBehavior=never
After running this command (no reboot required), and with my VM already running and configured to passthrough the USB device, I plugged my USB Bluetooth adaptor into the host and immediately I heard the little windows sound alerting me that a new USB device has been detected – whoop!
To reverse this behaviour back, simply run:
sudo nvram bluetoothHostControllerSwitchBehavior=always
I’m not sure when this default behaviour changed in Mac OS. I have a windows bluetooth diagnostic tool that I use infrequently and it used to pass through fine on 10.14 and an earlier version of VirtualBox. Since upgrading to Catalina and a newer version of VirtualBox this problem showed up and it’s taken a few hours of googling, and stack exchange and VB forum post reading!
My main inspiration came from this stack exchange post about someone who was trying to make sure that their OSX switched to a 3rd party USB Bluetooth adaptor by default.