Index: uspace/drv/uhci-rhd/port.c
===================================================================
--- uspace/drv/uhci-rhd/port.c	(revision cabda7fa84338525e6aef7099f419d2e4e636e1c)
+++ uspace/drv/uhci-rhd/port.c	(revision 0fde1d567352c5f0b2f74983e8952969a22744ec)
@@ -46,5 +46,5 @@
 #include "port_status.h"
 
-static int uhci_port_new_device(uhci_port_t *port);
+static int uhci_port_new_device(uhci_port_t *port, uint16_t status);
 static int uhci_port_remove_device(uhci_port_t *port);
 static int uhci_port_set_enabled(uhci_port_t *port, bool enabled);
@@ -122,11 +122,11 @@
 			}
 
+			port_status_write(port_instance->address, STATUS_CONNECTED_CHANGED);
 			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);
+				uhci_port_new_device(port_instance, port_status);
 			}
 
@@ -189,5 +189,5 @@
 
 /*----------------------------------------------------------------------------*/
-static int uhci_port_new_device(uhci_port_t *port)
+static int uhci_port_new_device(uhci_port_t *port, uint16_t status)
 {
 	assert(port);
@@ -198,5 +198,5 @@
 	usb_address_t dev_addr;
 	int rc = usb_hc_new_device_wrapper(port->rh, &port->hc_connection,
-	    USB_SPEED_FULL,
+	    ((status & STATUS_LOW_SPEED) != 0) ? USB_SPEED_LOW : USB_SPEED_FULL,
 	    new_device_enable_port, port->number, port,
 	    &dev_addr, &port->attached_device, NULL, NULL, NULL);
