Index: uspace/drv/uhci-hcd/hc.c
===================================================================
--- uspace/drv/uhci-hcd/hc.c	(revision 4ab89e5ca1ac672e5957ec7e06126c1512e31bf4)
+++ uspace/drv/uhci-hcd/hc.c	(revision a1313b8c0909ff62ef7d65cddbe6d7d99ed02ece)
@@ -239,4 +239,8 @@
 	usb_log_debug("Initialized device manager.\n");
 
+	ret = bandwidth_init(&instance->bandwidth, BANDWIDTH_AVAILABLE_USB11,
+	    bandwidth_count_usb11);
+	assert(ret == true);
+
 	return EOK;
 #undef CHECK_RET_DEST_CMDS_RETURN
Index: uspace/drv/uhci-hcd/hc.h
===================================================================
--- uspace/drv/uhci-hcd/hc.h	(revision 4ab89e5ca1ac672e5957ec7e06126c1512e31bf4)
+++ uspace/drv/uhci-hcd/hc.h	(revision a1313b8c0909ff62ef7d65cddbe6d7d99ed02ece)
@@ -43,4 +43,5 @@
 #include <usbhc_iface.h>
 #include <usb/host/device_keeper.h>
+#include <usb/host/bandwidth.h>
 
 #include "batch.h"
@@ -84,4 +85,5 @@
 typedef struct hc {
 	usb_device_keeper_t manager;
+	bandwidth_t bandwidth;
 
 	regs_t *registers;
Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 4ab89e5ca1ac672e5957ec7e06126c1512e31bf4)
+++ uspace/drv/uhci-hcd/iface.c	(revision a1313b8c0909ff62ef7d65cddbe6d7d99ed02ece)
@@ -133,5 +133,15 @@
     size_t max_packet_size, unsigned int interval)
 {
-	return ENOTSUP;
+	hc_t *hc = fun_to_hc(fun);
+	assert(hc);
+	const usb_speed_t speed =
+	    usb_device_keeper_get_speed(&hc->manager, address);
+	size_t size = max_packet_size;
+
+	usb_log_debug("Register endpoint %d:%d %s %s(%d) %zu(%zu) %u.\n",
+	    address, endpoint, usb_str_transfer_type(transfer_type),
+	    usb_str_speed(speed), direction, size, max_packet_size, interval);
+	return bandwidth_reserve(&hc->bandwidth, address, endpoint, direction,
+	    speed, transfer_type, max_packet_size, size, interval);
 }
 /*----------------------------------------------------------------------------*/
@@ -140,5 +150,9 @@
     usb_endpoint_t endpoint, usb_direction_t direction)
 {
-	return ENOTSUP;
+	hc_t *hc = fun_to_hc(fun);
+	assert(hc);
+	usb_log_debug("Unregister endpoint %d:%d %d.\n",
+	    address, endpoint, direction);
+	return bandwidth_release(&hc->bandwidth, address, endpoint, direction);
 }
 /*----------------------------------------------------------------------------*/
