How can I enable/disable a USB filter in VirtualBox from the command-line?

5

I'm running VirtualBox Version 4.2.0 r80737.

I have a USB keyboard that I usually just want filtered to the VirtualBox, but occasionally I want to free it up so that I can use it in the host OS as well. I was looking at VBoxManage in the documentation, and saw the promising looking "usbfilter" option, but when I tried usbfilter add/modify I got the error:

The machine 'your name here' is already locked for a session (or being unlocked)

So it seems that it doesn't affect the running machine (at least not through that option). I really just want to be able to programatically do the same thing as going through the menu to Devices > USB Devices > USB Keyboard [0001].

I don't care whether it's from the host or guest OS that I can access it.

Is this possible, and if so, how can I do it?

Wayne Werner

Posted 2012-12-06T13:39:02.027

Reputation: 1 501

Answers

6

This is done with usbattach command as described in manual.

VBoxManage controlvm <VM_ID> usbattach <uuid>|<address>
VBoxManage controlvm <VM_ID> usbdetach <uuid>|<address>

In order to find your VM ID, run VBoxManage list vms

For list of USB device UUIDs, run VBoxManage list usbhost (you may need to add sudo)

Volodymyr Smotesko

Posted 2012-12-06T13:39:02.027

Reputation: 283

The command you posted seems to be missing an argument as it didn't work for me. If you update your answer let me know, I'll delete mine. – csga5000 – 2017-11-16T23:04:14.960

@csga5000 Thanks for pointing that out, I have edited my answer. – Volodymyr Smotesko – 2017-11-17T09:17:29.563

@WayneWerner I have added list usbhost to the answer, thanks! – Volodymyr Smotesko – 2017-11-17T09:18:17.547

That looks more promising. Now I just need to find my UUID/address. So far I've failed to find anything useful. – Wayne Werner – 2012-12-06T15:07:48.623

3And just after I wrote that I discovered VboxManage list usbhost. Hooray! It works! – Wayne Werner – 2012-12-06T15:10:24.630

1

The other answer didn't work "out of the box" so here's what I got from his answer combined with looking at vboxmanage help:

(You may need to do: vboxmanage.exe, or cd \your\vbox\dir .\vboxmanage)

vboxmanage list vms
# Find your vm in the list and note the left string (ex "some_machine_123412341234_12345")
vboxmanage list usbhost
# Find your device in that list and note the uuid
vboxmanage controlvm "some_machine_123412341234_12345" usbattach "DEVICE_UUID"

Or to detach:

vboxmanage controlvm "some_machine_123412341234_12345" usbdetach "DEVICE_UUID"

csga5000

Posted 2012-12-06T13:39:02.027

Reputation: 111