Index: uspace/lib/usb/include/usb/usb.h
===================================================================
--- uspace/lib/usb/include/usb/usb.h	(revision 14dd4c9a2ee1c3497cc54be9da46462b97837263)
+++ uspace/lib/usb/include/usb/usb.h	(revision fa9d3afc435a30b776feebda588c52c598f66317)
@@ -83,4 +83,9 @@
 	USB_SPEED_MAX
 } usb_speed_t;
+
+static inline bool usb_speed_is_11(const usb_speed_t s)
+{
+	return (s == USB_SPEED_FULL) || (s == USB_SPEED_LOW);
+}
 
 const char *usb_str_speed(usb_speed_t);
Index: uspace/lib/usbhost/src/ddf_helpers.c
===================================================================
--- uspace/lib/usbhost/src/ddf_helpers.c	(revision 14dd4c9a2ee1c3497cc54be9da46462b97837263)
+++ uspace/lib/usbhost/src/ddf_helpers.c	(revision fa9d3afc435a30b776feebda588c52c598f66317)
@@ -53,4 +53,5 @@
 	usb_address_t address;
 	usb_speed_t speed;
+	usb_address_t tt_address;
 	unsigned port;
 } usb_dev_t;
@@ -325,7 +326,11 @@
 	info->fun = fun;
 	info->port = port;
+	info->tt_address = hub_dev ? hub_dev->tt_address : -1;
 	link_initialize(&info->link);
 	list_initialize(&info->devices);
 	fibril_mutex_initialize(&info->guard);
+
+	if (hub_dev->speed == USB_SPEED_HIGH && usb_speed_is_11(speed))
+		info->tt_address = hub_dev->address;
 
 	ddf_fun_set_ops(fun, &usb_ops);
