Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 53030)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 53031)
@@ -8359,8 +8359,8 @@
     }
 
-    USHORT portVersion = 1;
+    USHORT portVersion = 0;
     hrc = aHostDevice->COMGETTER(PortVersion)(&portVersion);
     AssertComRCReturnRC(hrc);
-    Assert(portVersion == 1 || portVersion == 2);
+    Assert(portVersion == 1 || portVersion == 2 || portVersion == 3);
 
     int vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(), 0 /* idDstCpu (saved state, see #6232) */,
@@ -8427,5 +8427,7 @@
 
     int vrc = PDMR3UsbCreateProxyDevice(pUVM, aUuid, aRemote, aAddress, pvRemoteBackend,
-                                        aPortVersion == 1 ? VUSB_STDVER_11 : VUSB_STDVER_20, aMaskedIfs);
+                                        aPortVersion == 3 ? VUSB_STDVER_30 :
+                                        aPortVersion == 2 ? VUSB_STDVER_11 : VUSB_STDVER_20,
+                                        aMaskedIfs);
     LogFlowFunc(("vrc=%Rrc\n", vrc));
     LogFlowFuncLeave();
Index: /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp	(revision 53030)
+++ /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp	(revision 53031)
@@ -364,4 +364,6 @@
     else if (!strncmp(pszValue, RT_STR_TUPLE("480")))
         *pSpd = USBDEVICESPEED_HIGH;
+    else if (!strncmp(pszValue, RT_STR_TUPLE("5000")))
+        *pSpd = USBDEVICESPEED_SUPER;
     else
         *pSpd = USBDEVICESPEED_UNKNOWN;
@@ -1178,4 +1180,5 @@
           : pDev->enmSpeed == USBDEVICESPEED_FULL     ? "12 MBit/s"
           : pDev->enmSpeed == USBDEVICESPEED_HIGH     ? "480 MBit/s"
+          : pDev->enmSpeed == USBDEVICESPEED_SUPER    ? "5.0 GBit/s"
           : pDev->enmSpeed == USBDEVICESPEED_VARIABLE ? "variable"
           :                                             "invalid"));
@@ -1264,7 +1267,8 @@
         Dev->enmState = USBDEVICESTATE_UNSUPPORTED;
     else
-        Dev->enmSpeed =   !strcmp(szBuf, "1.5") ? USBDEVICESPEED_LOW
-                        : !strcmp(szBuf, "12")  ? USBDEVICESPEED_FULL
-                        : !strcmp(szBuf, "480") ? USBDEVICESPEED_HIGH
+        Dev->enmSpeed =   !strcmp(szBuf, "1.5")  ? USBDEVICESPEED_LOW
+                        : !strcmp(szBuf, "12")   ? USBDEVICESPEED_FULL
+                        : !strcmp(szBuf, "480")  ? USBDEVICESPEED_HIGH
+                        : !strcmp(szBuf, "5000") ? USBDEVICESPEED_SUPER
                         : USBDEVICESPEED_UNKNOWN;
 
Index: /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp	(revision 53030)
+++ /trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp	(revision 53031)
@@ -121,5 +121,5 @@
         return VERR_INVALID_PARAMETER;
     }
-    AssertMsgReturn(!(fVersions & ~(VUSB_STDVER_11 | VUSB_STDVER_20)), ("%#x\n", fVersions), VERR_INVALID_PARAMETER);
+    AssertMsgReturn(!(fVersions & ~(VUSB_STDVER_11 | VUSB_STDVER_20 | VUSB_STDVER_30)), ("%#x\n", fVersions), VERR_INVALID_PARAMETER);
     AssertPtrReturn(ppUsbHubHlp, VERR_INVALID_POINTER);
     AssertPtrReturn(pUsbHubReg, VERR_INVALID_POINTER);
@@ -963,5 +963,6 @@
     AssertPtrReturn(pUuid, VERR_INVALID_POINTER);
     AssertPtrReturn(pszAddress, VERR_INVALID_POINTER);
-    AssertReturn(    iUsbVersion == VUSB_STDVER_20
+    AssertReturn(    iUsbVersion == VUSB_STDVER_30
+                 ||  iUsbVersion == VUSB_STDVER_20
                  ||  iUsbVersion == VUSB_STDVER_11, VERR_INVALID_PARAMETER);
 
