Index: /trunk/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbRt.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbRt.cpp	(revision 57895)
+++ /trunk/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbRt.cpp	(revision 57896)
@@ -1343,5 +1343,12 @@
                 if ((iFrame < iStartFrame) || (iStartFrame > iFrame + 512))
                     iFrame = iStartFrame;
-                pPipeInfo->NextScheduledFrame = iFrame + pUrbInfo->numIsoPkts;
+                /* For full-speed devices, there must be one transfer per frame (Windows USB
+                 * stack requirement), but URBs can contain multiple packets. For high-speed or
+                 * faster transfers, we expect one URB per frame, regardless of the interval.
+                 */
+                if (pDevExt->Rt.devdescr->bcdUSB < 0x300 && !pDevExt->Rt.fIsHighSpeed)
+                    pPipeInfo->NextScheduledFrame = iFrame + pUrbInfo->numIsoPkts;
+                else
+                    pPipeInfo->NextScheduledFrame = iFrame + 1;
                 pUrb->UrbIsochronousTransfer.StartFrame = iFrame;
                 break;
