Index: uspace/app/devctl/devctl.c
===================================================================
--- uspace/app/devctl/devctl.c	(revision 1a5b2521ea58a25aa1f13d0850fa06ae93fba965)
+++ uspace/app/devctl/devctl.c	(revision 5e4f22b5f9e2114f784c5b534476c7afdc86121e)
@@ -44,7 +44,9 @@
 #define MAX_NAME_LENGTH 1024
 
+char name[MAX_NAME_LENGTH];
+char drv_name[MAX_NAME_LENGTH];
+
 static int fun_subtree_print(devman_handle_t funh, int lvl)
 {
-	char name[MAX_NAME_LENGTH];
 	devman_handle_t devh;
 	devman_handle_t *cfuns;
@@ -57,13 +59,18 @@
 
 	rc = devman_fun_get_name(funh, name, MAX_NAME_LENGTH);
-	if (rc != EOK) {
-		str_cpy(name, MAX_NAME_LENGTH, "unknown");
-		return ENOMEM;
-	}
+	if (rc != EOK)
+		return ELIMIT;
 
 	if (name[0] == '\0')
 		str_cpy(name, MAX_NAME_LENGTH, "/");
 
-	printf("%s (%" PRIun ")\n", name, funh);
+	rc = devman_fun_get_driver_name(funh, drv_name, MAX_NAME_LENGTH);
+	if (rc != EOK && rc != EINVAL)
+		return ELIMIT;
+
+	if (rc == EINVAL)
+		printf("%s\n", name);
+	else
+		printf("%s : %s\n", name, drv_name);
 
 	rc = devman_fun_get_child(funh, &devh);
