Index: uspace/drv/bus/usb/usbdiag/device.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/device.c	(revision 74c0de0de124d4dde73aac7144388d7fc86b7eb0)
+++ uspace/drv/bus/usb/usbdiag/device.c	(revision 119a794bc34ec072137c0cd0d2198857dfbfdffd)
@@ -53,14 +53,18 @@
 	}
 
+TRANSLATE_FUNC(usb_diag_stress_intr_out)
+TRANSLATE_FUNC(usb_diag_stress_intr_in)
 TRANSLATE_FUNC(usb_diag_stress_bulk_out)
 TRANSLATE_FUNC(usb_diag_stress_bulk_in)
-TRANSLATE_FUNC(usb_diag_stress_intr_out)
-TRANSLATE_FUNC(usb_diag_stress_intr_in)
+TRANSLATE_FUNC(usb_diag_stress_isoch_out)
+TRANSLATE_FUNC(usb_diag_stress_isoch_in)
 
 static usbdiag_iface_t diag_interface = {
+	.stress_intr_out = TRANSLATE_FUNC_NAME(usb_diag_stress_intr_out),
+	.stress_intr_in = TRANSLATE_FUNC_NAME(usb_diag_stress_intr_in),
 	.stress_bulk_out = TRANSLATE_FUNC_NAME(usb_diag_stress_bulk_out),
 	.stress_bulk_in = TRANSLATE_FUNC_NAME(usb_diag_stress_bulk_in),
-	.stress_intr_out = TRANSLATE_FUNC_NAME(usb_diag_stress_intr_out),
-	.stress_intr_in = TRANSLATE_FUNC_NAME(usb_diag_stress_intr_in)
+	.stress_isoch_out = TRANSLATE_FUNC_NAME(usb_diag_stress_isoch_out),
+	.stress_isoch_in = TRANSLATE_FUNC_NAME(usb_diag_stress_isoch_in)
 };
 
Index: uspace/drv/bus/usb/usbdiag/tests.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.c	(revision 74c0de0de124d4dde73aac7144388d7fc86b7eb0)
+++ uspace/drv/bus/usb/usbdiag/tests.c	(revision 119a794bc34ec072137c0cd0d2198857dfbfdffd)
@@ -178,4 +178,72 @@
 }
 
+int usb_diag_stress_isoch_out(usb_diag_dev_t *dev, int cycles, size_t size)
+{
+	if (!dev)
+		return EBADMEM;
+
+	char *buffer = (char *) malloc(size);
+	if (!buffer)
+		return ENOMEM;
+
+	memset(buffer, 42, size);
+
+	// TODO: Are we sure that no other test is running on this endpoint?
+
+	usb_log_info("Performing isochronous out stress test on device %s.", ddf_fun_get_name(dev->fun));
+	int rc = EOK;
+	for (int i = 0; i < cycles; ++i) {
+		// Write buffer to device.
+		if ((rc = usb_pipe_write(dev->isoch_out, buffer, size))) {
+			usb_log_error("Isochronous OUT write failed. %s\n", str_error(rc));
+			break;
+		}
+	}
+
+	free(buffer);
+	return rc;
+}
+
+int usb_diag_stress_isoch_in(usb_diag_dev_t *dev, int cycles, size_t size)
+{
+	if (!dev)
+		return EBADMEM;
+
+	char *buffer = (char *) malloc(size);
+	if (!buffer)
+		return ENOMEM;
+
+	// TODO: Are we sure that no other test is running on this endpoint?
+
+	usb_log_info("Performing isochronous in stress test on device %s.", ddf_fun_get_name(dev->fun));
+	int rc = EOK;
+	for (int i = 0; i < cycles; ++i) {
+		// Read device's response.
+		size_t remaining = size;
+		size_t transferred;
+
+		while (remaining > 0) {
+			if ((rc = usb_pipe_read(dev->isoch_in, buffer + size - remaining, remaining, &transferred))) {
+				usb_log_error("Isochronous IN read failed. %s\n", str_error(rc));
+				break;
+			}
+
+			if (transferred > remaining) {
+				usb_log_error("Isochronous IN read more than expected.\n");
+				rc = EINVAL;
+				break;
+			}
+
+			remaining -= transferred;
+		}
+
+		if (rc)
+			break;
+	}
+
+	free(buffer);
+	return rc;
+}
+
 /**
  * @}
Index: uspace/drv/bus/usb/usbdiag/tests.h
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.h	(revision 74c0de0de124d4dde73aac7144388d7fc86b7eb0)
+++ uspace/drv/bus/usb/usbdiag/tests.h	(revision 119a794bc34ec072137c0cd0d2198857dfbfdffd)
@@ -43,4 +43,6 @@
 int usb_diag_stress_bulk_out(usb_diag_dev_t *, int, size_t);
 int usb_diag_stress_bulk_in(usb_diag_dev_t *, int, size_t);
+int usb_diag_stress_isoch_out(usb_diag_dev_t *, int, size_t);
+int usb_diag_stress_isoch_in(usb_diag_dev_t *, int, size_t);
 
 #endif /* USB_DIAG_TESTS_H_ */
