Direct USB passthrough is slow, but using SPICE is fast

Theady

New Member
Jul 29, 2023
1
0
1
Hello,

I want to pass a USB device to a VM (namely a USB TV tuner for a TV server).
When I do it directly by adding a USB device to the VM with the vendor/device ID, it seems as if the device is sometimes slow to respond.
However, when I add a SPICE USB channel, change the display to SPICE, connect using remote-viewer, and share the USB-device from my PC, the speed/latency seems no problem.
How can it be that sharing a USB device over network (1 GBit/s LAN) is faster than directly sharing it to the VM?


Is there something I'm doing wrong? I have already read that sharing USB devices can be slow, but I don't understand why sharing through SPICE is no problem.

As a workaround, does someone know of a way I can share the USB device using SPICE without having a display connection (i.e., running some terminal-command in the background on the proxmox host, which just forwards the USB device using spice)?
I have already found the usbredir project. Can I tell proxmox to create a USB port that I can connect to using the usbredirect binary?

I already know that I could buy a PCIe USB card and share the full PCIe card to the VM, but that seems a bit overkill for a single USB 2.0 device.

Thank you for your help.
 
USB passthrough is not great for low-latency or high-bandwidth (like TV-tuners). Depending on your Proxmox version. make sure to enable USB3. I have no idea why it would work better via SPICE or how to do that in the background. You could try USB/IP instead maybe?
I run my TV-server in a unprivileged Ubuntu container for the least amount of overhead by loading the driver/firmware on the Proxmox host and bind-mounting /dev/dvb and setting up the right Linux group ID mapping. Several threads here about that.