WLAN Stromsparen in rc.local funktioniert nicht!

slinger

New member
Themenstarter
Registriert
25 März 2006
Beiträge
949
Hallo,

habe das Problem das mein Befehl zum WLAN Stromsparen in der rc.local nicht ausgeführt wird. Habe zum testen mal per touch ne Datei erstellen lassen ob die rc.local überhaupt ausgeführt wird -> das ist aber der Fall.

Wenn ich den Befehl allerdigs übers Terminal ausführe zeigt er sofort Wirkung. Jemand eine Idee?

Code:
?#################################################################
# The following Settings are used to save some battery power	#
# Discriptions are given for the commands.			#
#								#
# settings of slinger :)					#
#################################################################							
##
# Energiesparmodus der WLAN Karte aktivieren - Level 5
# Ubuntu Standard hat Level 6 (OFF)
# -
# Zur Überprüfung
# @ "iwpriv ethX get_power"
#iwpriv eth0 set_power 5

#echo 7 > /sys/bus/pci/drivers/iwl3945/0000:03:00.0/power_level

#WLAN Stromsparen
#echo 5 > /sys/bus/pci/drivers/iwl3945/*/power_level
#echo 5 > /sys/bus/pci/drivers/iwl3945/0000:03:00.0/power_level
echo 5 > /sys/bus/pci/devices/0000\:03\:00.0/power_level


#rc.local aufruf testen
#touch /tmp/rc.local-wurde-aufgerufen

# PCI Geräte stromsparen
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done

# Sound stromsparen nach 4 sec
echo 4 > /sys/module/snd_hda_intel/parameters/power_save

# Bluetooth abschalten
echo disable > /proc/acpi/ibm/bluetooth

# Festplatten Energiesparmodus deaktivieren
hdparm -B 254 /dev/sda

# Trackpoint sensibler
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
# und schneller
echo -n 150 > /sys/devices/platform/i8042/serio1/speed

# Wake-on-Lan deaktivieren
ethtool -s eth1 wol d

##
# Akku Ladebereiche für tp_acpi angleichen
# @start_charge_thresh gibt an ab wann geladen werden soll
#		       also hier bei <= 30%
# @stop_charge_thresh gibt an ab wann der Ladevorgang gestoppt wird
#		      also hier bei >= 85%
echo 30 > /sys/devices/platform/smapi/BAT0/start_charge_thresh 
echo 85 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

##
# Aktiviert den Stromsparenden, Multicorefähigen CPU Scheduler
# @sched_mc_power_savings aktivieren des Scheduler Dienstes
#                         für die CPU 
# @scaling_governor[ondemand] aktiviert den ondemand Scheduler
#                             der Energieeffizienter für alle modernen
#                             gebräuchlichen CPUs ist
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

# AHCI Link Power Management. Auskommentiert wenn statt AHCI
# "Compatibility Mode" im Bios aktiviert ist; min_power bedingt
# ein sehr langsames Suspend to Ram
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

##
# aktiviert das USB Supend feature, damit uhci_hcd nicht dauernd wakeups erzeugt. Bringt nur was, wenn keine Geräte   
# angeschlossen sind und ist auch per Modulparameter machbar.
# for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done

# EXIT 0 MUSS STEHEN BLEIBEN!
exit 0
 
Nur mal zwei Ideen:
- Sicher, dass eth0 deine Wlankarte ist? Habe ich irgendwie noch nie gesehen... normalerweise ist das doch meistens eth1 oder ath0 oder...
- Schau mal in /etc/laptop-mode/conf.d/ <-- Da sind jede Menge Konfigurationsdateien (u.A. wireless-iwl-power.conf). KA, ob die nur mit aktivierten laptop-mode-tools funktionieren, aber es ist vielleicht ne Idee.

Munter. Grimsrud
 
Ein Shebang in Zeile 1 würde helfen:
Code:
#!/bin/sh

Außerdem mußt Du die Datei ausführbar machen mit:
Code:
chmod 755 /etc/rc.local

EDITH sagt: probiere mal diesen Befehl:
Code:
for i in /sys/bus/pci/drivers/iwl3945/*/power_level ; do
	echo "5" > $i
done
Skripte werden unter Ubuntu nämlich nicht mir der bash sondern mit einer anderen Shell, der dash ausgeführt. Für die streng Posix-konforme dash wäre z.B.
Code:
echo 5 > /sys/bus/pci/drivers/iwl3945/*/power_level
schlicht ein Syntaxfehler.
 
Hat leider ebenfalls alles nicht geholfen.

Ich habe schon den Symlink von der Dash auf die Bash umgebogen gehabt deshalb sollte das kein Problem sein. Aber selbst mit der For-Schleife führt das ganze nicht zum Ziel.

