Index: uspace/lib/drv/generic/dev_iface.c
===================================================================
--- uspace/lib/drv/generic/dev_iface.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
+++ uspace/lib/drv/generic/dev_iface.c	(revision d7c72dbaa2549fcbbdb999bf6cac53fa7bb3c408)
@@ -61,9 +61,5 @@
 remote_iface_t *get_remote_iface(int idx)
 {
-	printf("get_remote_iface(): idx: %d\n", idx);
 	assert(is_valid_iface_idx(idx));
-	printf("remote iface: %p\n", remote_ifaces.ifaces[idx]);
-	
-	printf("remote_usbhid_iface ptr: %p\n", &remote_usbhid_iface);
 	
 	return remote_ifaces.ifaces[idx];
@@ -73,6 +69,4 @@
 get_remote_method(remote_iface_t *rem_iface, sysarg_t iface_method_idx)
 {
-	printf("remote iface: %p\n", rem_iface);
-	printf("Method count: %d\n", rem_iface->method_count);
 	if (iface_method_idx >= rem_iface->method_count) {
 		return NULL;
Index: uspace/lib/drv/generic/remote_usbhid.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhid.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
+++ uspace/lib/drv/generic/remote_usbhid.c	(revision d7c72dbaa2549fcbbdb999bf6cac53fa7bb3c408)
@@ -43,4 +43,6 @@
 static void remote_usbhid_get_event_length(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 static void remote_usbhid_get_event(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbhid_get_report_descriptor_length(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_usbhid_get_report_descriptor(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 // static void remote_usbhid_(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
 
@@ -48,5 +50,7 @@
 static remote_iface_func_ptr_t remote_usbhid_iface_ops [] = {
 	remote_usbhid_get_event_length,
-	remote_usbhid_get_event
+	remote_usbhid_get_event,
+	remote_usbhid_get_report_descriptor_length,
+	remote_usbhid_get_report_descriptor
 };
 
@@ -117,5 +121,5 @@
 	int rc;
 
-	int32_t *data = malloc(len);
+	uint8_t *data = malloc(len);
 	if (data == NULL) {
 		async_answer_0(data_callid, ENOMEM);
@@ -143,4 +147,16 @@
 }
 
+void remote_usbhid_get_report_descriptor(ddf_fun_t *fun, void *iface, 
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	/** @todo Implement! */
+}
+
+void remote_usbhid_get_report_descriptor_length(ddf_fun_t *fun, void *iface, 
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	/** @todo Implement! */
+}
+
 /**
  * @}
Index: uspace/lib/drv/include/usbhid_iface.h
===================================================================
--- uspace/lib/drv/include/usbhid_iface.h	(revision 4e78236243e90824326687be4b2be23bcc3def81)
+++ uspace/lib/drv/include/usbhid_iface.h	(revision d7c72dbaa2549fcbbdb999bf6cac53fa7bb3c408)
@@ -45,7 +45,5 @@
 	 * Parameters: none
 	 * Answer:
-	 * - EOK (expected always as long as device support USB HID interface)
-	 * Parameters of the answer:
-	 * - number of items
+	 * - Size of one report in bytes.
 	 */
 	IPC_M_USBHID_GET_EVENT_LENGTH,
@@ -63,6 +61,32 @@
 	 * It is okay if the client requests less data. Extra data must
 	 * be truncated by the driver.
+	 *
+	 * @todo Change this comment.
 	 */
-	IPC_M_USBHID_GET_EVENT
+	IPC_M_USBHID_GET_EVENT,
+	
+	/** Get the size of the report descriptor from the HID device.
+	 *
+	 * Parameters:
+	 * - none
+	 * Answer:
+	 * - Size of one report in bytes.
+	 * - 
+	 *
+	 * @todo Finish this comment
+	 */
+	IPC_M_USBHID_GET_REPORT_DESCRIPTOR_LENGTH,
+	
+	/** Get the report descriptor from the HID device.
+	 *
+	 * Parameters:
+	 * - none
+	 * Answer:
+	 * - EOK - report descriptor returned.
+	 * - 
+	 *
+	 * @todo Finish this comment
+	 */
+	IPC_M_USBHID_GET_REPORT_DESCRIPTOR
 } usbhid_iface_funcs_t;
 
@@ -75,5 +99,5 @@
 	 *
 	 * @param[in] fun DDF function answering the request.
-	 * @return Number of events or error code.
+	 * @return Size of the event in bytes.
 	 */
 	size_t (*get_event_length)(ddf_fun_t *fun);
@@ -87,6 +111,23 @@
 	 * @return Error code.
 	 */
-	int (*get_event)(ddf_fun_t *fun, int32_t *buffer, size_t size,
+	int (*get_event)(ddf_fun_t *fun, uint8_t *buffer, size_t size,
 	    size_t *act_size, unsigned int flags);
+	
+	/** Get size of the report descriptor in bytes.
+	 *
+	 * @param[in] fun DDF function answering the request.
+	 * @return Size of the report descriptor in bytes.
+	 */
+	size_t (*get_report_descriptor_length)(ddf_fun_t *fun);
+	
+	/** Get the report descriptor from the HID device.
+	 *
+	 * @param[in] fun DDF function answering the request.
+	 * @param[out] desc Buffer with the report descriptor.
+	 * @param[out] size Size of the report descriptors in bytes.
+	 * @return Error code.
+	 */
+	int (*get_report_descriptor)(ddf_fun_t *fun, uint8_t *desc, 
+	    size_t size, size_t *act_size);
 } usbhid_iface_t;
 
