Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 88dd355c45fef3b9eb9ec629a6161bfca2682fe1)
+++ uspace/drv/uhci-hcd/iface.c	(revision fb8927d7e12bfafe2cd8b4ef6d343bffe2f5bf54)
@@ -55,4 +55,23 @@
 	usb_device_keeper_reserve_default_address(&hc->manager, speed);
 	return EOK;
+#if 0
+	endpoint_t *ep = malloc(sizeof(endpoint_t));
+	if (ep == NULL)
+		return ENOMEM;
+	const size_t max_packet_size = speed == USB_SPEED_LOW ? 8 : 64;
+	endpoint_init(ep, USB_TRANSFER_CONTROL, speed, max_packet_size);
+	int ret;
+try_retgister:
+	ret = usb_endpoint_manager_register_ep(&hc->ep_manager,
+	    USB_ADDRESS_DEFAULT, 0, USB_DIRECTION_BOTH, ep, endpoint_destroy, 0);
+	if (ret == EEXISTS) {
+		async_usleep(1000);
+		goto try_retgister;
+	}
+	if (ret != EOK) {
+		endpoint_destroy(ep);
+	}
+	return ret;
+#endif
 }
 /*----------------------------------------------------------------------------*/
@@ -68,4 +87,6 @@
 	assert(hc);
 	usb_log_debug("Default address release.\n");
+//	return usb_endpoint_manager_unregister_ep(&hc->ep_manager,
+//	    USB_ADDRESS_DEFAULT, 0, USB_DIRECTION_BOTH);
 	usb_device_keeper_release_default_address(&hc->manager);
 	return EOK;
@@ -149,6 +170,10 @@
 	    usb_str_speed(speed), direction, size, max_packet_size, interval);
 
-	const size_t bw = bandwidth_count_usb11(speed, transfer_type, size,
-	    max_packet_size);
+	const size_t bw =
+	    (transfer_type == USB_TRANSFER_INTERRUPT
+	    || transfer_type == USB_TRANSFER_ISOCHRONOUS) ?
+	    bandwidth_count_usb11(speed, transfer_type, size, max_packet_size) :
+	    0;
+
 	int ret = usb_endpoint_manager_register_ep(&hc->ep_manager,
 	    address, endpoint, direction, ep, endpoint_destroy, bw);
@@ -156,5 +181,4 @@
 		endpoint_destroy(ep);
 	}
-
 	return ret;
 }
