Laptop will not wake from suspend with usb-keyboard
The actually weird thing is that my usb-keyboard shows as wakeup enabled.
grep . /sys/bus/usb/devices/*/product
outputs
/sys/bus/usb/devices/2-2/product:Mechanical Keyboard
/sys/bus/usb/devices/2-3/product:USB OPTICAL MOUSE
/sys/bus/usb/devices/usb1/product:EHCI Host Controller
/sys/bus/usb/devices/usb2/product:xHCI Host Controller
/sys/bus/usb/devices/usb3/product:xHCI Host Controller
and
grep . /sys/bus/usb/devices/*/power/wakeup
outputs
/sys/bus/usb/devices/1-1/power/wakeup:disabled
/sys/bus/usb/devices/2-2/power/wakeup:enabled
/sys/bus/usb/devices/2-3/power/wakeup:enabled
/sys/bus/usb/devices/2-5/power/wakeup:disabled
/sys/bus/usb/devices/usb1/power/wakeup:disabled
/sys/bus/usb/devices/usb2/power/wakeup:enabled
/sys/bus/usb/devices/usb3/power/wakeup:disabled
Now, I admit, my laptop setup is a little weird in that I have disconnected both the laptop screen, built-in keyboard and touchpad. I only reconnect them prior to travelling and then, only reluctantly. But that shouldn't matter because,
a) it has presented no other problems
b) when I reconnect them, waking from the usb-keyboard still doesn't work. Waking from the built-in keyboard works just fine.
I run Ubuntu 20.04.3 LTS and always avoid major under the hood tinkering if I can, if that helps. The laptop is an Acer Travelmate p256-mg.
This is something that I have seen in the past on an HP ProBook and a Dell Precision notebook. The issue came down to the machine not quite going to sleep and, because it wasn't sleeping, it couldn't be woken with a keypress from an external keyboard. Like your machine, though, the built-in keyboard would allow the machine to resume. In the end, the solution was to modify Grub a bit.
Here is how you can do it, too:
-
Open a Terminal (if it's not already open)
-
Open
/etc/default/grub
for editing withsudo
:sudo {editor of choice} /etc/default/grub
Note: Be sure to replace
{editor of choice}
with your editor of choice.Find the line that starts
GRUB_CMDLINE_LINUX_DEFAULT
. You will be adding settings to this line. Be sure to leave any existing values untouched. -
If you have an Nvidia video adapter, add
rcutree.rcu_idle_gp_delay=1
to the end of theGRUB_CMDLINE_LINUX_DEFAULT
value. For example:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rcutree.rcu_idle_gp_delay=1"
Note: There are instances where an Nvidia device can prevent a machine from entering into sleep/standby, and this is an effective solution.
-
Add
mem_sleep_default=deep
toGRUB_CMDLINE_LINUX_DEFAULT
, ensuring memory is completely recorded to the storage device when entering sleep. You may now have something like thisGRUB_CMDLINE_LINUX_DEFAULT="quiet splash rcutree.rcu_idle_gp_delay=1 mem_sleep_default=deep"
Note: This has generally been the setting I've needed to configure in order to resolve the external keyboard issue.
-
Save the file
-
Update Grub:
sudo update-grub
-
Reboot.
This should ensure the notebook enters a proper sleep state, allowing it to now properly respond to wake
actions.