12

Unable to Resume from Suspend

Laptop is the Dell M5510 Precision

Suspend/Resume works under Windows 10 and the Ubuntu Live CD/USB image. It even worked the first couple days installed. Then (without running any updates or rebooting), I did a suspend and the resume failed. I get a blank screen. It's running: I can ssh in from another system.

I've tried a number of things from around the web, though my first set of notes I lost when I reinstalled. I originally started on Ubuntu Mint, then reinstalled to vanilla Ubuntu. After a fresh install, suspend/resume worked great for 2 days. On the second day, I had resumed my laptop and started working. During mid-day, I suspended it and it gave the blank screen issue. I hadn't ran any upgrade commands or done any reboots in between, so I don't know what changed there.

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107GLM [Quadro M1000M](rev a2)
Linux 4.4.0-36-generic

Things I've tried:

  • Created a 24GB unecreypted swap
  • Edit /etc/systemd/logind.conf and uncomment HandleLidSwitchDocked=suspend 763085
  • Update kernel to 4.4.8 (also broke networking) 761820
  • Update kernel to 4.6.0 (this didn't help, and also broke docker) launchpad bug
  • Switched from open source driver to Nvidia 361.42
  • I saw some post about disabling discrete graphics in the bios, but could not find that option in my bios.
  • Some answers suggest doing ctrl-alt-f[12] to get text console and than ctrl-alt-f7. When in the blank screen, this does nothing.
  • Tried the Fn+F8 screen toggle (toggles between internal/external display), as well as all the brightness keys. archlinux bug

Run nvidia x server setings and change gpu to Intel instead of nvidia.

  • I tried the nomodeset in this one and when I login, Ubuntu Unity crashes, returns me to lightdm. Cinnamon will fail into fallback mode. Suspending from cinnamon or lightdm with nomodeset still fails to resusme. – ytjohn Sep 4 '16 at 19:58
  • Kernel 4.6.x is deprecated. I had a little luck with 4.6.3 but updating to 4.7.2 has been very successful for me. Strangely the Sunday night updates have disappeared and 4.7.2 is still the most current from August 21. There are lots of Q&A in AskUbuntu about black screens under 16.04. One of them has 200 up-votes if I recall correctly. – WinEunuuchs2Unix Sep 4 '16 at 23:29
  • Thanks. I went ahead and upgrade to 4.7.2. I found the installed nvidia driver wasn't loading with it, and I also installed nvidia 370.23 driver along with it. Unfortunately, resume did not work in either case. I think I've hit pretty much all of the 16.04 black screen posts, some of which I linked to. Will keep looking though. – ytjohn Sep 6 '16 at 0:28
  • There are lots of black screen posts under 16.04. Hopefully among them you'll find that "hidden gem". I had to write my own lid-close, lid-open and tv-sound bash scripts within /etc/acpi/events directory to get things running smoothly on my laptop so I know how it feels. Even still 9 out of 10 resume requires a mouse movement or clicking on another window on the second screen to reactivate resume properly. – WinEunuuchs2Unix Sep 6 '16 at 0:47
  • Tried pm-suspend --quirk-dpms-on with no luck. – ytjohn Sep 6 '16 at 0:53
11

The solution was ultimately found posted on Sept 18th on the Dell Community Forums. This is ultimately a bios problem: during suspend, an intel register is reset to all 0's. A kernel patch workaround is already in the works, but may not be included until 4.9. However, the register can be saved to a file during suspend and loaded during resume.

Save the following script as /lib/systemd/system-sleep/fixbacklight (and chmod 755)

#!/bin/sh
# From patchwork.freedesktop.org/.../
# and en.community.dell.com/.../19985320
# Suspend Resume fails to restore PWM_GRANUALITY
# Based on script by Tony.Jewell@Cregganna.Com

INTEL_REG=/usr/bin/intel_reg
ADDR="0x000c2000"
SAVE_FILE=/var/lib/systemd/save_intel_reg_pwm_granuality

[ -x "$INTEL_REG" ] || exit 0

case "$1" in
    pre)
        echo "$0: Saving Intel Register PWM_GRANUALITY"
        "$INTEL_REG" read "$ADDR" \
            | (read addr value && echo "$value") \
            >"$SAVE_FILE"
    sync
    ;;
    post)
        value=`cat "$SAVE_FILE" 2>/dev/null`
        if [ -n "$value" ]
        then
            echo "$0: Restoring Intel Register PWM_GRANUALITY $value"
            "$INTEL_REG" write "$ADDR" "$value"
            rm "$SAVE_FILE"
        fi
    ;;
esac

It was @nloewen that pointed me down the right path.

  • Confirmed working 28th sep 2016 on Ubuntu 16.04 LTS kernel 4.4.8-040408. Thanks a lot! – Yngvar Kristiansen Sep 28 '16 at 5:59
  • Works with 16.04 LTS with kernel 4.8.1 too. Thanks. – ashic Oct 10 '16 at 11:43
  • Is there an option for a hp computer with similar issues? – George Udosen Sep 25 '17 at 17:56
  • Didn't work for me – BartBog Nov 21 '17 at 15:40
  • Logged in just to say this worked for me with my acer ultrabook – Cacoon Nov 28 '17 at 1:43
1

I had the same problem. Turns out, updating your kernel to the latest recommended kernel in Ubuntu 16.04.3 fixed this for me (after having tried tons of alternative "solutions").

To do this update, run sudo apt install --install-recommends linux-image-generic-hwe-16.04 xserver-xorg-hwe-16.04

