Index: uspace/drv/uhci-hcd/batch.c
===================================================================
--- uspace/drv/uhci-hcd/batch.c	(revision fd3940c182ab7914510b87a07267a63f78eaaf18)
+++ uspace/drv/uhci-hcd/batch.c	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
@@ -88,4 +88,5 @@
     )
 {
+	assert(ep);
 	assert(func_in == NULL || func_out == NULL);
 	assert(func_in != NULL || func_out != NULL);
Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision fd3940c182ab7914510b87a07267a63f78eaaf18)
+++ uspace/drv/uhci-hcd/iface.c	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
@@ -232,6 +232,5 @@
 	const size_t bw = bandwidth_count_usb11(ep->speed, ep->transfer_type,
 	    size, ep->max_packet_size);
-	if (res_bw < bw)
-	{
+	if (res_bw < bw) {
 		usb_log_error("Endpoint(%d:%d) INT IN needs %zu bw "
 		    "but only %zu is reserved.\n",
@@ -289,6 +288,5 @@
 	const size_t bw = bandwidth_count_usb11(ep->speed, ep->transfer_type,
 	    size, ep->max_packet_size);
-	if (res_bw < bw)
-	{
+	if (res_bw < bw) {
 		usb_log_error("Endpoint(%d:%d) INT IN needs %zu bw "
 		    "but only %zu bw is reserved.\n",
@@ -429,14 +427,19 @@
 	hc_t *hc = fun_to_hc(fun);
 	assert(hc);
-	usb_speed_t speed =
-	    usb_device_keeper_get_speed(&hc->manager, target.address);
-	usb_log_debug("Control WRITE (%d) %d:%d %zu(%zu).\n",
-	    speed, target.address, target.endpoint, size, max_packet_size);
+
+	usb_log_debug("Control WRITE %d:%d %zu(%zu).\n",
+	    target.address, target.endpoint, size, max_packet_size);
+
 	endpoint_t *ep = usb_endpoint_manager_get_ep(&hc->ep_manager,
 	    target.address, target.endpoint, USB_DIRECTION_BOTH, NULL);
 	if (ep == NULL) {
-		usb_log_warning("Endpoint(%d:%d) not registered for CONTROL.\n",
+		usb_log_error("Endpoint(%d:%d) not registered for CONTROL.\n",
 			target.address, target.endpoint);
-	}
+		return ENOENT;
+	}
+	assert(ep->speed ==
+	    usb_device_keeper_get_speed(&hc->manager, target.address));
+	assert(ep->max_packet_size == max_packet_size);
+	assert(ep->transfer_type == USB_TRANSFER_CONTROL);
 
 	if (setup_size != 8)
@@ -444,6 +447,7 @@
 
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, USB_TRANSFER_CONTROL, max_packet_size, speed,
-	        data, size, setup_data, setup_size, NULL, callback, arg, ep);
+	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
+	        ep->speed, data, size, setup_data, setup_size, NULL, callback,
+		arg, ep);
 	if (!batch)
 		return ENOMEM;
@@ -478,18 +482,24 @@
 	hc_t *hc = fun_to_hc(fun);
 	assert(hc);
-	usb_speed_t speed =
-	    usb_device_keeper_get_speed(&hc->manager, target.address);
-
-	usb_log_debug("Control READ(%d) %d:%d %zu(%zu).\n",
-	    speed, target.address, target.endpoint, size, max_packet_size);
+
+	usb_log_debug("Control READ %d:%d %zu(%zu).\n",
+	    target.address, target.endpoint, size, max_packet_size);
+
 	endpoint_t *ep = usb_endpoint_manager_get_ep(&hc->ep_manager,
 	    target.address, target.endpoint, USB_DIRECTION_BOTH, NULL);
 	if (ep == NULL) {
-		usb_log_warning("Endpoint(%d:%d) not registered for CONTROL.\n",
-			target.address, target.endpoint);
-	}
+		usb_log_error("Endpoint(%d:%d) not registered for CONTROL.\n",
+		    target.address, target.endpoint);
+		return ENOENT;
+	}
+	assert(ep->speed ==
+	    usb_device_keeper_get_speed(&hc->manager, target.address));
+	assert(ep->max_packet_size == max_packet_size);
+	assert(ep->transfer_type == USB_TRANSFER_CONTROL);
+
 	usb_transfer_batch_t *batch =
-	    batch_get(fun, target, USB_TRANSFER_CONTROL, max_packet_size, speed,
-	        data, size, setup_data, setup_size, callback, NULL, arg, ep);
+	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
+	        ep->speed, data, size, setup_data, setup_size,
+		callback, NULL, arg, ep);
 	if (!batch)
 		return ENOMEM;
Index: uspace/drv/uhci-rhd/root_hub.h
===================================================================
--- uspace/drv/uhci-rhd/root_hub.h	(revision fd3940c182ab7914510b87a07267a63f78eaaf18)
+++ uspace/drv/uhci-rhd/root_hub.h	(revision 8f30c2eda223acd6acbb1c5b761d9881db7f34e8)
@@ -40,5 +40,5 @@
 
 #define UHCI_ROOT_HUB_PORT_COUNT 2
-#define ROOT_HUB_WAIT_USEC 5000000 /* 5 seconds */
+#define ROOT_HUB_WAIT_USEC 250000 /* 250 miliseconds */
 
 typedef struct root_hub {
