5

A few months ago I installed Ubuntu 21.10 on a Lenovo Yoga 6. Within the last couple weeks the laptop no longer wakes from sleep and I have to hold the power button to shut it down and reboot.

How can I troubleshoot this issue?

Are there specific configs to look at that may have changed with recent OS updates? Could recent Windows updates have made hardware tweaks that are causing this? (I've seen issues where Windows can set hardware level settings that cause havoc with Ubuntu on reboot.)

Related threads focused on older versions of Ubuntu suggest that downgrading the kernel might help. I'd like to avoid this if possible.

Thanks for any pointers.

  • To rule out this and future interference from Windows always do a full shut down of windows before starting Ubuntu. Never do a hibernate or sleep on Windows before switching over. – David Feb 17 '22 at 16:58
  • 1
    This guide may help: https://help.ubuntu.com/stable/ubuntu-help/power-suspendfail.html.en – Logan Feb 17 '22 at 17:02
  • 2
    I saw that guide previously. It doesn't offer any solutions other than to say hardware may not be supported. No troubleshooting info. I'd really like to know how to troubleshoot the problem. – The Driver Feb 18 '22 at 15:51
  • 1
    @Jeff I have the same problem, and there is a fun wrinkle: most of the time, pressing the power button works, but sometimes, it does not. Would you have some guess how I could debug? Maybe there is some documentation of the system responsible for receiving the power button press while in sleep mode? Thanks very much! – ankr Mar 30 '22 at 01:36
  • 1
    @ankr Have you tried restarting the systemd stuff? Run sudo systemd-poweroff.service restart This shouldn't cause any problems, but I've never tried this command. Make a backup of all of your important files before you do this. Sorry about the delay answering. – Logan Mar 30 '22 at 16:03

4 Answers4

2

Doing more searching, I came across a thread on the Gentoo forum from a user with the same problem as me. They downgraded to an older kernel and were able to resolve their issue that way.

I tried doing the same, downgrading from 5.13.0-28-generic to 5.13.0-27-generic. The older kernel once again allowed my laptop to wake from sleep.

I'll keep using this older kernel until a future kernel release fixes whatever is causing Ubuntu to lose sleep support when paired with this particular laptop. I still don't have an answer as to what the problem is or a good troubleshooting option other than keep searching various forums in the hopes of finding someone with the same issue.

  • If you downgrade the kernel version, this could cause unprecedented errors. I wouldn't recommend it. Also, there is a pretty big difference between Gentoo and Ubuntu... The Gentoo forums solutions could be different than the ones for Ubuntu. – Logan Mar 30 '22 at 16:05
  • @Jeff This sounds dubious. How could a working kernel cause unprecedented errors? Why would Ubuntu allow me to boot from several older kernels if there was a possibility of unprecedented errors? – The Driver Mar 31 '22 at 02:21
  • A version of the kernel that is too new may not be supported by the OS. – Logan Mar 31 '22 at 22:52
0

I was facing the same issue and tried with all the versions of the driver that Kubuntu was offering: 390, 470 and 510. None of them fixed the issue. After digging a bit, I found a solution in a post on an Nvidia forum.

It seems that the 470 driver started using Systemd to handle sleep, but it is buggy. The fix that worked for me was:

Disable Nvidia Systemd services

sudo systemctl stop nvidia-suspend.service
sudo systemctl stop nvidia-hibernate.service
sudo systemctl stop nvidia-resume.service

sudo systemctl disable nvidia-suspend.service sudo systemctl disable nvidia-hibernate.service sudo systemctl disable nvidia-resume.service

Remove Nvidia Systemd script

sudo rm /lib/systemd/system-sleep/nvidia

Finally, reboot.

Note: This fix worked for me with the 470 driver and I didn't bother upgrading to the 510 driver, so I don't know if these changes will work with that version.

Igor Rodriguez
  • 226
  • 2
  • 5
0

I had the same problem on:

  • Lenovo Yoga 6 13ALC6 – has AMD processor and graphics chip (Ryzen 5 5500u with Radeon)
  • Ubuntu 20.04 LTS
  • Kernel version 5.13.0-52-generic

I followed the instructions in this Reddit comment, copied below as block quotes, to access advanced settings in the UEFI menu. The original post was about the Yoga 9i but since it works for the Yoga 6 I suspect it will work for several similar Yoga models. Text in square brackets is mine.

  1. Make sure one-key battery is off. [This is accessible from the normal UEFI menu which you can enter by holding F2 or Fn+F2 as soon as you power on. For good measure, I also disabled Secure Boot and disabled HotKey mode. The latter, when enabled, means you have to hold the Fn key to use the function keys, which may not work for the following steps.]

  2. Boot to uefi [i.e. hold F2 as above and then], press the power button to turn it off

  3. (Press these keys while the laptop is off; you can slide your finger through it to be faster)

    F1 1 Q A Z F2 2 W S X F3 3 E D C F4 4 R F V F5 5 T G B F6 6 Y H N
    
  4. Press the power button and spam F2 to boot to uefi [Apparently it is important to quickly and repeatedly press F2 at this point, not just press and hold like before.]

  5. It should show debug bios with all the options (ALL OPTIONS)

Once I got to the advanced menu, I navigated across to the "AMD PBS" tab and then down to the "S3/Modern Standby Support" setting. I changed it from "Modern Standby Enable" to "S3 Enable". Apparently "modern standby" is a special hardware mode that modern Windows uses to sleep, but the regular Linux firmware/kernel/drivers/whatever only support the standard "S3" mode instead.

Then my system was able to wake up from a suspended state by opening the lid or pressing the power button. Hope this helps.

shardulc
  • 121
0

I had the same issue, so I edited /etc/default/grub and changed GRUB_CMDLINE_LINUX="" to

GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax i915.enable_dc=0 intel_idle.max_cstate=1"

This worked for me.

sotirov
  • 3,169