Guide to Successful Hibernation

The R31 has an ACPI-enabled BIOS; unfortunately, Linux's ACPI support doesn't seem to be quite ready for prime time. The R31 BIOS also supports APM (albeit with some bugs, the most notorious of which makes it inadvisable to query the battery status).

The R31 includes three special keys dedicated to power management - Fn+F3 turns the backlight on and off, Fn+F4 "suspends" the machine (keeps the vital parts powered up but unclocked and turns off everything else), and Fn+F12 "hibernates" (writes RAM to a special disk file and turns the power off).

Others have successfully gotten the Fn+F3 and Fn+F4 operations to work (more or less), but as near as I can tell I am the first to get the APM BIOS initiated hibernation (Fn+F12) to work. Considering how long it took I'm not terribly surprised...

In my experience, an APM BIOS hibernates by writing RAM to to a dedicated, contiguous, hidden system file on the first partition. This dictates the format of the partition (it has to be something the BIOS understands, typically FAT or FAT32). I do not know whether the name of the file is hardcoded in BIOS or the program that creates the file saves its name or location in a known location. I also do not know whether the file is simply a blank slate on which the BIOS writes RAM or whether it has to have some sort of internal structure. Given all the unknowns, it would clearly be preferable to use the appropriate utility written by the manufacturer to do the job.

For the R31, the utility in question is the "Hibernation or Sleep Manager" for Windows 98, available from IBM's TP R30, R31, and R32 Software and Device Drivers page. As its name implies, it can only be installed under Windows 98 (neither FreeDos nor the command shell supplied by the Win98 boot diskette suffices). This means that in order to enable hibernation one must first install Windows 98, which in turn means (as near as I can figure) that one needs an Ultrabay diskette drive. (I am told USB-attached diskette drives aren't bootable...)

Fortunately, the XP license (which is displayed five lines at a time during XP configuration) allows the licensee to use a prior version of Windows instead, and once the hibernation file is created Windows 98 is no longer needed.

Once installed, the Sleep Manager creates a file named "ACR_0V.DAT" (the 0 is the digit zero) in the root directory of the partition specified by the user. (The BIOS apparently can deal with logical paritions; I assume but can't prove that the partition that holds the hibernation file has to be FAT or FAT32). The file's attributes are system/hidden/readonly and the Sleep Manager and its size on my system (with 1024M == 1048576K of memory) is "1048640K memory/8M Video RAM/64K SMRAM/1M others". Perhaps this information will allow those who can't install Win98 to create the necessary file by other means...

With APMD configured appropriately in the kernel, Fn+F12 does what it's supposed to do. (It will refuse to work if the network interface is active, but this is in keeping with my experience on other machines.) Having 1G of RAM installed makes the process rather slow - it takes about 5 minutes to save or restore. But hibernation is one of those things I would be very unhappy to do without.

After resumption from hibernation, the backlight is off. Examination of the LCD from certain angles demonstrates that the machine has awoken and is responsive, but it's nearly impossible to make sense of the LCD without the backlight. Suspending (Fn+F4) and coming out of suspend (Fn a couple of times) corrects this.