Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision fa48ebe91f9941e73a0f9e9133469b00ce194c03)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision 026d6e203829916ef2793c36b473ff5f39bf5438)
@@ -40,4 +40,6 @@
 
 #define USB_MAX_PAYLOAD_SIZE 1020
+#define HACK_MAX_PACKET_SIZE 8
+#define HACK_MAX_PACKET_SIZE_INTERRUPT_IN 4
 
 static void remote_usbhc_get_address(device_t *, void *, ipc_callid_t, ipc_call_t *);
@@ -326,5 +328,6 @@
 	trans->size = len;
 
-	int rc = transfer_func(device, target, buffer, len,
+	int rc = transfer_func(device, target, HACK_MAX_PACKET_SIZE,
+	    buffer, len,
 	    callback_out, trans);
 
@@ -372,5 +375,6 @@
 	trans->size = len;
 
-	int rc = transfer_func(device, target, trans->buffer, len,
+	int rc = transfer_func(device, target, HACK_MAX_PACKET_SIZE_INTERRUPT_IN,
+	    trans->buffer, len,
 	    callback_in, trans);
 
@@ -580,5 +584,5 @@
 	trans->size = data_buffer_len;
 
-	rc = usb_iface->control_write(device, target,
+	rc = usb_iface->control_write(device, target, HACK_MAX_PACKET_SIZE,
 	    setup_packet, setup_packet_len,
 	    data_buffer, data_buffer_len,
@@ -644,5 +648,5 @@
 	}
 
-	rc = usb_iface->control_read(device, target,
+	rc = usb_iface->control_read(device, target, HACK_MAX_PACKET_SIZE,
 	    setup_packet, setup_packet_len,
 	    trans->buffer, trans->size,
Index: uspace/lib/drv/include/usbhc_iface.h
===================================================================
--- uspace/lib/drv/include/usbhc_iface.h	(revision fa48ebe91f9941e73a0f9e9133469b00ce194c03)
+++ uspace/lib/drv/include/usbhc_iface.h	(revision 026d6e203829916ef2793c36b473ff5f39bf5438)
@@ -216,13 +216,13 @@
 
 /** Out transfer processing function prototype. */
-typedef int (*usbhc_iface_transfer_out_t)(device_t *, usb_target_t,
+typedef int (*usbhc_iface_transfer_out_t)(device_t *, usb_target_t, size_t,
     void *, size_t,
     usbhc_iface_transfer_out_callback_t, void *);
 
-/** Setup transfer processing function prototype. */
+/** Setup transfer processing function prototype. @deprecated */
 typedef usbhc_iface_transfer_out_t usbhc_iface_transfer_setup_t;
 
 /** In transfer processing function prototype. */
-typedef int (*usbhc_iface_transfer_in_t)(device_t *, usb_target_t,
+typedef int (*usbhc_iface_transfer_in_t)(device_t *, usb_target_t, size_t,
     void *, size_t,
     usbhc_iface_transfer_in_callback_t, void *);
@@ -252,8 +252,10 @@
 
 	int (*control_write)(device_t *, usb_target_t,
+	    size_t,
 	    void *, size_t, void *, size_t,
 	    usbhc_iface_transfer_out_callback_t, void *);
 
 	int (*control_read)(device_t *, usb_target_t,
+	    size_t,
 	    void *, size_t, void *, size_t,
 	    usbhc_iface_transfer_in_callback_t, void *);
