Hi everyone,
this is a simple Howto for owners of laptops with Intel 2200 or 3945 wifi cards. Using these commands will use laptop-mode automatically at bootup to improve your battery life. Additionnaly, there are two scripts to be added to laptop-mode so that it manages the power saving modes on the intel wifi cards. This howto assumes you already have a working wireless setup, there are other threads on getting you wifi working, please keep this thread about power management.
To use laptop-mode by default:
Code:
sudo gedit /etc/default/acpi-support
Scroll down change laptop-mode to true:
Code:
ENABLE_LAPTOP_MODE=true
For some reason, laptop-mode is only started when the AC is unplugged. This might seem fine unless you bootup the laptop on the battery, in which case laptop-mode never gets started. Thus, to enable laptop-mode at boot (taken from a lost thread):
Code:
sudo update-rc.d laptop-mode multiuser
Now that laptop-mode is started automatically, we can make sure it manages the power saving on the intel wireless cards (ipw3945 & iwp2200) this way.
To use the power management, you will need to install the wireless tools:
Code:
sudo apt-get install linux-restricted-modules-generic wireless-tools
For both intel 3945 (ipw3945 driver) and 2200 (ipw2200 driver) cards:
First, create the helper function file (taken from largecat’s post on page 2 of this thread):
Code:
sudo gedit /etc/acpi/intelWifiPwr.sh
copy & paste this code in the editor, save and exit.
Code:
#!/bin/bash # Power saving setting for the Intel 3945 and 2200 wireless adaptor # # This script relies upon the name of the driver. I3945_DRIVERNAME=ipw3945 I2200_DRIVERNAME=ipw2200 IWPRIV=/sbin/iwpriv IWCONFIG=/sbin/iwconfig SET_I3945_AC_PARMS="set_power 6" SET_I3945_BAT_PARMS="set_power 7" SET_I2200_AC_PARMS="power off" SET_I2200_BAT_PARMS="power on" # # Find all the wireless devices using the supplied driver names. # Place the interface names on the list WIFI_IFNAMES. # function findWifiIfsByDriver { local DEVICE; local LINK_TARGET; WIFI_IFNAMES="" for DEVICE in /sys/class/net/*; do if [ -d $DEVICE/wireless ]; then # See if the driver for $DEVICE matches the supplied one by checking the link to # the driver. if [ -h $DEVICE/device/driver ]; then LINK_TARGET=`readlink $DEVICE/device/driver | sed 's/.*\///'` if [ $LINK_TARGET == $1 ]; then # add the interface name to the list WIFI_IFNAMES=$WIFI_IFNAMES" "`echo -n $DEVICE | sed 's/.*\///'` fi fi fi done } # # Set all the adaptors using the supplied driver into the supplied # power saving mode # # $1 - driver name # $2 - power command # $3 - power command arguments # function setWifiPwrSave { local DEVICE; findWifiIfsByDriver $1; for DEVICE in $WIFI_IFNAMES; do # echo "Would execute $2 $DEVICE $3" $2 $DEVICE $3 done } function intel3945_BatPwrSave { setWifiPwrSave "$I3945_DRIVERNAME" "$IWPRIV" "$SET_I3945_BAT_PARMS" } function intel3945_AcPwrSave { setWifiPwrSave "$I3945_DRIVERNAME" "$IWPRIV" "$SET_I3945_AC_PARMS" } function intel2200_BatPwrSave { setWifiPwrSave "$I2200_DRIVERNAME" "$IWCONFIG" "$SET_I2200_BAT_PARMS" } function intel2200_AcPwrSave { setWifiPwrSave "$I2200_DRIVERNAME" "$IWCONFIG" "$SET_I2200_AC_PARMS" }
Then we will create 2 scripts. The first will run when the laptop is unplugged, the later when it runs on AC.
On battery:
Code:
sudo gedit /etc/laptop-mode/batt-start/20-wireless-battery.sh
Then copy and paste this code into the editor, save and exit:
Code:
#!/bin/bash # source the helper script . /etc/acpi/intelWifiPwr.sh # set Battery power saving intel3945_BatPwrSave intel2200_BatPwrSave
Make it executable:
Code:
sudo chmod +x /etc/laptop-mode/batt-start/20-wireless-battery.sh
On AC:
Code:
sudo gedit /etc/laptop-mode/batt-stop/20-wireless-ac.sh
Then copy and paste this code into the editor, save and exit:
Code:
#!/bin/bash # source the helper script . /etc/acpi/intelWifiPwr.sh # set Battery power saving intel3945_AcPwrSave intel2200_AcPwrSave
Make it executable:
Code:
sudo chmod +x /etc/laptop-mode/batt-stop/20-wireless-ac.sh
That’s it, you can give it a try by plugging and unplugging the AC and running iwconfig to verify that the Power management: on/off changes (this can take up to 15 seconds to change)
Bron: http://ubuntuforums.org/showthread.php?t=419772