Index: uspace/drv/uhci-rhd/port.c
===================================================================
--- uspace/drv/uhci-rhd/port.c	(revision 4d37c4266355d60fb62052b334c70e8470a39d6e)
+++ uspace/drv/uhci-rhd/port.c	(revision 013e4ca488121dddfc79a71212280258ee7edf47)
@@ -50,4 +50,5 @@
 static int uhci_port_set_enabled(uhci_port_t *port, bool enabled);
 static int uhci_port_check(void *port);
+static int new_device_enable_port(int portno, void *arg);
 
 int uhci_port_init(
@@ -92,7 +93,4 @@
 	assert(port_instance);
 
-	/* disable port, to avoid device confusion */
-	uhci_port_set_enabled(port, false);
-
 	while (1) {
 		/* read register value */
@@ -109,4 +107,5 @@
 
 		if (port_status & STATUS_CONNECTED_CHANGED) {
+			usb_log_debug("Change detected on port %d.\n", port_instance->number);
 			int rc = usb_hc_connection_open(
 			    &port_instance->hc_connection);
@@ -118,12 +117,16 @@
 			/* remove any old device */
 			if (port_instance->attached_device) {
+				usb_log_debug("Removing device on port %d.\n",
+				    port_instance->number);
 				uhci_port_remove_device(port_instance);
 			}
+
+			usb_log_debug("Change status erased on port %d.\n",
+			    port_instance->number);
+			port_status_write(port_instance->address, STATUS_CONNECTED_CHANGED);
 
 			if (port_status & STATUS_CONNECTED) {
 				/* new device */
 				uhci_port_new_device(port_instance);
-			} else {
-				port_status_write(port_instance->address, STATUS_CONNECTED_CHANGED);
 			}
 
@@ -159,6 +162,4 @@
 	async_usleep(100000);
 
-	/* Enable the port. */
-	uhci_port_set_enabled(port, true);
 
 	/* The hub maintains the reset signal to that port for 10 ms
@@ -181,4 +182,7 @@
 	}
 
+	/* Enable the port. */
+	uhci_port_set_enabled(port, true);
+
 	return EOK;
 }
