Package: pm-utils
Version: 1.4.1-7
Severity: normal
Tags: patch
--- Please enter the report below this line. ---
I noticed that pm-utils did not turn on wireless power management
when unplugging from ac on my laptop. I investigated a bit and
found out, that the power.d/wireless skript uses a heuristic
method for finding out if a network interface is a wireless
interface. The line in question is
# Skip if not a wireless card.
[ -d /sys/class/net/$1/wireless ] || return 1
Apparently, the directory /sys/class/net/$1/wireless has gone
away, or is not available on every platform at least. Therefor I
think it's best to use /sys/class/ieee80211 instead.
The patch below corrects the script accordingly. The new skript
works fine on my box but I cannot test it on different hardware
and it might need some adjustments in the final loop for other
network cards since I am not sure what it means, when one
ieee80211/* device has multiple ../device/net/* devices.
diff --git a/wireless b/wireless
index b4be69c..de70084 100755
--- a/wireless
+++ b/wireless
@@ -16,12 +16,10 @@ get_wireless_params() {
unset iwpriv iwconfig iwlevel
# Don't do anything if we cannot find a driver for this iface.
-[ -L /sys/class/net/$1/device/driver ] || return 1
-# Skip if not a wireless card.
-[ -d /sys/class/net/$1/wireless ] || return 1
+[ -L /sys/class/ieee80211/$1/device/driver ] || return 1
# Also don't do anything if the device is disabled
-[ $(cat /sys/class/net/$1/device/enable) = 1 ] || return 1
-driver=$(readlink /sys/class/net/$1/device/driver)
+[ $(cat /sys/class/ieee80211/$1/device/enable) = 1 ] || return 1
+driver=$(readlink /sys/class/ieee80211/$1/device/driver)
driver=${driver##*/}
case $driver in
ipw2100) iwpriv_ac=set_power 0
@@ -31,7 +29,7 @@ get_wireless_params() {
ipw3945)
iwpriv_ac=set_power 6
iwpriv_batt=set_power 7;;
-iwl*) if [ -f /sys/class/net/$1/device/power_level ]; then
+iwl*) if [ -f /sys/class/ieee80211/$1/device/power_level ]; then
iwlevel_ac=0
iwlevel_batt=3
else
@@ -53,19 +51,21 @@ get_wireless_params() {
}
wireless_powersave() {
-for dev in /sys/class/net/*; do
-get_wireless_params ${dev##*/} $1 || continue
+for phy in /sys/class/ieee80211/*; do
+get_wireless_params ${phy##*/} $1 || continue
ret=0
- printf Turning powersave for %s %s... ${dev##*/} $1
- if [ $have_iwconfig = true -a $iwconfig ]; then
- iwconfig ${dev##*/} $iwconfig || ret=1
- fi
-if [ $have_iwpriv = true -a $iwpriv ]; then
- iwpriv ${dev##*/} $iwpriv || ret=1
- fi
+for dev in $phy/device/net/*; do
+printf Turning powersave for %s %s... ${dev##*/} $1
+if [ $have_iwconfig = true -a $iwconfig ]; then
+iwconfig ${dev##*/} $iwconfig || ret=1
+fi
+if [ $have_iwpriv = true -a $iwpriv ]; then
+iwpriv ${dev##*/} $iwpriv || ret=1
+fi
+done
if [ $iwlevel ]; then
- echo $iwlevel $dev/device/power_level || ret=1
- fi
+echo $iwlevel $phy/device/power_level || ret=1
+fi
[ $ret -eq 0 ] echo Done. || echo Failed.
done
}
@@ -76,4 +76,4 @@ case $1 in
*) exit $NA ;;
esac
-exit 0
\ No newline at end of file
+exit 0
--- System information. ---
Architecture: amd64
Kernel: Linux 2.6.38-1-amd64
Debian Release: wheezy/sid
500 unstablewww.debian-multimedia.org
500 unstableftp.de.debian.org
500 testing ftp.de.debian.org
100 experimental-snapshots qt-kde.debian.net
1 experimentalftp.de.debian.org
--- Package information. ---
Depends (Version) | Installed
=-+-===
powermgmt-base| 1.31
kbd |
OR console-tools | 1:0.2.3dbs-70
Recommends (Version) | Installed
=-+-===
vbetool | 1.1-2
procps| 1:3.2.8-10
hdparm| 9.32-1
Suggests(Version) | Installed
=-+-===
cpufrequtils | 007-1
wireless-tools| 30~pre9-5
ethtool | 1:2.6.37-1
radeontool|
--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org