Index: uspace/app/devctl/devctl.c
===================================================================
--- uspace/app/devctl/devctl.c	(revision 5c769d54c48d3722421735c8d52378ea56e7730f)
+++ uspace/app/devctl/devctl.c	(revision b639d569d5f3a960f411e38bd76a17acdb0cda5f)
@@ -337,4 +337,24 @@
 }
 
+static int drv_unload(const char *drvname)
+{
+	int rc;
+	devman_handle_t drvh;
+
+	rc = devman_driver_get_handle(drvname, &drvh);
+	if (rc != EOK) {
+		printf("Failed resolving driver '%s' (%d).\n", drvname, rc);
+		return rc;
+	}
+
+	rc = devman_driver_unload(drvh);
+	if (rc != EOK) {
+		printf("Failed unloading driver '%s' (%d).\n", drvname, rc);
+		return rc;
+	}
+
+	return EOK;
+}
+
 static void print_syntax(void)
 {
@@ -346,4 +366,5 @@
 	printf("\tdevctl show-drv <driver-name>\n");
 	printf("\tdevctl load-drv <driver-name>\n");
+	printf("\tdevctl unload-drv <driver-name>\n");
 }
 
@@ -412,4 +433,14 @@
 		if (rc != EOK)
 			return 2;
+	} else if (str_cmp(argv[1], "unload-drv") == 0) {
+		if (argc < 3) {
+			printf(NAME ": Argument missing.\n");
+			print_syntax();
+			return 1;
+		}
+
+		rc = drv_unload(argv[2]);
+		if (rc != EOK)
+			return 2;
 	} else {
 		printf(NAME ": Invalid argument '%s'.\n", argv[1]);
