Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision cd4b1841e1bff972ad1fc3e488025cd5cd8d4314)
+++ uspace/drv/usbhub/usbhub.c	(revision cc34f32f5c44c2f748ff07b9c43cab7df2c81ca6)
@@ -350,4 +350,14 @@
 	dprintf(USB_LOG_LEVEL_DEBUG, "hub info added to list");
 
+	dprintf(USB_LOG_LEVEL_DEBUG, "adding to ddf");
+	ddf_fun_t *hub_fun = ddf_fun_create(dev, fun_exposed, "hub");
+	assert(hub_fun != NULL);
+	hub_fun->ops = NULL;
+
+	int rc = ddf_fun_bind(hub_fun);
+	assert(rc == EOK);
+	rc = ddf_fun_add_to_class(hub_fun, "hub");
+	assert(rc == EOK);
+
 	fid_t fid = fibril_create(usb_hub_control_loop, hub_info);
 	if (fid == 0) {
@@ -421,5 +431,5 @@
  */
 static void usb_hub_finalize_add_device( usb_hub_info_t * hub,
-		uint16_t port) {
+		uint16_t port, bool isLowSpeed) {
 
 	int opResult;
@@ -444,4 +454,5 @@
 			&new_device_connection);
 	/// \TODO get highspeed info
+	usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL;
 
 
@@ -449,5 +460,5 @@
 	usb_address_t new_device_address = usb_hc_request_address(
 			&hub->connection,
-			USB_SPEED_LOW/// \TODO fullspeed??
+			speed/// \TODO fullspeed??
 			);
 	if (new_device_address < 0) {
@@ -629,5 +640,5 @@
 		dprintf(USB_LOG_LEVEL_INFO, "port reset complete");
 		if (usb_port_enabled(&status)) {
-			usb_hub_finalize_add_device(hub, port);
+			usb_hub_finalize_add_device(hub, port, usb_port_low_speed(&status));
 		} else {
 			dprintf(USB_LOG_LEVEL_WARNING, "port reset, but port still not enabled");
