Hyper-V USB Passthrough
I made some stuff for Hyper-V.The first thing made is my own replacement for Hyper-V Windows to Linux guest file sharing. I did this because I didn't want to use WSL, but wanted good file sharing at high speed into guests.
After a bit of work I had a dual plane VMBus and vsock based high performance system driven by my own custom 9p file server written from scratch, VMBus ring buffers, own custom VSP on Windows, and custom kernel driver on Linux. All working smoothly including at speeds up to 1200 MB/s.
WSL already can do this with their own proprietary stuff, but it isn't 9p based any more, and I definitely don't have the source code for their stuff. Plus I own what I just created and it enables me to have a start for many other things.
I worked on the pieces of that a bunch and created a "VMBus kit". Extended that to make it more capable and have built in state machine sharing for more complex use cases.
The next thing I built was my own hvcon/hvterm. Why mess with ssh when I have a vsock driven terminal that is faster, better, and doesn't need networking. That was pretty easy to do. I added the ability to push files to the guest with it as well.
After all of that I decided to tackle USB passthrough into Hyper-V VMs. Not using usb/ip. Not using any existing source code. From scratch. Used WinUSB at first for the Windows side but ditched that and used custom KMDF because WinUSB just wasn't capable enough.
Because... I don't want to just pass block devices like disks in. I want to pass anything and everything in, including my old usb sound blaster x-fi device, which uses isochronous URBs and microframes. That is super finicky. Most USB solutions don't even support that. But mine is almost doing it seemlessly.
It took a lot of work and I'm still ironing out a few kinks, but it will be complete soon.
So yeah. I've nearly "solved" Hyper-V USB passthrough.
Yo Microsoft, please hire me or buy and adapt my solution(s).