Index: uspace/drv/bus/usb/usbhid/main.c
===================================================================
--- uspace/drv/bus/usb/usbhid/main.c	(revision dc1d499511e3304cccc1c673edde310e02290512)
+++ uspace/drv/bus/usb/usbhid/main.c	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
@@ -96,4 +96,6 @@
 	   /* How much data to request. */
 	   dev->pipes[hid_dev->poll_pipe_index].pipe.max_packet_size,
+	   /* Delay */
+	   0,
 	   /* Callback when the polling ends. */
 	   usb_hid_polling_ended_callback,
Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision dc1d499511e3304cccc1c673edde310e02290512)
+++ uspace/drv/bus/usb/usbhub/usbhub.c	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
@@ -147,5 +147,6 @@
 	/* Start hub operation. */
 	opResult = usb_device_auto_poll(hub_dev->usb_device, 0,
-	    hub_port_changes_callback, ((hub_dev->port_count + 1 + 8) / 8),
+	    hub_port_changes_callback, ((hub_dev->port_count + 1 + 7) / 8),
+	    255000,
 	    usb_hub_polling_terminated_callback, hub_dev);
 	if (opResult != EOK) {
@@ -247,5 +248,5 @@
 
 	/* N + 1 bit indicates change on port N */
-	for (size_t port = 0; port < hub->port_count + 1; port++) {
+	for (size_t port = 0; port < hub->port_count; ++port) {
 		const size_t bit = port + 1;
 		const bool change = (change_bitmap[bit / 8] >> (bit % 8)) & 1;
Index: uspace/lib/usbdev/include/usb/dev/poll.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/poll.h	(revision dc1d499511e3304cccc1c673edde310e02290512)
+++ uspace/lib/usbdev/include/usb/dev/poll.h	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
@@ -95,5 +95,5 @@
 
 int usb_device_auto_poll(usb_device_t *, size_t,
-    usb_polling_callback_t, size_t, usb_polling_terminted_callback_t, void *);
+    usb_polling_callback_t, size_t, int, usb_polling_terminted_callback_t, void *);
 
 #endif
Index: uspace/lib/usbdev/src/devpoll.c
===================================================================
--- uspace/lib/usbdev/src/devpoll.c	(revision dc1d499511e3304cccc1c673edde310e02290512)
+++ uspace/lib/usbdev/src/devpoll.c	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
@@ -194,5 +194,5 @@
  */
 int usb_device_auto_poll(usb_device_t *dev, size_t pipe_index,
-    usb_polling_callback_t callback, size_t request_size,
+    usb_polling_callback_t callback, size_t request_size, int delay,
     usb_polling_terminted_callback_t terminated_callback, void *arg)
 {
@@ -200,5 +200,5 @@
 		.debug = 1,
 		.auto_clear_halt = true,
-		.delay = 0,
+		.delay = delay,
 		.max_failures = MAX_FAILED_ATTEMPTS,
 		.on_data = callback,
