3.11 USB emulation
QEMU emulates a PCI UHCI USB controller. You can virtually plug
virtual USB devices or real host USB devices (experimental, works only
on Linux hosts). QEMU will automatically create and connect virtual
USB hubs as necessary to connect multiple USB devices.
3.11.1 Connecting USB devices
USB devices can be connected with the -usbdevice commandline option or
the usb_add monitor command. Available devices are:
mouse
Virtual Mouse. This will override the PS/2 mouse emulation when
activated.
tablet
Pointer device that uses absolute coordinates (like a
touchscreen). This means QEMU is able to report the mouse position
without having to grab the mouse. Also overrides the PS/2 mouse
emulation when activated.
disk:file
Mass storage device based on file (see disk_images)
host:bus.addr
Pass through the host device identified by bus.addr
(Linux only)
host:vendor_id:product_id
Pass through the host device identified by
vendor_id:product_id (Linux only)
wacom-tablet
Virtual Wacom PenPartner tablet. This device is similar
to the tablet above but it can be used with the tslib library because
in addition to touch coordinates it reports touch pressure.
keyboard
Standard USB keyboard. Will override the PS/2 keyboard (if
present).
serial:[vendorid=vendor_id][,product_id=product_id]:dev
Serial
converter. This emulates an FTDI FT232BM chip connected to host
character device dev. The available character devices are the same as
for the -serial option. The vendorid and productid options can be used
to override the default 0403:6001. For instance,
usb_add serial:productid=FA00:tcp:192.168.0.2:4444
will connect to tcp
port 4444 of ip 192.168.0.2, and plug that to the virtual serial
converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
braille
Braille device. This will use BrlAPI to display the braille
output on a real or fake device.
net:options
Network adapter that supports CDC ethernet and RNDIS
protocols. options specifies NIC options as with -net nic,options (see
description). For instance, user-mode networking can be used with
qemu-system-i386 [...OPTIONS...] -net user,vlan=0 -usbdevice
net:vlan=0
Currently this cannot be used in machines that support PCI
NICs.
bt[:hci-type]
Bluetooth dongle whose type is specified in the same
format as with the -bt hci option, see allowed HCI types. If no type
is given, the HCI logic corresponds to -bt hci,vlan=0. This USB device
implements the USB Transport Layer of HCI. Example usage:
qemu-system-i386
[...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt
device:keyboard,vlan=3
Best Answer
Assuming you are using a Linux distribution with udev support and you have root/administrator access to it then you can use udev rules to trigger on specific operations.
If the following example is added to a /etc/udev/rules.d/example.rules then it will run the specified script when a block device is added with the specified parameters.
That particular rule executes when my USB harddrive is inserted and attaches to the block system. It is quite easy to tweak the rules to match a specific lowlevel USB event.
I found the Debian UDEV wiki page and Writing Udev Rules site to be very helpful in getting the right rules for my situation.