dmesg reports usb_submit_urb returned -90

I just recently moved from using a USB over fiber solution (which was then mapped into a KVM VM) to using Virtualhere (with the VH server running on baremetal, and client being the same VM), and I'm having all sorts of issues.

The passthrough works fine for about 10-120 seconds (variable) and then it stops working.

I'm trying to pass an RME Audio Digiface USB device through VH, however I've tried with another RME device (Babyface) and the same problem occurs. 

I get the following errors in dmesg on the VH Server side:

[229571.980534] usb 5-2.4: reset high-speed USB device number 4 using xhci_hcd
[229572.428500] usb 5-2.4: reset high-speed USB device number 4 using xhci_hcd
[229615.568587] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568614] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568629] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568698] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568716] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568731] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568787] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229615.568858] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071190] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071215] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071231] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071244] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071257] usb 5-2.4: usbfs: usb_submit_urb returned -90
[229616.071462] usb 5-2.4: usbfs: usb_submit_urb returned -90

 

VH Client runs on a Windows 11 22U2 VM, on Intel i7 and complete get lock-ups of the VM. Have also tried running the client on another host with an AMD desktop CPU and face the same issues, so I wondered if it might a problem on the USB Server side, which is why I investigated the kernel logs and found the above errors.

USB Server is running on Linux, kernel 5.19.17. The VH USB Server is running natively (on baremetal not inside a VM) on AMD Epyc 7333X with ASRock ROME 8D-2T motherboard, ECC RAM, and the system is normally running very low load. I've even tried shutting down all the other functions on the system, but still the same issues unfortunately.  I've tried using the onboard USB ports on the motherboard (1 x Type C and Several Type As) and I've also tried with a USB 3 HUB in between and with a dedicated 4 port ASMedia add-in card as well, and face the same issues.

I don't think network latency is an issue (client is on 2.5GE into a 10GE switch, server is on 10GE into the same 10GE switch), and mtr (with a high packet rate) shows average latency of 0.13ms, with highest peaks being 0.29ms over a 2 minute period between the client and server.

Regardless of the low latency, I wanted to be sure it wasn't network related, so I copied the VM to the host that the VH USB server is running on, but still the same issue. i.e. I now have VH USB Server now running on the Linux host OS, and a Windows VM running on that same hardware with the VH client running there, and also still getting the same issues (and latency is now almost negligible <0.05ms )

 
If it helps, here is the lsusb for the device on the server side:

Bus 005 Device 004: ID 2a39:3fa0 RME Digiface USB (24086500)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x2a39 RME
  idProduct          0x3fa0 
  bcdDevice            3.01
  iManufacturer           1 RME
  iProduct                2 Digiface USB (24086500)
  iSerial                 3 8FD2A3786870FC8
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x006c
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              224mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0380  1x 896 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x03e8  1x 1000 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x0b  EP 11 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x88  EP 8 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x09  EP 9 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      0
Device Status:     0x0000
  (Bus Powered)

Any help would be appreciated.

#3

Thank you - I will give this a go