Index: uspace/drv/uhci/uhci.c
===================================================================
--- uspace/drv/uhci/uhci.c	(revision a8e96683acb7bf3abe55c918e5c61cd949da74c5)
+++ uspace/drv/uhci/uhci.c	(revision d1984e02ed1e5a7b745c473f4afaa563a3abdf0b)
@@ -55,6 +55,6 @@
 
 	uhci_print_verbose("Initializing frame list.\n");
-	instance->frame_list =
-	  memallign32(sizeof(link_pointer_t) * UHCI_FRAME_LIST_COUNT, 4096);
+	instance->frame_list = get_page();
+//	  memalign32(sizeof(link_pointer_t) * UHCI_FRAME_LIST_COUNT, 4096);
 	if (instance->frame_list == NULL) {
 		uhci_print_error("Failed to allocate frame list pointer.\n");
@@ -79,4 +79,9 @@
 	instance->cleaner = fibril_create(uhci_clean_finished, instance);
 	fibril_add_ready(instance->cleaner);
+
+	uhci_print_verbose("Starting UHCI HC.\n");
+	uint16_t cmd = pio_read_16(&instance->registers->usbcmd);
+	cmd |= UHCI_CMD_RUN_STOP | UHCI_CMD_CONFIGURE;
+	pio_write_16(&instance->registers->usbcmd, cmd);
 
 	device->driver_data = instance;
@@ -177,10 +182,12 @@
 
 	while(1) {
-		uhci_print_verbose("Running cleaning fibril on %p.\n", instance);
+		uhci_print_verbose("Running cleaning fibril on: %p.\n", instance);
 		/* iterate all transfer queues */
-		usb_transfer_type_t i = USB_TRANSFER_BULK;
-		for (; i > USB_TRANSFER_ISOCHRONOUS; --i) {
+		int i = 1;
+		for (; i < TRANSFER_QUEUES; ++i) {
 			/* Remove inactive transfers from the top of the queue
 			 * TODO: should I reach queue head or is this enough? */
+			uhci_print_verbose("Running cleaning fibril on queue: %p.\n",
+				&instance->transfers[i]);
 			while (instance->transfers[i].first &&
 			 !(instance->transfers[i].first->status & TD_STATUS_ERROR_ACTIVE)) {
Index: uspace/drv/uhci/uhci.h
===================================================================
--- uspace/drv/uhci/uhci.h	(revision a8e96683acb7bf3abe55c918e5c61cd949da74c5)
+++ uspace/drv/uhci/uhci.h	(revision d1984e02ed1e5a7b745c473f4afaa563a3abdf0b)
@@ -46,5 +46,13 @@
 typedef struct uhci_regs {
 	uint16_t usbcmd;
-#define USB_CMD_
+#define UHCI_CMD_MAX_PACKET (1 << 7)
+#define UHCI_CMD_CONFIGURE  (1 << 6)
+#define UHCI_CMD_DEBUG  (1 << 5)
+#define UHCI_CMD_FORCE_GLOBAL_RESUME  (1 << 4)
+#define UHCI_CMD_FORCE_GLOBAL_SUSPEND  (1 << 3)
+#define UHCI_CMD_GLOBAL_RESET  (1 << 2)
+#define UHCI_CMD_HCRESET  (1 << 1)
+#define UHCI_CMD_RUN_STOP  (1 << 0)
+
 	uint16_t usbsts;
 	uint16_t usbintr;
