Index: uspace/drv/uhci/root_hub/port.c
===================================================================
--- uspace/drv/uhci/root_hub/port.c	(revision f0e25e8e722ea77e97e5cae9b0f6c0f93e129aa6)
+++ uspace/drv/uhci/root_hub/port.c	(revision e68de307689270140bf40dc1c2e2f9b934f9e550)
@@ -37,11 +37,4 @@
 			if (port_status & STATUS_CONNECTED) {
 				/* new device */
-				port_status |= STATUS_IN_RESET;
-				port_status_write(port_instance->address, port_status);
-				async_usleep(1000);
-				port_status =
-					port_status_read(port_instance->address);
-				port_status &= ~STATUS_IN_RESET;
-				port_status_write(port_instance->address, port_status);
 				uhci_port_new_device(port_instance);
 			} else {
@@ -72,7 +65,25 @@
 		return usb_address;
 	}
+	/*
+	 * the host then waits for at least 100 ms to allow completion of
+	 * an insertion process and for power at the device to become stable.
+	 */
+	async_usleep(100000);
 
 	/* enable port */
 	uhci_port_set_enabled(port, true);
+
+	/* The hub maintains the reset signal to that port for 10 ms
+	 * (See Section 11.5.1.5)
+	 */
+	port_status_t port_status =
+		port_status_read(port->address);
+	port_status |= STATUS_IN_RESET;
+	port_status_write(port->address, port_status);
+	async_usleep(10000);
+	port_status =
+		port_status_read(port->address);
+	port_status &= ~STATUS_IN_RESET;
+	port_status_write(port->address, port_status);
 
 	/* assign address to device */
