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 uncommentHandleLidSwitchDocked=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.
Best Answer
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)
It was @nloewen that pointed me down the right path.