|Suspend/Resume To Blank Screen
Date: June 06, 2013, 12:35:43 AM
There are a good many reports of systems resuming from suspension/sleep to a blank screen. Most often this is associated with power management settings related to lid closure. This is one method of resolving this issue. There are certainly other methods of resolving this issue, so if this one doesn;t work, you may have to do more research on your own.
1. Make sure that vbetool, pm-utils and acpid are installed:
pacman -S vbetool pm-utils acpid
2. Open your KDE Power Management settings and, under Energy Saving, set "Button events handling -> When laptop lid closed" to "Do nothing".
3. Enable acpid
systemctl enable acpid
4. Edit /etc/acpi/handler.sh, find or add the following case to the handler, and make the following modification (tagged with the comment):
case "$3" in
logger 'LID closed'
# LINE ADDED HERE
logger 'LID opened'
logger "ACPI action undefined: $3"
As I mentioned above, this is only one of several ways to resolve this issue. If pm-suspend doesn;t work properly when called from the command-line, it won;t work in this instance either. It could also be that you'll need to pass one of the "quirks" parameters to the pm-suspend command, for which you will need to install the pm-quirks package and understand what the parameter actually does. If you discover that you need to pass a quirks parameter, this can be automated by creating a config file under /etc/pm/config.d that contains a line that auto-adds the parameter to pm-suspend (e.g. ADD_PARAMETER='--quirk-vbemode-restore --quirk-vbe-post'). You may need to do some research to figure out which parameter(s) you need.
Somewhere between kernel version 3.9.6 and 3.10.5, changes to the kernel-level gma500 driver broke resuming from a suspend (video). The change was that the gma500 driver is now a modesetting driver which means it's ignored by pm-utils. Modesetting drivers are supposed to be able to save/restore their own state, and the fact that the gma500 modesetting driver is not doing this properly implies that either the driver is buggy or incomplete. If you're seeing this issue, you can try this ugly hack that might get your resume working again, but it's rather hit-and-miss at best.
The hack is to edit /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler, adding back the quirks needed to make it work.
Make the following change:
1. go to line 361 - the code block should look like this:
elif using_kms; then
# Using kernel modesetting? No quirks, and do not change vts.
echo "Kernel modesetting video driver detected, not using quirks."
Modify the add_parameters call, concatenating the following to the end of the line:
--quirk-vbe-post --quirk-dpms-on --quirk-dpms-suspend --quirk-vbestate-restore --quirk-vbemode-restore
Other video drivers may require other quirks, like --quirk-s3-bios.
Apparently this issue has been filed as a bug, but until it gets fixed, I recommend that you save off the modified version somewhere safe in case pm-utils is updated, is still broken, and you lose the changes.
Rating: This article has not been rated yet.