While I wait for a possible solution for sharing Qubes usb devices (not just thumbdrives) with Windows HVM, I’m looking for other alternatives. (See: Windows support in Qubes for the development discussions.)
My needs: I have a webcam and thumbdrive that must be shared with the Windows HVM. I have a Yubikey (2FA USB device) that must be used to unlock the hard drive, login, and screen saver.
The solutions I’ve tried:
Option (A): QWT for Windows 10. Fails to install; it doesn’t copy required DLLs during the installation process. If I manually install the missing DLL files, then I can share a thumb drive from sys-usb to Windows VM, but not other types of USB devices. QWT’s documentation claims to support USB devices on Win10, but that hasn’t been true for years. (It appears to have broken in 2019, when Windows hardened their application sandbox.) See QWT at Contents/windows-tools.md at master · Qubes-Community/Contents · GitHub
Option (B): Xen tools. Qubes is based on Xen. If this were Xen without Qubes, then I could use the Xen Window Tools to share USB devices from dom0 to a Windows VM in domu. Except: their Win10 installer has the same “broken and hasn’t worked in years” problem. And while it works in Xen without Qubes, the Xen tools do not work under Qubes. See Xen Tools at Index of /pvdrivers/win
Option (C): dom0 patch. Dmitry has some dom0 patches for stubbing qrexec that permit sharing any USB device to a Windows VM. As I understand it (from looking at the github logs), his patches have been accepted into the master code base and are passing the nightly regression test builds. However, use ‘sudo qubes-dom0-update --enablerepo=qubes-dom0-current-testing’ does not seem to retrieve the patches. (Or it is retrieving them but it still isn’t working.) Note: If I can get this solution working, then this is definitely the best option.
Option (D): I could run vmware/virtualbox/qemu inside a Linux VM and have that run the Windows VM. Those virtual software packages do permit sharing USB devices. Running a VM in a VM is ugly, but doable. The issue here is that, for my needs, Win10 must be 64-bit. The VM-in-a-VM solution only supports 32-bit OSes. (Is there a way to do with with a 64-bit OS?)
I’m up to option (E). On my laptop, all external USB ports AND the built-in webcam are on one USB bus. (Keyboard and mouse are not on that bus.) I can tell sys-usb to ignore this USB bus and assign the bus directly to the Windows VM.
Good news: The Windows VM can directly access the webcam and thumb drive because it owns the USB’s PCI bus.
Bad news: The Qubes/Linux screensaver cannot see the Yubikey, because it’s a USB device.
- Is there any way I can assign the bus to Windows but keep the Yubikey in sys-usb?
- Is there a working solution to any of the other options?
- Is there some other option that I could use to get around this problem? I’m even open to using some kind of virtual desktop from a local Linux VM to the local Windows VM.