Index: uspace/lib/usbvirt/include/usbvirt/device.h
===================================================================
--- uspace/lib/usbvirt/include/usbvirt/device.h	(revision 2a6e2358c6c111bca4fb6572d20c204df89cac65)
+++ uspace/lib/usbvirt/include/usbvirt/device.h	(revision b997e7b1c887fcaf9ee6d5e50359333226bd57c8)
@@ -213,4 +213,8 @@
 /** Virtual USB device. */
 struct usbvirt_device {
+	/** Device does not require USB bus power */
+	bool self_powered;
+	/** Device is allowed to signal remote wakeup */
+	bool remote_wakeup;
 	/** Name for debugging purposes. */
 	const char *name;
Index: uspace/lib/usbvirt/src/stdreq.c
===================================================================
--- uspace/lib/usbvirt/src/stdreq.c	(revision 2a6e2358c6c111bca4fb6572d20c204df89cac65)
+++ uspace/lib/usbvirt/src/stdreq.c	(revision b997e7b1c887fcaf9ee6d5e50359333226bd57c8)
@@ -189,4 +189,25 @@
 }
 
+static int req_get_dev_status(usbvirt_device_t *device,
+    const usb_device_request_setup_packet_t *setup_packet, uint8_t *data, size_t *act_size)
+{
+	if (setup_packet->length != 2)
+		return ESTALL;
+	data[0] = (device->self_powered ? 1 : 0) | (device->remote_wakeup ? 2 : 0);
+	data[1] = 0;
+	*act_size = 2;
+	return EOK;
+}
+static int req_get_iface_ep_status(usbvirt_device_t *device,
+    const usb_device_request_setup_packet_t *setup_packet, uint8_t *data, size_t *act_size)
+{
+	if (setup_packet->length != 2)
+		return ESTALL;
+	data[0] = 0;
+	data[1] = 0;
+	*act_size = 2;
+	return EOK;
+}
+
 /** Standard request handlers. */
 usbvirt_control_request_handler_t library_handlers[] = {
@@ -206,4 +227,20 @@
 		.callback = req_set_configuration
 	},
+	{
+		STD_REQ_IN(USB_REQUEST_RECIPIENT_DEVICE, USB_DEVREQ_GET_STATUS),
+		.name = "GetDeviceStatus",
+		.callback = req_get_dev_status,
+	},
+	{
+		STD_REQ_IN(USB_REQUEST_RECIPIENT_INTERFACE, USB_DEVREQ_GET_STATUS),
+		.name = "GetInterfaceStatus",
+		.callback = req_get_iface_ep_status,
+	},
+	{
+		/* virtual EPs by default cannot be stalled */
+		STD_REQ_IN(USB_REQUEST_RECIPIENT_ENDPOINT, USB_DEVREQ_GET_STATUS),
+		.name = "GetEndpointStatus",
+		.callback = req_get_iface_ep_status,
+	},
 	{ .callback = NULL }
 };