Gebe ich den Befehl als sudo im Terminal ein wird der Stromsparmodus sofort aktiviert. Gibt es hier keine conf Datei wo man direkt angeben soll das in dem Modus gestartet werden soll?
 
Benutze laptop-mode ind editiere die /etc/laptop-mode/conf.d/wireless-iwl-power.conf entsprechend...

Da ich obiges nicht verwende, aber per netcfg von Archlinux Post_up parameter übergeben kann, habe ich kein Problem damit..
 
Das Problem ist das ich den laptop-mode soweit ich weiss gar nicht benutze ;)
 
Dann machs doch xD Kannst ja alles andere deaktivieren... bzw. du könntest das meiste was in deiner rc.local steht genauso per laptop-mode realisieren.
 
Der iwl3945 ist etwas zickig, die Einstellungen ziehen oft beim Systemstart nicht, wie ich beim meinem T60 festgestellt habe. Dabei ist es völlig egal ob via rc.local oder laptop-mode-tools. Ich habe mich jetzt damit beholfen, die Einstellung nach jedem Start des Netzwerk-Interface nochmals zu setzen:
/etc/network/if-up.d/wifi-power (chmod 755)
Code:
#!/bin/sh
IWC=/sbin/iwconfig
[ -x $IWC ] || exit 0

