Index: uspace/lib/drv/generic/remote_usb.c
===================================================================
--- uspace/lib/drv/generic/remote_usb.c	(revision 357a3021b85ee61052a29e8e5188756e124b7ba3)
+++ uspace/lib/drv/generic/remote_usb.c	(revision 7f56fb73fab532331dbda83cc5036cc42e0ec115)
@@ -40,6 +40,7 @@
 
 
+static void remote_usb_get_address(device_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usb_get_interface(device_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usb_get_hc_handle(device_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_usb_get_address(device_t *, void *, ipc_callid_t, ipc_call_t *);
 //static void remote_usb(device_t *, void *, ipc_callid_t, ipc_call_t *);
 
@@ -47,4 +48,5 @@
 static remote_iface_func_ptr_t remote_usb_iface_ops [] = {
 	remote_usb_get_address,
+	remote_usb_get_interface,
 	remote_usb_get_hc_handle
 };
@@ -80,4 +82,24 @@
 }
 
+void remote_usb_get_interface(device_t *device, void *iface,
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	usb_iface_t *usb_iface = (usb_iface_t *) iface;
+
+	if (usb_iface->get_interface == NULL) {
+		async_answer_0(callid, ENOTSUP);
+		return;
+	}
+
+	devman_handle_t handle = DEV_IPC_GET_ARG1(*call);
+
+	int iface_no;
+	int rc = usb_iface->get_interface(device, handle, &iface_no);
+	if (rc != EOK) {
+		async_answer_0(callid, rc);
+	} else {
+		async_answer_1(callid, EOK, iface_no);
+	}
+}
 
 void remote_usb_get_hc_handle(device_t *device, void *iface,