Which (at the current moment) installs kernel 4.10. (this kernel update is also suggested in answer https://askubuntu.com/a/823523/647310)

0

I wish I had kept as detailed notes as you. Half of this answer comes from memory the other half from a LibreOffice Calc spreadsheet that runs a long list terminal commands / bash scripts and records screen output and configuration files snippets.

Actions Taken

"Created a 24GB unecreypted swap". You don't need swap for your machine unless you are hibernating. Having a swap when you have lots of drive space is no harm though.

"Edit /etc/systemd/logind.conf and uncomment HandleLidSwitchDocked=suspend". The Docked option only applies when your machine is plugged into a docking station or your HDMI is connected to a TV or external monitor. The variable HandleLidSwitch is more important for most people. By default this line is commented, but what does it do when it's commented? My system was doing weird things like hibernating when it should have been suspending, suspending twice or not suspending at all merely turning off the screen. I recommend setting the option to what you really want it to do, ie suspend or ignore.

"Update kernel to 4.4.8 (also broke networking)". 4.4.8 is old and shouldn't be used.

"Update kernel to 4.6.0 (this didn't help, and also broke docker)" 4.6.0 is deprecated along with the rest of the 4.6.x chain. 4.6.3 would have been better because it had kernel updates for Dell laptops. However when I tried 4.6.3 I had problems as outlined below.

"Switched from open source driver to Nvidia 361.42". This is a good idea as many have reported success with Noveau driver over Nvidia.

"I saw some post about disabling discrete graphics in the bios, but could not find that option in my bios" Discrete graphics means a separate chip on your motherboard rather than Integrated Graphics. In essence disabling discrete graphics means turning off Nvidia GPU, which you've done in Xorg already. The other way of turning it off is blacklisting it or using the Noveau driver for your M100M chip (which you've said you've already done).

Recommended Actions

Update to Kernel 4.7.3 which has improved CPU leveling and load factor, less heat and updated drivers. I had problems with 4.4 suspend/resume after upgrading to Ubuntu 16.04. I also problems with Intel Turbo Boost always running and system running hot. I also had problems with "thin fonts" in Nautilus. I updated Kernel to 4.6.3 but then had problems with system Hibernating instead of suspending. So I updated to 4.7.1, then 4.7.2 and finally 4.7.3. Along with tweaks to suspend/resume settings in Ubuntu and sytemd I've had no problems so far under 4.7.3.

IF that doesn't work there are more things I can share but do not want to make this answer longer than necessary with a "Wall of Text". Along the way I've developed scripts for my own Suspend/Resume instead of Ubuntu's or systemd's lid close and scripts to return sound to TV after suspend/resume.

  • I'll give 4.7.3 + noveau a shot. I tried yesterday, but couldn't get it to boot. Will try again this week. – ytjohn Sep 12 '16 at 13:36
  • I got 4.7.3 going. I haven't tried my way through different nouveau/nvidia drivers, but it had the same issue with 4.7.3+nouveau. – ytjohn Sep 20 '16 at 23:45
  • Thanks for all your help. It turned out to be the backlight issue mentioned above. There is a kernel patch pending, but it's still a WIP. en.community.dell.com/techcenter/os-applications/f/4613/p/… – ytjohn Sep 21 '16 at 0:11
  • You had a lot of problems and I can't remember everything I was thinking 9 days ago. I think after you get most of them solved you should clear this post as solved and start a post with any new problems. There are quite a few problems and solutions with Nvidia and Nouveau. I haven't played with them myself yet as I'm still fine tuning 6 different and 1/2 dozen ways to suspend/resume. – WinEunuuchs2Unix Sep 21 '16 at 0:14
0

This is a BIOS issue. Brightness control is broken after resume, and the display only works at full brightness or off.

A workaround for this issue is to create a keyboard shortcut which sets the display brightness to maximum. Normal brightness keys which adjust the brightness one step won't work. (this works for me)

You might be able to fix this by reverting to an older BIOS version, with some tradeoffs described here. (I haven't tried this)

  • I'm not seeing how to do the shortcut for display brightness there, but searching around this seems to be the issue. Can you share your shortcut setup? – ytjohn Sep 20 '16 at 23:59
  • 1
    en.community.dell.com/techcenter/os-applications/f/4613/p/… This solved it for me! If you can take hsahmed's script and the "save it to /lib/systemd/system-sleep/fixbacklight" comment and post it here, I will accept your answer. – ytjohn Sep 21 '16 at 0:07
  • That script might even negate the need for a hotkey. – ytjohn Sep 21 '16 at 0:14
  • I'm using light to control my backlight. So, I use light -S 100 to set my backlight to 100%. I'm not sure what tools Ubuntu has installed by default. – nloewen Sep 21 '16 at 0:57
0

I faced the same issue on my dell inspiron 15 7559. It worked well for few days then this problem ocurred.

FIX:

Restore your ubuntu to older kernel version. Trust me it works. I had 4 kernel versions installed and out of them two were giving this issue while the older 2 didnt.

Reboot and go to advanced settings in the grub menu. Check the different kernel versions that you have. Try booting into each of these versions seperately and use the suspend feature and check in which version suspend works as it should. Also, do check the nvidia server settings application on each boot as changing kernel version disabled nvidia(performance mode) for me. If it is disabled, check nvidia mode > logout > login > then again use suspend to check if it works.

Once you figure out the kernel version that works for you. Use this method to remove the other newer kernel versions. You wont face such issue again. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.