Index: uspace/drv/vhc/devices.c
===================================================================
--- uspace/drv/vhc/devices.c	(revision df175fa3961788f08af68b16c0db02c0f91f8cee)
+++ uspace/drv/vhc/devices.c	(revision 4f380d06265153fa7f9f82fdd59b43a344d0e0b9)
@@ -90,4 +90,18 @@
 usb_transaction_outcome_t virtdev_send_to_all(transaction_t *transaction)
 {
+	/* For easier debugging. */
+	switch (transaction->type) {
+		case USBVIRT_TRANSACTION_SETUP:
+		case USBVIRT_TRANSACTION_OUT:
+			transaction->actual_len = transaction->len;
+			break;
+		case USBVIRT_TRANSACTION_IN:
+			transaction->actual_len = 0;
+			break;
+		default:
+			assert(false && "unreachable branch in switch()");
+	}
+	usb_transaction_outcome_t outcome = USB_OUTCOME_BABBLE;
+
 	link_t *pos;
 	list_foreach(pos, &devices) {
@@ -140,4 +154,12 @@
 			transaction->actual_len = IPC_GET_ARG1(answer_data);
 			rc = (int)answer_rc;
+		}
+
+		/*
+		 * If at least one device was able to accept this
+		 * transaction and process it, we can announce success.
+		 */
+		if (rc == EOK) {
+			outcome = USB_OUTCOME_OK;
 		}
 	}
@@ -178,4 +200,5 @@
 		}
 		dprintf(4, "transaction on hub processed...");
+		outcome = USB_OUTCOME_OK;
 	}
 	
@@ -184,5 +207,5 @@
 	 * real-life image.
 	 */
-	return USB_OUTCOME_OK;
+	return outcome;
 }
 
