USB HID transport layer doesn't set mouse as a wakeup resource by default so user can't wake system from s0i3 using wired USB mouse. However, users can wake the same system from s0i3 with the same wired USB mouse on Windows. To work around this wakeup issue on Linux, the user must manually enable wakeup via the following command: echo enabled > /sys/bus/usb/device/*/power/wakeup The mouse is set to wake resource by default to ensure the same behavior across operating systems. Signed-off-by: Richard Gong <richard.gong@xxxxxxx> --- drivers/hid/usbhid/hid-core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 54752c85604b..571dded02b3d 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -1183,8 +1183,10 @@ static int usbhid_start(struct hid_device *hid) * devices supporting the boot protocol. */ if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT && - interface->desc.bInterfaceProtocol == - USB_INTERFACE_PROTOCOL_KEYBOARD) { + ((interface->desc.bInterfaceProtocol == + USB_INTERFACE_PROTOCOL_KEYBOARD) + || (interface->desc.bInterfaceProtocol == + USB_INTERFACE_PROTOCOL_MOUSE))) { usbhid_set_leds(hid); device_set_wakeup_enable(&dev->dev, 1); } -- 2.25.1