WiFi power saving & kernel 2.6.31
As of Linux kernel 2.6.31 (currently available on Arch Linux for instance), due to a change in the iwl* drivers, the sysfs entries that were managing power saving on related WiFi chips was removed due to some power management-related bugs.
As such, it's impossible to manually set powersaving either using sysfs or via a command like iwconfig power
.
Worst part is that the drivers aren't even correctly advertising themselves to mac80211 (the underlying layer of the WiFi stack) as able to handle power saving operations thus preventing any event to be propagated back to the driver. You can find more information about the problem on the following thread.
Of course this sucks quite a bit for people who cares about their battery life and who don't want to wait for 2.6.32 kernel. That's why we decided to try up compat-wireless.
Compat-wireless is a set of scripts that allows you to install the freshest drivers from the linux-wireless project (list of driver here) in a safe fashion i.e. without messing up your distribution supplied modules and without need for a kernel recompilation. These new modules are also very easy to uninstall and everything is made to prevent you from nuking too much your system.
Turns out that in recent revision of the drivers (>= 2009-10-28), powersave is back in a sort of automated fashion and blocking powersave operations are now limited to the faulty driver/chipset : iwl4965. So if you either use iwlagn or iwl3945 (lsmod
will tell you) chances are good that you will get back your nice powertop output (it did for a friend and I).
As for installing the beast, the instructions on the official website starting from here are simple and straightforward.
Of course, if you were using iwl4965 your are still left out. However, if power saving weren't breaking up your driver on earlier kernel version, you can simply comment out the .broken_powersave = true
configuration statement in iwl-4965.c (line 2282 or so) under drivers/net/wireless/iwlwifi/
.