Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.
Packages affected: hibernate, acpi-support, initramfs-tools, suspend2
One of the main complaints of linux laptop users is the difficulty of suspending their machines. Both suspend-to-ram and suspend-to-disk can be difficult, confusing and unreliable, leading to data loss and frustration. This can be due to a variety of factors, but is usually a result of problems with power management in modules controlling hardware (especially video and usb).
The situation is complicated by the existence of three separate methods for suspending to disk – swsusp (currently in mainline kernels and the Ubuntu choice); ususpend (a user-space suspend solution); and suspend2 (a third-party in-kernel solution originally intended for inclusion in the mainline kernel which still hopes to replace swsusp at somepoint). Though all of these methods share quite a lot of code, many users find that one method or another works better than the others on their particular hardware. For these users, installing their preferred method can be very frustrating on ubuntu. The power management infrastructure is both complicated and opaque (with several layers of scripts and config files), while the kernel customization method introduced in edgy is non-trivial and provides no obvious way to build restricted-modules packages for customized kernels.
Because laptop suspension is a more-or-less essential feature, improving the user experience around this issue would be a significant draw for many users. This spec suggests several ways by which the process of switching from the default swsusp method might be simplified.
For laptop users, working suspend is a make-or-break feature. If it doesn't work, your laptop becomes remarkably less useful. A substantial fraction of laptop users has trouble with the default swsusp suspend method and/or with ACPI suspend-to-ram. If we want these folksto use ubuntu, we need to help them use one of the other methods and/or ease customization of the current default methods.
Another reason to allow the use of suspend2/tuxonice is that it is very actively and helpfully supported by its author. Every ubuntu distro I have ever had has either started out with broken suspend and hibernate, or eventually broken suspend and hibernate as I updated the system, and ubuntu support does not seem to have the time to help me debug the situation. With suspend2, I know where to get fast help if something goes wrong.
- Michelle is a GNU/Linux novice who has had ubuntu pressed on her by an enthusiastic friend. When both suspend to disk and suspend to ram fail on her new IBm laptop, she is not impressed when the friend says, "Well, we might be able to fix that. First you need to patch the kernel source by hand, then recompile, then add boot options to menu.lst, then modify a bunch of scripts, then hope it works out...
- Matt is an experienced Ubuntu user who is comfortable with compiling his kernel, so when swsusp doesn't work on his new Dell he is willing to patch and recompile the kernel. Nonetheless he is confused when he can't generate a new restricted-modules package and gets a little lost in all the power-management scripts.
- Mark is an Ubuntu evangelist who wants folks to know that Ubuntu is the latest, greatest, sexiest distro. He is embarassed when the latest release has numerous power-management regressions due to the default installation of nonfree binary video drivers.
This spec shouldn't be too intrusive; it involves providing and maintaining a few packages in Universe and ensuring that installing and removing such packages doesn't break anything in Main.
Provide suspend2 metapackage in Universe
Bernard Blackham has put together suspend2 packages for dapper at
deb http://dagobah.ucc.asn.au/ubuntu-suspend2 dapper/
These include a kernel patched with suspend2, a short script for initramfs-tools, the suspend2-userui packages, a verison of “hibernate” configured to integrate with usplash, and some patched acpi-support scripts. There is also a metapackage that installs all of the above.
Updated versions of these packages should be provided in universe to ease the switch to suspend2 for users who require it. Ideally a linux-restricted-modules package would also be provided, as is done for xen-image packages.
As with xen-enabled kernels, these should be named so as to minimize the chance of accidental installation.
Document Configuration Options
Suspend options are currently distributed among the gui gnome-power-preferences, the /usr/share/hal/scripts power scripts, the /etc/acpi/ scripts, and (for those who use it) /etc/hibernate/ directory.
These options should all be documented both online in the wiki and within the system documentation.
Fix nonfree drivers
Many users report problems suspending their laptops with the nonfree nvidia and ati video drivers. Since installation of these drivers will likely be the default option in Feisty, improved suspension would be a great boon. The inclusion of certain boot-time options (e.g. agp=no for nvidia), xorg.conf options (e.g. Nvagp=1 for nvidia) and suspend options (e.g. “ProcSetting extra_pages_allowance 10000” for suspend2/hibernate) can sometimes ease these issues. But in many cases even these efforts will fail. If ubuntu is really going to rely on these nonfree drivers, we need to exert more pressure on nvidia and ati to get their drivers to comply with the kernel's power management policies.
The current suspend2 git tree merges unproblematically with the ubuntu default branch. Bernard's suspend2 metapackage and the associated script packages should be pretty easy to update to feisty. I am working on documentation but such docs sould wait a bit until this spec has been reviewed. Putting pressure on ati and nvidia is something I'm not exactly in a position to do...
Data preservation and migration
We should investigate to ensure that none of the changes made by suspend2/ususpend packages mess up the default suspend methods if a user decides to revert to default packages.