if [ -z $($IWC $IFACE | grep "no wireless extensions") ]; then # interface is wifi

	# Get power state into STATE
	. /usr/share/acpi-support/power-funcs
	getState
  
	if [ "$STATE" = "BATTERY" ] ; then
	PWR=5
	else
	PWR=1
	fi

	# Intel 3945agn (0=off, 1=min, 5=max)
	if [ -d /sys/module/iwl3945 ]; then
    	for i in /sys/bus/pci/drivers/iwl3945/*/power_level ; do
        	echo "$PWR" > $i
    	done
	fi

fi

exit 0
Funktioniert übrigens auch mit dem NetworkManager.
 
Hey linrunner :)

Das liest sich super. Gleich mal eingetragen und mal testen obs damit endlich nicht mehr zickt =)

EDIT: Danke übrigens :thumbsup:
 
Wieso haste eigentlich nicht den absoluten PFad angegeben?
Du wirst ja nicht täglich deine Wlankarte umstecken... bei mir ist das einfach /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level und mehr nicht.
 
Weil ich keine Lust habe, bei jedem Notebook das ich installiere, den genauen Pfad auszuknobeln. Ich kopiere einfach meinen kpl. Stromspar-Skriptsatz und gut. Mein vollständiges Skript unterstützt zudem noch ipw2200 und iwlagn.
 
[quote='linrunner',index.php?page=Thread&postID=624960#post624960]Weil ich keine Lust habe, bei jedem Notebook das ich installiere, den genauen Pfad auszuknobeln. Ich kopiere einfach meinen kpl. Stromspar-Skriptsatz und gut. Mein vollständiges Skript unterstützt zudem noch ipw2200 und iwlagn.[/quote]
Erstens war Slinger gemeint und zweitens installiert ein normaler Mensch für den Hausgebrauch höchstens 2-3 Systeme (ich habe hier zwar 6 Systeme stehen, aber nur eines mit Intel Wlan Chip).. Wenn man das im großen Stil macht ist ein Script natürlich sinnvoll..
 
@buddabrod

Hab in meinen Stromsparsachen auch die Möglichkeit die du angesprochen hast. Ist schon direkter, das ist richtig :)
Macht ja aber im Endeffekt auch keinen Unterschied =)
 
Muss den Thread mal hochholen. Hab da nen sehr eigenartiges Phänomen.

Bei mir wird das power_level nach ein paar Sekunden immer zurückgesetzt. Ich setze es manuell auf 5, beobachte es kurz (mit watch) und nach ein paar Sekunden springt es wieder auf 0. Laptop_mode an oder aus spielt dabei keine Rolle. Auch in der iwl-Config von laptop_mode hab ich sowohl bei AC als auch BATT die 5 eingetragen.

Springt auch sofort zurück, wenn ich über den NetworkManager zu meinem Netz neu verbinde.

Da das bei mir mit die meiste Einsparung gibt, möchte ich das natürlich ungern missen. Bei powertop gehts um gut 1W runter auf ca 8W. Wenn es dann wieder auf 0 springt, sind es wieder 9-10W.

Jmd ne Ahnung woran das liegen könnte?
 
Vermutlich wird der Wert jedesmal resettet, wenn das Interface down geht. Daher müsstest du jedesmal nach dem Verbinden wieder alles einstellen :P

Bei mir in Arch habe ich das einfach als POST_UP in den netscripts eingefügt.
 
Hi timeey,

wenn Du uns jetzt noch ein paar Einzelheiten zu deinem System verrätst, kannst Du eventuell geholfen werden:
- Ubuntu?
- Version?
- Gnome- oder KDE-Desktop?
 
Hey,

in meinem Fall x200 mit Ubuntu 9.04 (64Bit), Gnome Desktop und Intel 5300 (iwlagn). Absolute frische Installation.

@buddabrod
Das ist ja das Problem. Er resetet nicht nur wenn er die Verbindung aufbaut, das könnte ich ja noch verschmerzen. Er macht es auch mittendrin. Sprich ich setze es manuell auf 5, lasse watch -n 1 cat /sys/class/net/.../power_level laufen und sehe nach ca 10Sekunden, wie es auf 0 springt.

Hier und da stockt WLAN über Linux auch mal (aber eher selten der Fall), keine Ahnungs obs daran liegt. Das ist aber in der Regel nicht so oft und sieht man auch nicht, dass er neu verbinden würde.
 
Da funkt irgendetwas dazwischen. Also gleich noch ein paar neue Fragen: 8)
1. Wurde die 9.04 direkt installiert oder per Update von 8.10? (EDITH: wer lesen kann ...)
2. Hast Du das Paket laptop-mode-tools installiert und in /etc/default/acpi-support ENABLE_LAPTOP_MODE=true gesetzt? Falls ja, paste bitte mal die kompletten /etc/laptop-mode/laptop-mode.conf und /etc/laptop-mode/conf.d/wireless-iwl-power.conf per http://paste.ubuntuusers.de/ .
3. Gib mal bitte den Output von
Code:
ls -R /etc/pm /etc/acpi /usr/lib/pm-utils
 
Also in der laptop-mode.conf hab ich lediglich ENABLE_LAPTOP_MODE_ON_BATTERY=1 gesetzt, Rest ist default. ENABLE_LAPTOP_MODE ist in der acpi-support ebenfalls auf true. Desweiteren wird in der rc.local ebenfalls laptop_mode mittels echo "5" > /proc/sys/vm/laptop_mode gestartet.

In der wireless-iwl-power.conf habe ich folgendes drin
CONTROL_IWL_POWER=1

IWL_AC_POWER=5
IWL_BATT_POWER=5
Wenn du dennoch die Ausgabe der conf-files haben willst, sag bescheid.


Hier noch die gewünschte Ausgabe von ls -R ...

http://paste.ubuntuusers.de/396241/

edit:
Anbei noch meine rc.local

Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Festplatte Stromsparfunktion
#hdparm -B 1 /dev/sda
echo "5" > /proc/sys/vm/laptop_mode
#echo 60000 > /proc/sys/vm/dirty_writeback_centisecs
# Soundkarte Stromsparen nach 1s Inaktivität
echo "1" > /sys/module/snd_hda_intel/parameters/power_save
# Task-Scheduler
echo "1" > /sys/devices/system/cpu/sched_mc_power_savings
# Bluetooth aus
echo "0" > /sys/devices/platform/thinkpad_acpi/bluetooth_enable
# USB autosuspend for USB 1-6
#echo 1 > /sys/bus/usb/devices/1-6/power/autosuspend
#echo suspend > /sys/bus/usb/devices/1-6/power/level
# USB autosuspend for USB 4-1 (Fingerprint Reader)
#echo 1 > /sys/bus/usb/devices/4-1/power/autosuspend
#echo suspend > /sys/bus/usb/devices/4-1/power/level
# Stromsparen für WiFi & Co.
echo "5" > /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/power_level
# auch nochmal Festplatte (DIPM anschalten)
for i in /sys/class/scsi_host/*/link_power_management_policy ; do echo "min_power" > $i ; done
# CPU Control ondemand
for i in /sys/devices/system/cpu/*/cpufreq/scaling_governor; do echo "ondemand" > $i; done
#Anpassung der Corespannung
#for i in /sys/devices/system/cpu/*/cpufreq/phc_controls; do echo "9:17 72:15 6:12 134:12" > $i; done
#up_threshold zu hoch, CPU wechselt CPU Stufen kaum/gar nicht
echo "50" > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
echo "50" > /sys/devices/system/cpu/cpu1/cpufreq/ondemand/up_threshold
#LCD Brightness Control
#echo "50" > /proc/acpi/video/VID/LCD0/brightness

exit 0

Paar Sachen sind noch ausgegraut, da ich die nach der Neu-Install noch einrichten muss (zB linux-phc etc) oder nicht so funktioniert wie es soll bzw nicht benötigt wird.

Schaffe auf jedenfall schon ca. 7-9W mit mittlerer Helligkeit und WLAN an (aber nur mit power_level 5). Das ist schon sehr ordentlich. Bleibt auch sehr kühl das Gerät, genau wie unter XP.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben