Index: uspace/lib/usbdev/src/hub.c
===================================================================
--- uspace/lib/usbdev/src/hub.c	(revision 062165fe144f74a990556703422619635633467d)
+++ uspace/lib/usbdev/src/hub.c	(revision f37eb84aa4b6bca29d04b5c10c0506c005f4b9b2)
@@ -265,5 +265,5 @@
 	}
 
-	rc = usb_pipe_register_with_speed(&ctrl_pipe, dev_speed, 0, &hc_conn);
+	rc = usb_pipe_register(&ctrl_pipe, 0, &hc_conn);
 	if (rc != EOK) {
 		rc = ENOTCONN;
@@ -320,4 +320,5 @@
 	 */
 	unregister_control_endpoint_on_default_address(&hc_conn);
+	usb_hc_unregister_device(&hc_conn, USB_ADDRESS_DEFAULT);
 
 	/*
@@ -381,4 +382,5 @@
 		usb_log_warning("%s: Failed to unregister default pipe.\n",
 		    __FUNCTION__);
+	usb_hc_unregister_device(&hc_conn, USB_ADDRESS_DEFAULT);
 
 leave_release_free_address:
Index: uspace/lib/usbhost/src/iface.c
===================================================================
--- uspace/lib/usbhost/src/iface.c	(revision 062165fe144f74a990556703422619635633467d)
+++ uspace/lib/usbhost/src/iface.c	(revision f37eb84aa4b6bca29d04b5c10c0506c005f4b9b2)
@@ -104,5 +104,6 @@
 	assert(address);
 
-	usb_log_debug("Address request speed: %s.\n", usb_str_speed(speed));
+	usb_log_debug("Address request: speed: %s, address: %d, strict: %s.\n",
+	    usb_str_speed(speed), *address, strict ? "YES" : "NO");
 	return usb_device_manager_request_address(
 	    &hcd->dev_manager, address, strict, speed);
Index: uspace/lib/usbhost/src/usb_device_manager.c
===================================================================
--- uspace/lib/usbhost/src/usb_device_manager.c	(revision 062165fe144f74a990556703422619635633467d)
+++ uspace/lib/usbhost/src/usb_device_manager.c	(revision f37eb84aa4b6bca29d04b5c10c0506c005f4b9b2)
@@ -166,5 +166,5 @@
     usb_device_manager_t *instance, usb_address_t address)
 {
-	if ((address <= 0) || (address >= USB_ADDRESS_COUNT)) {
+	if ((address < 0) || (address >= USB_ADDRESS_COUNT)) {
 		return EINVAL;
 	}
