Skip to content

USB proxy: support 3.2 Gen 2×2 (20Gbps) and USB4 (40Gbps) #9587

@mzpqnxow

Description

@mzpqnxow

NOTE: This is practically the same as #6002 as far as I can tell, except it's 20000 for USB 3.2 Gen 2x2 and 40000 for USB4. I have not tested USB4 but am happy to do so if/when this is fixed. I'm encountering this issue using Highpoint RM110, which is a USB4 NVME enclosure that can operate on any USB speed (5000, 10000, 20000, 40000)

NOTE: This should not be considered a blocker or high priority issue as I am able to use qvm-block rather than relying on usb proxy - something I prefer to do with storage devices anyway. I only tried usb proxy (and encountered this issue) because I wanted to compare the performance of each (both the throughput as well as the CPU usage)

ONE MORE NOTE: I made a very deliberate effort to ensure that the peripheral and the controller would not use USB tunneled inside Thunderbolt, which is a common way for storage peripherals to support both Thunderbolt and USB4 - even though pure USB can operate at both 20Gbps and 40Gbps. It's a somewhat confusing topic but I'm mentioning it to avoid any misinterpretation about the protocol being USB or Thunderbolt. The peripheral only supports "pure" USB4 and to be safe, I also have disabled Thunderbolt in UEFI, for all sorts of reasons. So, yes, this is USB protocol, there is no Thunderbolt involved here. I prefer my PCI bridges inside my computer 😄

The problem you're addressing (if any)

I would like to use a 20Gbps (and eventually, 40Gbps) USB device on QubesOS using usb proxy

When I try to attach to an AppVM via usb proxy, I get the following in dom0:

Nov 18 18:18:45 personal qubes.USBAttach-dom0[2503]: Invalid speed "20000" received. Expected "1.5", "12", "480", "53.3-480", "5000", "10000".  If the remote side sent nothing, this could mean    - the device is invalid or unplugged   - the VM crashed   - qubes-usb-proxy is not installe>

Attaching to the same AppVM using block attach works wonderfully and the performance is fantastic

The solution you'd like

I would like for USB proxy attachment of a 20Gbps or 40Gbps (USB4) device to work

The value to a user, and who that user might be

In theory, any user making use of external storage utilizing USB Gen 2x2 or USB4 for high-performance peripherals

In practice, probably 90% of such users are using an enclosure of some sort, and are therefore not blocked (pardon the pun) as they can use qvm-block

Only users with USB3.2 Gen 2x2 / USB4 peripherals that do not present as block device would actually benefit from supporting these higher speeds. I'm not familiar with the applications of such high speeds outside of storage, but I can guess that perhaps ultra high definition video capture might operate over 20Gbps or 40Gbps link speeds. Pretty niche...

Completion criteria checklist

Metadata

Metadata

Assignees

No one assigned

    Labels

    C: usb proxyThis issue pertains to the USB proxy in Qubes OS.P: minorPriority: minor. Below "default" in severity. The lowest priority.pr submittedA pull request has been submitted for this issue.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions