-
-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
USB proxy: support 3.2 Gen 2×2 (20Gbps) and USB4 (40Gbps) #9587
USB proxy: support 3.2 Gen 2×2 (20Gbps) and USB4 (40Gbps) #9587
Comments
USBIP in Linux 6.12 accepts USB_SPEED_SUPER_PLUS now (see bb548c1654db4a6f1a42657ed9068237e0c044b5 in Linux). Configure USB 3.1 device this way if kernel is new enough. QubesOS/qubes-issues#9587
Attach it as USB 3.1, until USBIP gets support for higher speed. Fixes QubesOS/qubes-issues#9587
Can you check if it works if you modify |
From a cosmetic point of view, that resolves it - however, it doesn't quite work:
|
If you're curious, this is what it looks like when plugged in to sys-usb, before passing it via usb proxy:
The line:
... is somewhat curious. But it does work fine, in sys-usb and when passed via qvm-block |
Regarding the power errors - it’s possible that I used procfs/sysfs to disable FLR on the controller associated with this device. I’m not sure that matters as it works fine in sys-usb, but seemed prudent to mention |
This might be something else, what happens if you try |
Hmm, this looks very similar to #9546 . Can you try kernel 6.6.60 (or 6.6.63) that should have it fixed already? |
Ahh interesting, yes, I'm AFK but will try to give it a shot as soon as I can Thanks! |
Tested with reasonable success using all of your suggestions:
Those allow the block devices to be seen and the partitions to be probed, though there are some complaints in the target appVM - included below in case they're of interest:
I was curious what really did the trick and noticed that enabling Irrelevant comment: I had some concerns about the Note that I haven't tested the performance; I assume the best throughput I can expect is Thanks for your time on this - hopefully it will prove worthwhile, since it seems it should make it quick to add the support for 20Gbps (and maybe 40Gbps / USB4) as soon as 6.12 is packaged tl; dr; Suggestions resolved the issue; forced USB reset in the target VM seemed to be critical; thanks, I'll try to ping about (or send a PR for) the speed=6 setting once 6.12 is packaged, to save you a few minutes. If you would like to close this, please do |
6.12 is in the testing repo already, since yesterday |
Fantastic, I will give it a try when it hits stable. I'm a cautious fellow with my data, which means waiting more than I probably need to when it comes to kernel updates 😄 |
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:
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
The text was updated successfully, but these errors were encountered: