linux kernel with updated power management

Linux kernels w.e.f. some version around 2.6 have a power management bug (ASPM). I presume the last kernel that does not have this issue is the one shipped with Debian 6. The bug results in excessive heating and fan usage, which impacts laptop battery performance significantly. In my experience, a laptop with 3 year old battery gives as low as about 30 mins of battery backup with these buggy kernels. The processor temperature goes up to ~85 degrees, against a limit of 105 degrees. The heat around the exhaust is enough to keep a cup of coffee warm, and the fan can be heard from another room!

The kernel patched with the fix is 3.0.0-13-generic #22+mjgaspmfix. Installing this kernel will signficantly increase the battery performance by keeping processor temperatures under sane limits. It can be downloaded from this location. The fix will not be merged to mainline before v3.3, so distributions coming with an older kernel will not have the fix unless the distributors patch it themselves.

To find which kernel is runnig in your system, type
uname -a
in the terminal.

To check system temperature and other similar params, type
acpi -V

To install the kernel in a Debian or its derived system (Ubuntu/ Mint), download the 3 files

linux-headers-3.0.0-13-generic_3.0.0-13.22+mjgaspmfix_i386.deb (headers-generic)
linux-headers-3.0.0-13_3.0.0-13.22+mjgaspmfix_all.deb (headers-all)
linux-image-3.0.0-13-generic_3.0.0-13.22+mjgaspmfix_i386.deb (image-i386)

from here. If you are installing for a 32 bit OS on a system with more than 2 GB RAM, you may want to download pae-generic-headers

linux-headers-3.0.0-13-generic-pae_3.0.0-13.22+mjgaspmfix_i386.deb

instead. PAE, or Physical Address Extension, directs the OS to use the RAM beyond 2 GB. If you are installing on a 64 bit system, download the files ending with amd64.deb instead of i386.deb.

Now install the kernel STRICTLY in the following order:
1. Install the linux-headers file that ends with “all.deb”.
2. Install the linux-headers-generic file that ends with “i386.deb” or “amd64.deb” (depending upon architecture)
3. Install the linux-image file that ends with “i386.deb” or “amd64.deb” (depending upon architecture).

If you have some package installer like GDebi (which is usually default on Debian systems), just click on the files to install (but in the order given above). A how-to on installing kernels in Linux Mint can be found here.

Now the GRUB boot menu will have this kernel on restart, and older ones will be listed under “Previous versions” or similar option. Check the temperatures with acpi -V to see the difference.

In my case, I got more than an hour of backup on my 3 year old battery (>200% improvement) with the kernel, and temperatures now remain under ~66 degrees (80% heating).