Index: uspace/lib/usb/src/hcdhubd.c
===================================================================
--- uspace/lib/usb/src/hcdhubd.c	(revision 4144630f53ee5e44772efd8ae1c1f4ee7e942bf7)
+++ uspace/lib/usb/src/hcdhubd.c	(revision 2cb65715d0ed6e1e5320c16c6c26044ba9f8afcd)
@@ -107,5 +107,5 @@
 int usb_hcd_add_root_hub(usb_hc_device_t *dev) {
 	char *id;
-	int rc = asprintf(&id, "usb&hc=%s&hub", dev->generic->name);
+	int rc = asprintf(&id, "usb&hc=%s&hub", hc_driver->name);
 	if (rc <= 0) {
 		return rc;
@@ -133,4 +133,6 @@
 	int rc;
 
+	async_usleep(1000);
+
 	device_t *child = create_device();
 	match_id_t *match_id = NULL;
@@ -196,4 +198,10 @@
 	printf("%s: about to add child device `%s' (%s)\n", hc_driver->name,
 			name, match_id);
+
+	/*
+	 * Seems that creating fibril which postpones the action
+	 * is the best solution.
+	 */
+	create_fibril = true;
 
 	struct child_device_info *child_info
