Index: uspace/lib/usbdev/src/hub.c
===================================================================
--- uspace/lib/usbdev/src/hub.c	(revision 1b17e3747b21f4993a982d702031d614ab274e49)
+++ uspace/lib/usbdev/src/hub.c	(revision 062165fe144f74a990556703422619635633467d)
@@ -254,11 +254,21 @@
 
 	do {
-		rc = usb_pipe_register_with_speed(&ctrl_pipe, dev_speed, 0,
-		    &hc_conn);
-		if (rc != EOK) {
+		rc = usb_hc_request_address(&hc_conn, USB_ADDRESS_DEFAULT,
+		    true, dev_speed);
+		if (rc != USB_ADDRESS_DEFAULT) {
 			/* Do not overheat the CPU ;-). */
 			async_usleep(ENDPOINT_0_0_REGISTER_ATTEMPT_DELAY_USEC);
 		}
-	} while (rc != EOK);
+	} while (rc == ENOENT);
+	if (rc != EOK) {
+		goto leave_release_free_address;
+	}
+
+	rc = usb_pipe_register_with_speed(&ctrl_pipe, dev_speed, 0, &hc_conn);
+	if (rc != EOK) {
+		rc = ENOTCONN;
+		goto leave_release_default_address;
+	}
+
 	struct timeval end_time;
 
