USB device (hardware key) best practices


what is the suggested way how to configure access of a VM to a hardware USB key?

We unfortunately use a proprietary Windows application which requires hardware key to be inserted into the USB port all the time. The application does not require a full physical server, so we would like to run it inside VM. We tried - this more-or-less works, after trying hard to figure out the exact version of the usbip Windows driver required. However, it is pretty unreliable - after restarting the Windows VM we frequently need to restart the Linux-side daemon as well, and sometimes we cannot even manage to get it connected. And the Windows kernel driver for usbip does not seem to be developed anymore (unlike its Linux kernel counterpart).

Another option would be to run linux usbip client on the OpenNebula host, and grant access to that particular USB device to the Windows VM. But how to do it if I would like to be able to live-migrate the Windows VM to at least one other OpenNebula host?

How do you use hardware keys inside the OpenNebula environment?