Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
+++ uspace/drv/uhci-hcd/iface.c	(revision fe10e72286750a2c5026467b72bb9becdb21e6da)
@@ -106,6 +106,9 @@
     usbhc_iface_transfer_out_callback_t callback, void *arg)
 {
+	size_t max_packet_size = 8;
+	dev_speed_t speed = FULL_SPEED;
+
 	tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_INTERRUPT,
-	    size, FULL_SPEED, data, size, NULL, callback, arg);
+	    max_packet_size, speed, data, size, NULL, callback, arg);
 	if (!tracker)
 		return ENOMEM;
@@ -118,6 +121,9 @@
     usbhc_iface_transfer_in_callback_t callback, void *arg)
 {
+	size_t max_packet_size = 8;
+	dev_speed_t speed = FULL_SPEED;
+
 	tracker_t *tracker = tracker_get(dev, target, USB_TRANSFER_INTERRUPT,
-	    size, FULL_SPEED, data, size, callback, NULL, arg);
+	    max_packet_size, speed, data, size, callback, NULL, arg);
 	if (!tracker)
 		return ENOMEM;
Index: uspace/drv/uhci-hcd/tracker.c
===================================================================
--- uspace/drv/uhci-hcd/tracker.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
+++ uspace/drv/uhci-hcd/tracker.c	(revision fe10e72286750a2c5026467b72bb9becdb21e6da)
@@ -117,6 +117,6 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    SETUP_PACKET_DATA_SIZE, false, instance->target, USB_PID_SETUP,
-	    instance->packet);
+	    SETUP_PACKET_DATA_SIZE, instance->toggle++, false, instance->target,
+	    USB_PID_SETUP, instance->packet);
 
 	instance->buffer_offset += SETUP_PACKET_DATA_SIZE;
@@ -135,6 +135,6 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    SETUP_PACKET_DATA_SIZE, false, instance->target, USB_PID_SETUP,
-	    instance->packet);
+	    SETUP_PACKET_DATA_SIZE, instance->toggle++, false, instance->target,
+	    USB_PID_SETUP, instance->packet);
 
 	instance->buffer_offset += SETUP_PACKET_DATA_SIZE;
@@ -164,8 +164,7 @@
 	    instance->buffer_size - instance->buffer_offset);
 
-	//TODO: add toggle here
-	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_IN,
-	    instance->packet);
+	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
+	    instance->packet_size, instance->toggle++, false, instance->target,
+	    USB_PID_IN, instance->packet);
 
 	tracker_schedule(instance);
@@ -199,8 +198,7 @@
 	    instance->packet_size);
 
-	// TODO: add toggle here
-	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_OUT,
-	    instance->packet);
+	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
+	    instance->packet_size, instance->toggle++, false, instance->target,
+	    USB_PID_OUT, instance->packet);
 
 	tracker_schedule(instance);
@@ -234,5 +232,5 @@
 	instance->packet_size =	0;
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    0, false, instance->target, USB_PID_OUT, NULL);
+	    0, 1, false, instance->target, USB_PID_OUT, NULL);
 
 	tracker_schedule(instance);
@@ -262,5 +260,5 @@
 	instance->packet_size =	0;
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    0, false, instance->target, USB_PID_OUT, NULL);
+	    0, 1, false, instance->target, USB_PID_OUT, NULL);
 
 	tracker_schedule(instance);
@@ -292,8 +290,7 @@
 			instance->buffer_size - instance->buffer_offset);
 
-	//TODO: add toggle here
-	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_IN,
-	    instance->packet);
+	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
+	    instance->packet_size, instance->toggle++, false, instance->target,
+	    USB_PID_IN, instance->packet);
 
 	tracker_schedule(instance);
@@ -327,8 +324,7 @@
 	    instance->packet_size);
 
-	// TODO: add toggle here
-	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_OUT,
-	    instance->packet);
+	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
+	    instance->packet_size, instance->toggle++, false, instance->target,
+	    USB_PID_OUT, instance->packet);
 
 	tracker_schedule(instance);
@@ -408,5 +404,5 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    SETUP_PACKET_DATA_SIZE, false, instance->target, USB_PID_SETUP,
+	    SETUP_PACKET_DATA_SIZE, 0, false, instance->target, USB_PID_SETUP,
 	    instance->packet);
 
@@ -426,5 +422,5 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_OUT,
+	    instance->packet_size, 1, false, instance->target, USB_PID_OUT,
 	    instance->packet);
 	instance->next_step = tracker_call_out_and_dispose;
@@ -441,5 +437,5 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_IN,
+	    instance->packet_size, 1, false, instance->target, USB_PID_IN,
 	    instance->packet);
 
@@ -460,5 +456,5 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_IN,
+	    instance->packet_size, 1, false, instance->target, USB_PID_IN,
 	    instance->packet);
 
@@ -477,5 +473,5 @@
 
 	transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT,
-	    instance->packet_size, false, instance->target, USB_PID_OUT,
+	    instance->packet_size, 1, false, instance->target, USB_PID_OUT,
 	    instance->packet);
 
Index: uspace/drv/uhci-hcd/uhci.c
===================================================================
--- uspace/drv/uhci-hcd/uhci.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
+++ uspace/drv/uhci-hcd/uhci.c	(revision fe10e72286750a2c5026467b72bb9becdb21e6da)
@@ -188,5 +188,5 @@
 			assert(current == &tracker->link);
 			if (!transfer_descriptor_is_active(tracker->td)) {
-				usb_log_debug("Found inactive tracker with status: %x.\n",
+				usb_log_info("Found inactive tracker with status: %x.\n",
 				    tracker->td->status);
 				list_remove(current);
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision fe10e72286750a2c5026467b72bb9becdb21e6da)
@@ -39,6 +39,6 @@
 
 void transfer_descriptor_init(transfer_descriptor_t *instance,
-  int error_count, size_t size, bool isochronous, usb_target_t target,
-	int pid, void *buffer)
+    int error_count, size_t size, bool toggle, bool isochronous,
+    usb_target_t target, int pid, void *buffer)
 {
 	assert(instance);
@@ -104,6 +104,6 @@
 		return USB_OUTCOME_CRCERROR;
 
-	assert((((status >> TD_STATUS_ERROR_POS) & TD_STATUS_ERROR_MASK)
-	| TD_STATUS_ERROR_RESERVED) == TD_STATUS_ERROR_RESERVED);
+//	assert((((status >> TD_STATUS_ERROR_POS) & TD_STATUS_ERROR_MASK)
+//	| TD_STATUS_ERROR_RESERVED) == TD_STATUS_ERROR_RESERVED);
 	return USB_OUTCOME_OK;
 }
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision 3f189c5b1300e4403cf9b0abc4b174e243d325f4)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision fe10e72286750a2c5026467b72bb9becdb21e6da)
@@ -92,7 +92,6 @@
 
 void transfer_descriptor_init(transfer_descriptor_t *instance,
-  int error_count, size_t size, bool isochronous, usb_target_t target,
-	int pid, void *buffer);
-
+    int error_count, size_t size, bool toggle, bool isochronous,
+    usb_target_t target, int pid, void *buffer);
 
 int transfer_descriptor_status(transfer_descriptor_t *instance);
