Index: uspace/drv/usbhub/main.c
===================================================================
--- uspace/drv/usbhub/main.c	(revision 39c3d95d4e176ba6534698cbda1809c2c71dc3ed)
+++ uspace/drv/usbhub/main.c	(revision 9f0b6ccb45f000f055b02c2d98a8fbacc3ea925d)
@@ -50,5 +50,5 @@
 	while(true){
 		usb_hub_check_hub_changes();
-		async_usleep(10000);
+		async_usleep(10000000);
 	}
 	return 0;
Index: uspace/drv/usbhub/utils.c
===================================================================
--- uspace/drv/usbhub/utils.c	(revision 39c3d95d4e176ba6534698cbda1809c2c71dc3ed)
+++ uspace/drv/usbhub/utils.c	(revision 9f0b6ccb45f000f055b02c2d98a8fbacc3ea925d)
@@ -352,7 +352,7 @@
 	result->port_count = descriptor->ports_count;
 	result->attached_devs = (usb_hub_attached_device_t*)
-	    malloc(result->port_count * sizeof(usb_hub_attached_device_t));
+	    malloc((result->port_count+1) * sizeof(usb_hub_attached_device_t));
 	int i;
-	for(i=0;i<result->port_count;++i){
+	for(i=0;i<result->port_count+1;++i){
 		result->attached_devs[i].devman_handle=0;
 		result->attached_devs[i].address=0;
@@ -428,5 +428,5 @@
 
 
-	for (port = 0; port < hub_info->port_count; ++port) {
+	for (port = 1; port < hub_info->port_count+1; ++port) {
 		usb_hub_set_power_port_request(&request, port);
 		opResult = usb_drv_sync_control_write(hc, target, &request, NULL, 0);
@@ -687,5 +687,5 @@
 
 		// FIXME: count properly
-		size_t byte_length = (port_count / 8) + 1;
+		size_t byte_length = ((port_count+1) / 8) + 1;
 
 		void *change_bitmap = malloc(byte_length);
@@ -707,5 +707,5 @@
 		}
 		unsigned int port;
-		for (port = 0; port < port_count; ++port) {
+		for (port = 1; port < port_count+1; ++port) {
 			bool interrupt = (((uint8_t*) change_bitmap)[port / 8] >> (port % 8)) % 2;
 			if (interrupt) {
