Index: uspace/drv/usbhub/port_status.h
===================================================================
--- uspace/drv/usbhub/port_status.h	(revision a83e13883877f964a89a8cd86d9de531489cb4fa)
+++ uspace/drv/usbhub/port_status.h	(revision a7528a1617503826a7ae41c74d78925741e1d7b2)
@@ -270,4 +270,21 @@
 }
 
+//low speed device attached
+static inline bool usb_port_high_speed(usb_port_status_t * status){
+	return usb_port_get_bit(status,10);
+}
+
+static inline void usb_port_set_high_speed(usb_port_status_t * status,bool high_speed){
+	usb_port_set_bit(status,10,high_speed);
+}
+
+static inline usb_speed_t usb_port_speed(usb_port_status_t * status){
+	if(usb_port_low_speed(status))
+		return USB_SPEED_LOW;
+	if(usb_port_high_speed(status))
+		return USB_SPEED_HIGH;
+	return USB_SPEED_FULL;
+}
+
 
 //connect change
Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision a83e13883877f964a89a8cd86d9de531489cb4fa)
+++ uspace/drv/usbhub/usbhub.c	(revision a7528a1617503826a7ae41c74d78925741e1d7b2)
@@ -402,5 +402,5 @@
  */
 static void usb_hub_init_add_device(usb_hub_info_t * hub, uint16_t port,
-		bool isLowSpeed) {
+		usb_speed_t speed) {
 	//if this hub already uses default address, it cannot request it once more
 	if(hub->is_default_address_used) return;
@@ -411,5 +411,4 @@
 	assert(hub->endpoints.control.hc_phone);
 	//get default address
-	usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL;
 	opResult = usb_hc_reserve_default_address(&hub->connection, speed);
 	
@@ -617,5 +616,5 @@
 		if (usb_port_dev_connected(&status)) {
 			usb_log_info("some connection changed");
-			usb_hub_init_add_device(hub, port, usb_port_low_speed(&status));
+			usb_hub_init_add_device(hub, port, usb_port_speed(&status));
 		} else {
 			usb_hub_removed_device(hub, port);
