Index: uspace/lib/usbdev/include/usb/dev/pipes.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/pipes.h	(revision bd41b192a295c4df5b29163006e1140d3b30506a)
+++ uspace/lib/usbdev/include/usb/dev/pipes.h	(revision ee6e50c30c6530097b77e6eeb9fb174be61b6b68)
@@ -61,4 +61,8 @@
 	size_t max_packet_size;
 
+	/** Number of packets per frame/uframe.
+	 * Only valid for HS INT and ISO transfers. All others should set to 1*/
+	unsigned packets;
+
 	/** Whether to automatically reset halt on the endpoint.
 	 * Valid only for control endpoint zero.
@@ -105,5 +109,5 @@
 
 int usb_pipe_initialize(usb_pipe_t *, usb_endpoint_t, usb_transfer_type_t,
-    size_t, usb_direction_t, usb_dev_session_t *);
+    size_t, usb_direction_t, unsigned, usb_dev_session_t *);
 int usb_pipe_initialize_default_control(usb_pipe_t *, usb_dev_session_t *);
 
Index: uspace/lib/usbdev/src/pipes.c
===================================================================
--- uspace/lib/usbdev/src/pipes.c	(revision bd41b192a295c4df5b29163006e1140d3b30506a)
+++ uspace/lib/usbdev/src/pipes.c	(revision ee6e50c30c6530097b77e6eeb9fb174be61b6b68)
@@ -254,5 +254,5 @@
 int usb_pipe_initialize(usb_pipe_t *pipe, usb_endpoint_t endpoint_no,
     usb_transfer_type_t transfer_type, size_t max_packet_size,
-    usb_direction_t direction, usb_dev_session_t *bus_session)
+    usb_direction_t direction, unsigned packets, usb_dev_session_t *bus_session)
 {
 	assert(pipe);
@@ -260,4 +260,5 @@
 	pipe->endpoint_no = endpoint_no;
 	pipe->transfer_type = transfer_type;
+	pipe->packets = packets;
 	pipe->max_packet_size = max_packet_size;
 	pipe->direction = direction;
@@ -279,5 +280,5 @@
 
 	const int rc = usb_pipe_initialize(pipe, 0, USB_TRANSFER_CONTROL,
-	    CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH, bus_session);
+	    CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH, 1, bus_session);
 
 	pipe->auto_reset_halt = true;
@@ -301,5 +302,5 @@
 	const int ret = usb_register_endpoint(exch, pipe->endpoint_no,
 	    pipe->transfer_type, pipe->direction, pipe->max_packet_size,
-	    interval);
+	    pipe->packets, interval);
 	async_exchange_end(exch);
 	return ret;
Index: uspace/lib/usbdev/src/pipesinit.c
===================================================================
--- uspace/lib/usbdev/src/pipesinit.c	(revision bd41b192a295c4df5b29163006e1140d3b30506a)
+++ uspace/lib/usbdev/src/pipesinit.c	(revision ee6e50c30c6530097b77e6eeb9fb174be61b6b68)
@@ -196,6 +196,9 @@
 	int rc = usb_pipe_initialize(&ep_mapping->pipe,
 	    ep_no, description.transfer_type,
-	    uint16_usb2host(endpoint_desc->max_packet_size),
-	    description.direction, bus_session);
+	    ED_MPS_PACKET_SIZE_GET(
+	        uint16_usb2host(endpoint_desc->max_packet_size)),
+	    description.direction,
+	    ED_MPS_TRANS_OPPORTUNITIES_GET(
+	        uint16_usb2host(endpoint_desc->max_packet_size)), bus_session);
 	if (rc != EOK) {
 		return rc;
