Index: uspace/app/tmon/commands.h
===================================================================
--- uspace/app/tmon/commands.h	(revision fd312d505127e9d7f9046c8ee961d3cb5c51249c)
+++ uspace/app/tmon/commands.h	(revision e9d600c20d03e61842f0bffa983b376a8da9fff0)
@@ -38,4 +38,6 @@
 
 int tmon_list(int, char **);
+int tmon_stress_intr_in(int, char **);
+int tmon_stress_intr_out(int, char **);
 int tmon_stress_bulk_in(int, char **);
 int tmon_stress_bulk_out(int, char **);
Index: uspace/app/tmon/main.c
===================================================================
--- uspace/app/tmon/main.c	(revision fd312d505127e9d7f9046c8ee961d3cb5c51249c)
+++ uspace/app/tmon/main.c	(revision e9d600c20d03e61842f0bffa983b376a8da9fff0)
@@ -53,4 +53,14 @@
 	},
 	{
+		.name = "stress-intr-in",
+		.description = "Stress benchmark interrupt in endpoints of a diagnostic device.",
+		.action = tmon_stress_intr_in,
+	},
+	{
+		.name = "stress-intr-out",
+		.description = "Stress benchmark interrupt out endpoints of a diagnostic device.",
+		.action = tmon_stress_intr_out,
+	},
+	{
 		.name = "stress-bulk-in",
 		.description = "Stress benchmark bulk in endpoints of a diagnostic device.",
@@ -59,5 +69,5 @@
 	{
 		.name = "stress-bulk-out",
-		.description = "Benchmark bulk out endpoints of a diagnostic device.",
+		.description = "Stress benchmark bulk out endpoints of a diagnostic device.",
 		.action = tmon_stress_bulk_out,
 	},
Index: uspace/app/tmon/test.c
===================================================================
--- uspace/app/tmon/test.c	(revision fd312d505127e9d7f9046c8ee961d3cb5c51249c)
+++ uspace/app/tmon/test.c	(revision e9d600c20d03e61842f0bffa983b376a8da9fff0)
@@ -44,4 +44,8 @@
 
 #define NAME "tmon"
+#define MAX_PATH_LENGTH 1024
+
+#define DEFAULT_CYCLES  1024
+#define DEFAULT_SIZE    65432
 
 static int resolve_default_fun(devman_handle_t *fun)
@@ -97,5 +101,5 @@
 }
 
-static int resolve_and_test(int argc, char *argv[], int (*test)(devman_handle_t)) {
+static int resolve_and_test(int argc, char *argv[], int (*test)(devman_handle_t, int, size_t)) {
 	devman_handle_t fun = -1;
 
@@ -111,39 +115,94 @@
 	}
 
-	return test(fun);
-}
-
-static int stress_bulk_in(devman_handle_t fun) {
-	async_sess_t *sess = usbdiag_connect(fun);
-	async_exch_t *exch = async_exchange_begin(sess);
-
-	const int cycles = 1024;
-	const size_t size = 65432;
+	int rc;
+	char path[MAX_PATH_LENGTH];
+	if ((rc = devman_fun_get_path(fun, path, sizeof(path)))) {
+		printf(NAME ": Error resolving path of device with handle %ld. %s\n", fun, str_error(rc));
+		return 1;
+	}
+
+	printf("Using device: %s\n", path);
+
+	// TODO: Read options here.
+
+	return test(fun, DEFAULT_CYCLES, DEFAULT_SIZE);
+}
+
+static int stress_intr_in(devman_handle_t fun, int cycles, size_t size) {
+	async_sess_t *sess = usbdiag_connect(fun);
+	async_exch_t *exch = async_exchange_begin(sess);
+
+	int rc = usbdiag_stress_intr_in(exch, cycles, size);
+	int ec = 0;
+
+	if (rc) {
+		printf(NAME ": %s\n", str_error(rc));
+		ec = 1;
+	}
+
+	async_exchange_end(exch);
+	usbdiag_disconnect(sess);
+	return ec;
+}
+
+static int stress_intr_out(devman_handle_t fun, int cycles, size_t size) {
+	async_sess_t *sess = usbdiag_connect(fun);
+	async_exch_t *exch = async_exchange_begin(sess);
+
+	int rc = usbdiag_stress_intr_out(exch, cycles, size);
+	int ec = 0;
+
+	if (rc) {
+		printf(NAME ": %s\n", str_error(rc));
+		ec = 1;
+	}
+
+	async_exchange_end(exch);
+	usbdiag_disconnect(sess);
+	return ec;
+}
+
+static int stress_bulk_in(devman_handle_t fun, int cycles, size_t size) {
+	async_sess_t *sess = usbdiag_connect(fun);
+	async_exch_t *exch = async_exchange_begin(sess);
+
 	int rc = usbdiag_stress_bulk_in(exch, cycles, size);
-
-	if (rc) {
-		printf(NAME ": %s\n", str_error(rc));
-	}
-
-	async_exchange_end(exch);
-	usbdiag_disconnect(sess);
-	return 0;
-}
-
-static int stress_bulk_out(devman_handle_t fun) {
-	async_sess_t *sess = usbdiag_connect(fun);
-	async_exch_t *exch = async_exchange_begin(sess);
-
-	const int cycles = 1024;
-	const size_t size = 65432;
+	int ec = 0;
+
+	if (rc) {
+		printf(NAME ": %s\n", str_error(rc));
+		ec = 1;
+	}
+
+	async_exchange_end(exch);
+	usbdiag_disconnect(sess);
+	return ec;
+}
+
+static int stress_bulk_out(devman_handle_t fun, int cycles, size_t size) {
+	async_sess_t *sess = usbdiag_connect(fun);
+	async_exch_t *exch = async_exchange_begin(sess);
+
 	int rc = usbdiag_stress_bulk_out(exch, cycles, size);
-
-	if (rc) {
-		printf(NAME ": %s\n", str_error(rc));
-	}
-
-	async_exchange_end(exch);
-	usbdiag_disconnect(sess);
-	return 0;
+	int ec = 0;
+
+	if (rc) {
+		printf(NAME ": %s\n", str_error(rc));
+		ec = 1;
+	}
+
+	async_exchange_end(exch);
+	usbdiag_disconnect(sess);
+	return ec;
+}
+
+int tmon_stress_intr_in(int argc, char *argv[])
+{
+	return resolve_and_test(argc, argv, stress_intr_in);
+}
+
+int tmon_stress_intr_out(int argc, char *argv[])
+{
+	return resolve_and_test(argc, argv, stress_intr_out);
 }
 
