Index: uspace/lib/usb/include/usb/pipes.h
===================================================================
--- uspace/lib/usb/include/usb/pipes.h	(revision 95120c34f60b564aa35d9c46f9bca43e98681681)
+++ uspace/lib/usb/include/usb/pipes.h	(revision 27a001239f0ff2de46b2832c475f5a2a852ba253)
@@ -122,4 +122,6 @@
     devman_handle_t, usb_address_t);
 
+int usb_device_get_assigned_interface(device_t *);
+
 int usb_endpoint_pipe_initialize(usb_endpoint_pipe_t *,
     usb_device_connection_t *,
Index: uspace/lib/usb/src/pipes.c
===================================================================
--- uspace/lib/usb/src/pipes.c	(revision 95120c34f60b564aa35d9c46f9bca43e98681681)
+++ uspace/lib/usb/src/pipes.c	(revision 27a001239f0ff2de46b2832c475f5a2a852ba253)
@@ -60,4 +60,31 @@
 }
 
+/** Tell USB interface assigned to given device.
+ *
+ * @param device Device in question.
+ * @return Interface number (negative code means any).
+ */
+int usb_device_get_assigned_interface(device_t *device)
+{
+	int parent_phone = devman_parent_device_connect(device->handle,
+	    IPC_FLAG_BLOCKING);
+	if (parent_phone < 0) {
+		return -1;
+	}
+
+	sysarg_t iface_no;
+	int rc = async_req_2_1(parent_phone, DEV_IFACE_ID(USB_DEV_IFACE),
+	    IPC_M_USB_GET_INTERFACE,
+	    device->handle, &iface_no);
+
+	async_hangup(parent_phone);
+
+	if (rc != EOK) {
+		return -1;
+	}
+
+	return (int) iface_no;
+}
+
 /** Initialize connection to USB device.
  *
