Index: uspace/lib/usbvirt/src/callback.c
===================================================================
--- uspace/lib/usbvirt/src/callback.c	(revision 84439d7c2ebefbea307e636b8e8316fb8f84e090)
+++ uspace/lib/usbvirt/src/callback.c	(revision 8f8ae1fd40abf46fa26616612cd5c3ff31aee970)
@@ -153,5 +153,5 @@
 	 * If the request was processed, we will send data back.
 	 */
-	if (rc == EOK) {
+	if ((rc == EOK) && (expected_len > 0)) {
 		size_t receive_len;
 		ipc_callid_t callid;
Index: uspace/lib/usbvirt/src/main.c
===================================================================
--- uspace/lib/usbvirt/src/main.c	(revision 84439d7c2ebefbea307e636b8e8316fb8f84e090)
+++ uspace/lib/usbvirt/src/main.c	(revision 8f8ae1fd40abf46fa26616612cd5c3ff31aee970)
@@ -183,5 +183,5 @@
 /** Create necessary phones for communication with virtual HCD.
  * This function wraps following calls:
- * -# open <code>/dev/devices/\\vhc</code> for reading
+ * -# open <code>/dev/devices/\\virt\\usbhc for reading
  * -# access phone of file opened in previous step
  * -# create callback through just opened phone
@@ -203,5 +203,5 @@
 	}
 	
-	const char *vhc_path = "/vhc";
+	const char *vhc_path = "/virt/usbhc";
 	int rc;
 	devman_handle_t handle;
Index: uspace/lib/usbvirt/src/transaction.c
===================================================================
--- uspace/lib/usbvirt/src/transaction.c	(revision 84439d7c2ebefbea307e636b8e8316fb8f84e090)
+++ uspace/lib/usbvirt/src/transaction.c	(revision 8f8ae1fd40abf46fa26616612cd5c3ff31aee970)
@@ -183,4 +183,6 @@
 				actual_size = size;
 			}
+			device->lib_debug(device, 1, USBVIRT_DEBUGTAG_TRANSACTION,
+			    "in transaction: will copy %zu bytes", actual_size);
 			if (actual_size > 0) {
 				memcpy(buffer, transfer->data, actual_size);
