Energie sparen unter Linux (anhand eines X61 Tablet unter Ubuntu 8.10) – Teil 3

So jetzt kümmern wir uns noch um das Problem, dass viele der angesprochenen Änderungen nur temporärer Natur sind. So ist nach einem Neustart der Leistungsbedarf wieder bei etwa 15 Watt.

Framebuffer Compression sowie die Laptop_Mode-tools sind beide feste Änderungen gewesen, diese müssen also nicht nocheinmal aktiviert werden. Der ganze Rest ist jedoch von nicht dauerhafter Wirkung. Also sorgen wir dafür dass es dauerhafte Änderungen werden. Dazu bieten sich die Scriptdateien an die beim Start aufgerufen werden.

1
nano /etc/rc.local

Nun haben wir die Datei vor uns in der wir all die schönen Energiesparer eintragen können, am Ende (vor exit 0 fügen wir also hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Soundkarte Stromsparmodus an
echo 5 > /sys/module/snd_hda_intel/parameters/power_save

#USB 1.1 aus
modprobe -r uhci_hcd

#SATA ALPM auf maximum
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

#Wake on Lan aus
ethtool -s eth0 wol d

#Wlan -> Stromsparmodus an
iwconfig wlan0 power on
for h in /sys/bus/pci/drivers/iwlagn/*/power_level ; do echo 5 > $h; done

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

Damit sollten die Stromsparmodi automatisch eingeschalten sein.
Übrigens empfehle ich auch das Autorotate-Skript wieder aus dem GDM Autostart zu entfernen, es basiert auf Polling (immerwiederkehrendes Abfragen) und verursacht so auch zusätzliche Aufwacher.

Das nächste worum ich mich kümmern möchte: Neuer Kernel und Undervolting unter Linux.


Energie sparen unter Linux (anhand eines X61 Tablet unter Ubuntu 8.10) – Teil 2

Nun mal sehen ob man die Grafikkarte noch ein wenig sparender betreiben kann, die Beleuchtung bleibt auf voller Stärke, der Trick ist zu einfach.
Ein Ansatz: Framebuffer Compression
(Toll dass die Intelseiten selten beschreiben wie man die Features aktiviert)
Ich füge testweise den Code in meine xorg.conf an die Stelle bei der die Grafikhardware initialisiert wird:

1
2
3
Option "FramebufferCompression" "on"
Option "AccelMethod" "EXA"
Option "Tiling" "on"

Erstes positives Ergebnis: mein XServer startet noch. Und der „Verbrauch“? Nochmal etwa 0,3 Watt weniger, allerdings ist das wohl davon abhängig was angezeigt wird, so sind großflächig gleichfarbige Bildschirme wohl noch sparsamer, aber irgendwann wird ein weißer Bildschirm auch langweilig oder?
Externe Bildschirme deaktivieren die man nicht braucht, ob das wirklich was spart?
Bei mir sind jedenfalls alle externen Anschlüsse deaktiviert.

Soundkarten können auch stromsparen, ob es signifikant ist erfahren wir gleich. Mit:

1
echo 5 > /sys/module/snd_hda_intel/parameters/power_save

Schalten wir den Stromsparmodus an.
(Hey wenn ich in Opera Strg+Shift+V drücke fügt es den Inhalt als URL ein und ruft diesen auf, das ist bissl uncool.)
Tja und wirklich: wieder 0,1 Watt weniger.

Inzwischen bin ich bei 13,3-14,7 Watt beim Schreiben des Artikels angelangt, beim verwendeten Akku mit 14,4 Volt und 4,55 Amperestunden (also 65,52 Wattstunden) entspricht das einer verlängerten Laufzeit von circa 0,83 Stunden oder auch knapp 50 Minuten. Das ist in meinen Augen den Aufwand auf jedenfall wert.

Noch irgendwas? Nun man kann vielleicht noch nicht benötigte Module entladen, Firewire, PCMCIA vielleicht auch USB 1.1.
USB 1.1 hat eine faszinierende Wirkung:

1
modprobe -r uhci_hcd

Bringt fast 2 Watt Ersparnis (!) allerdings geht dann auch gleich Bluetooth mit über Bord, andere Dinge schienen nicht darunter zu leiden. Ein USB2 Stick wurde problemlos erkannt. Angeblich soll dieses Problem mit USB 1.1 auch gelöst sein wenn man den Treiber nicht als Modul sondern fest in den Kernel integriert.
Firewire scheint ein gutes Murmeltier zu sein, die Deaktivierung brachte keinen sichtbaren Erfolg:

1
2
3
modprobe -r ohci1394
modprobe -r sbp2
modprobe -r ieee1394

Auch PCMCIA ist ein Siebenschläfer, ebenfalls keine Wirkung zeigte:

1
modprobe -r pcmcia yenta_socket rsrc_nonstatic pcmcia_core

Tjo das war wohl erstmal der leichte Part, ohne USB 1.1 bin ich inzwischen bei 11,4-11,7 Watt bei voller Helligkeit. Wenn ich ein wenig hier rumschreibe komme ich so auf vielleicht etwa 12,5 Watt. Im Vergleich zu den 14 Watt habe ich so nochmal etwa 30 Minuten rausgeholt. Damit sollte ich schon fast 5 Stunden und 15 Minuten Batterielaufzeit erreichen.

Danke an:
http://www.lesswatts.org/ – Intel auch wenn die Informationen bissl dürftig sind stellenweise
http://think-wiki.nojoco.de/ – eine gute Wikiübersicht was alles so möglich ist
http://samwel.tk/laptop_mode/ – für die tollen Laptop_Mode-Tools
http://www.gambitchess.org/mediawiki/index.php/ThinkPad_Fan_Control – für die Lüftersteuerung – nun ist mein Laptop richtig lautlos (bis auf diese C4 Geräusche die irgendwie bissl beängstigend sind)


Energie sparen unter Linux (anhand eines X61 Tablet unter Ubuntu 8.10) – Teil 1

Ein weiteres wichtiges Thema bei Laptops oder TabletPCs ist die Leistungsaufnahme, da hier eine Batterie die Energie liefert und diese nur eine begrenzte Kapazität hat, wird früher oder später der Computer seine Dienste einstellen und warten bis man ihn wieder mit der Steckdose in Verbindung bringt.

Der erste Schritt ist herauszufinden, wieviel Leistung der Computer überhaupt braucht, und wodurch diese benötigt wird. Ein Werkzeug welches genau für diesen Zweck geschrieben wurde ist Powertop, es stellt dar wielange der Prozessor in welchem Zustand verbracht hat, dabei wird zwischen C und P States unterschieden. C-States sind Klassen wie „wach“ ein Prozessor ist, C0 – C4 sind derzeit von aktuellen Prozessoren unterstützt. wobei C0 für „wach“ steht und C4 eine Art Tiefschlaf darstellt. Die P-States sind die Taktstufen in denen der Prozessor takten kann. Außerdem wird die aktuelle Leistungsaufnahme angezeigt, mein unoptimiertes System bezieht bei voller Helligkeit etwa 17-22 Watt während ich den Artikel schreibe.

Nun habe ich derzeit GKrell aktiviert welches mir ein paar Informationen zu meinem System ausgibt, es aktualisiert sich recht häufig, ebenso ein kleines Applet welches mir Prozessor und Netzwerkauslastung ausgibt. Beenden dieser beiden nicht wirklich nützlichen Programme bringt immerhin fast 0,2-0,3 Watt Einsparung mit sich.

Powertop schlägt nun einige Maßnahmen selbst vor:

  • USB autosuspend einschalten
  • Writebacktime erhöhen
  • SATA ALPM aktivieren
  • Nicht genutzte Bluetoothschnittstelle abschalten
  • Laptop Modus einschalten

Es gibt auch eine Wikiseite welche sich sehr ausgiebig mit dem Thema befasst, sowie die Intel-Seite lesswatts.org. Das Powertop Werkzeug stammt auch von Intel.

Ein Bug in Powertop meint jedoch dass USB Autosuspend nicht standardmäßig aktiv ist, mit Ubuntu 8.10 wurde dies jedoch eingeführt, also kann der Punkt schonmal aus der Liste gestrichen werden.

Laptop-Mode-tools ist ein eigenständiges mächtiges Werkzeug welches Unterstützung bieten um eine lange Batterielaufzeit zu erhalten. Dabei wird auf den von Powertop angesprochenen Laptop_Mode zurückgegriffen, es sind also hauptsächlich Werkzeuge die automatisch den Laptopmode ein und ausschalten sowie die gewünschten Parameter einstellt.

Man muss das ganze nur dem Acpi-Dämon mitteilen, man kann prüfen ob laptopmode bereits aktiv ist indem man in der Konsole folgendes eintippt:

1
cat /proc/sys/vm/laptop_mode

Erhält man einen Wert von 0 so ist der Laptopmode deaktiviert.

Um den Laptopmode zu aktivieren müssen wir Datei /etc/default/acpi-support editieren und dabei:

1
ENABLE_LAPTOP_MODE = true

In die entsprechende Zeile schreiben.

Nun sollte man noch die Einstellungen von laptop_mode-tools entsprechend den eigenen Bedürfnissen anpassen.
Dazu editiert man die Datei /etc/laptop_mode/laptop_mode.conf:

1
nano /etc/laptop_mode/laptop_mode.conf

Die wichtigste Einstellung hier ist vielleicht:
LM_BATT_MAX_LOST_WORK_SECONDS=600

Je nach dem wie sicher das System ist kann man diesen Wert vergrößern und so die Festplatte länger schlafen lassen.

Das Problem ist jedoch, dass manche Funktionen erzwingen, dass der Schreibcache auf die Festplatte gebracht wird, dies fürht dann zu häufigerem aufwachen der Festplatte was sich negativ auf die sogenannten Load Cycle Counts auswirkt. Daher muss man schon darauf achten inwiefern diese Optionen sinnvoll sind. Um Schreibzugriffe auf die Festplatte zu verhindern gibt es auch Dämon der die Logs in eine Ramdisk umlenkt, was dazu führt dass bei einem Systemabsturz alle Logeinträge verloren gehen, aber auch die Schreibzugriffe auf die Festplatte verhindert. Das ganze nennt sich Ramlog
Von der Seite lädt man einfach das Paket herunter installiert es und freut sich.

Mit dieser Aktivierung reduziert sich der Energiebedarf bereits auf etwa 15 Watt.

Zusätzlich kann man den Prozessor auch manuell dazu bringen nur mit der niedrigsten Taktfrequenz zu arbeiten, inwiefern dass sinnvoll ist ist ebenfalls nicht genauer geklärt, da es Theorien gibt welche besagen dass ein Prozessor schneller wieder schläft wenn er kurz mit voller Geschwindigkeit gearbeitet hat. Ob jedoch das kurzzeitige schnelle arbeiten oder längerandauernde langsame arbeiten mehr Energie benötigt ist eine Frage die sich ähnlich der ob man besser durch Regen geht oder rennt (um weniger nass zu werden) so einfach nicht lösen lässt.

Weiteres Enegiesparpotenzial bietet der Lüfter, ebenfalls etwas kritisch zu betrachten, da hier quasi die Hardwaretemperatursteuerung umgangen wird, dies kann zu Überhitzung und somit Verringerung der Lebensdauer der Komponenten führen. Für mich ist derzeit auch unklar welcher Sensor welche Temperatur darstellt, deswegen ist eine Risikobewertung auch recht schwierig.
Für die Temperaturregelung empfiehlt sich das Paket ThinkPad Fan Control.
Die Installation ist denkbar einfach. In Synaptic fügt man die Paketquelle hinzu:

1
deb http://ppa.launchpad.net/surban/ubuntu intrepid main

Danach aktualisiert man die Paketinformationen und kann die Anwendung tpfan-admin installiert werden, diese richtet sich unter System->Systemverwaltung ein.
Dort kann man nun mit den Grenzwerten experimentieren, ich gebe keine Anhaltswerte weil ich selbst nicht weiß welche Temperatur was bedeutet. Damit kann man das Laptop auch sehr leise betreiben, was schon angenehm sein kann.

Der nächste Punkt ist das sogenannte SATA Aggressive Link Power Management (ALPM) da bei mir keine ATAPI Laufwerke vorhanden sind spielt Asynchronous Notification (AN) keine Rolle für mich.
Das geschätzte Einsparpotenzial von ALPM ist mit 0,5-1,5 Watt recht hoch.
Wichtig dabei ist, dass der SATA Controller im AHCI Modus und nicht im Compatibility Modus betrieben wird. Durch:

1
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

Aktivieren wir den Stromsparmodus. Die Option min_power sorgt bei manchen wohl für ein sehr langsames Suspend to Ram. Hier wird stattdessen ein medium_power empfohlen. Einfach testen, da ich eh so gut wie nie Suspend to Ram einsetze werde ich wohl min_power belassen.
Dieser Schritt reduzierte die Leistungsaufnahme laut Powertop um 0,5-0,7 Watt, erstaunlich für eine einzige Zeile oder? Damit bin ich bei 14,3 Watt bei eingeschaltetem WLAN und voller Bildschirmhelligkeit.

Die Idee die nichtgenutzte Bluetoothschnittstelle zu deaktivieren löst leichte Schwierigkeiten aus, das Modul welches Powertop vorschlägt (hci_usb) wird nicht verwendet. Stattdessen habe ich ein Modul namens btusb entdeckt, Bluetooth-USB? Klingt schonmal vielversprechend, tatsächlich handelt es sich wohl um den Nachfolger von hci_usb, welcher derzeit (kernel 2.6.17-11) noch kein autosuspend unterstützt, dies ist für die Kernel Version 2.6.28 geplant, dieser ist bereits vefügbar aber nicht in den Ubuntu Quellen verfügbar, ob autosuspend nun funktioniert oder nicht ist mir nicht klar hervorgegangen.
Um nun die Bluetoothschnittstelle zu deaktivieren müssen wir als erstes die Schnittstelle deaktivieren und dann das Modul aus dem Kernel entfernen (nicht löschen, wir wollen ja eventuell mal wieder Bluetooth haben oder?)
Ähnlich zu Netzwerkschnittstellen gibt es hciconfig welches ohne Parameter aufgerufen eine Liste der aktiven Bluetoothschnittstellen ausgibt. Mit:

1
hciconfig hci0 down

können wir die Schnittstelle deaktivieren. Dieser Schritt alleine bringt noch keine wirklich messbare Verminderung, eventuell 0,1 Watt, aber das ist ein Wert der durchaus auch innerhalb der Schwankungen liegen kann. Mit:

1
2
/etc/init.d/bluetooth stop
modprobe -r btusb

Sollte sich jetzt das Modul entfernen lassen, der Effekt: auch nicht mehr als durch die Deaktivierung, tendenziell also wohl nur eine Einsparung von 0,1 Watt.

Als nächstes kommen die Netzwerkkarten dran. Dazu installieren wir das ethtool. Mit ihm können wir Einstellungen an der Netzwerkhardware vornehmen, wie beispielsweise Wake on Lan ausschalten oder die Geschwindigkeit drosseln.
Ein Aufruf von:

1
ethtool eth0

Lieferte mir folgende Ausgabe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: Unknown! (65535)
    Duplex: Unknown! (255)
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    <strong>Supports Wake-on: pumbag
    Wake-on: g</strong>
    Current message level: 0x00000001 (1)
    Link detected: no

Hier wird deutlich, die Karte unterstützt Wake on Lan und hat es vermutlich auch aktiviert. Dadurch verbringt die Karte ihre Zeit in einer Art halbschlaf (auch wenn der Computer läuft). Deaktivieren bringt vermutlich ebenfalls nicht viel aber jedes Bisschen hilft:

1
ethtool -s eth0 wol d

Und Powertop zeigt uns: irgendwie hat sich nichts getan.
Auf zum Drahtlosnetzwerk, WLAN. Ein relativ bekannter Stromfresser. Ganz abschalten bringt natürlich viel, aber oft möchte man ja doch im Internet surfen oder ähnliches, daher ist es viel interessanter ob man den Stromhunger auch im Betrieb drosseln kann. Es geht, allerdings hat eine Methode auch Nachteile:

The downsides to this power saving technique:

  • network latencies increase, due to the „save up and check once in a while“ behavior. This is generally not noticable when you’re browsing the web and such. In situations where lower network latency is important (for example online gaming, voice and media streaming, etc.), we don’t recommend enabling PS-Poll.
  • a second potential problem is that not all access points (APs) support this technology. While most newer access points support this technique, some older APs may not support it very well. The effect of having an AP that doesn’t support the technique is that network connectivity may be lost. If, after enabling PS-Poll you find you are losing network access, check and see if your AP has newer firmware available from the manufacturer.

Zumindest mit dem ersten Punkt kann ich leben, ob mein Router das unterstützt werde ich gleich herausfinden.
Also schauen wir mal, es gibt ein Werkzeug namens iwconfig, komisch oder? Es ist wie das ethtool nur für Intel WLAN Adapter.
iwconfig gab folgendes aus:

1
2
3
4
5
6
7
8
9
wlan0     IEEE 802.11abgn  ESSID:""  
          Mode:Managed  Frequency:2.427 GHz  Access Point: MAC
          Bit Rate=54 Mb/s   Tx-Power=14 dBm  
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B  
          Encryption key:blubber   Security mode:fu
          <strong>Power Management:off</strong>
          Link Quality=100/100  Signal level:-40 dBm  Noise level=-95 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
1
iwconfig wlan0 power 3

Sollte uns den Stromsparmodus einschalten, mal sehen was wir erreichen: ebenfalls bestenfalls 0,1 Watt eher nichts.
Aaber: eine andere Methode hat einen deutlichen Effekt:

1
echo 5 > /sys/bus/pci/drivers/iwlagn/*/power_level

Damit reduzierte sich die Leistungsaufnahme um ein beachtliches Watt (also 1 Watt),ohne dass sich die Verbindung merklich verlangsamt hätte.
Nun lässt sich das ganze eigentlich auf alle über PCI angeschlossenen Geräte übertragen. Also aufgehts:

1
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done

Bringt nicht mehr so viel, der Übeltäter Wlan ist erschlagen. Ganz abschalten (netter Schalter am Gehäuse) bringt weitere 0,2-0,3 Watt. Also dringen abschalten wenn mans grade nicht braucht.

—-
Teil 1 endet hier, weil der Artikel sonst zu lang wird (!)


Opera: Doppelklick öffnet Kontextmenü – abschalten

Manchmal, eigentlich recht oft, um nicht zu sagen immer, stört mich das Verhalten von Opera bei einer Textselektion automatisch ein Kontextmenü anzuzeigen. Da ich eigentlich hauptsächlich mit Tastaturabkürzungen auf Funktionen zugreife und nur dann die Maus benutze wenn ich selten benutzte Funktionen benutze, nun kann es gerade beim Schreiben von Artikeln dazu kommen, dass man ein Text markiert mit einem Doppelklick weil man ihn gerne durch etwas ersetzen möchte. Tut man dies in Opera wird standardmäßig ein Kontextmenü geöffnet, dieses hat Tastaturabkürzungen für gewisse Funktionen, daher kann es passieren, dass durch ungewolltes drücken jener, die aktuelle Seite gewechselt wird, was wiederum dazu führt dass ein eventuell mühsam formatierter Artikel nur über einen älteren Entwurf wiederhergestellt werden kann.

Um diese Funktion abzuschalten muss man Hand an die Opera Konfiguration legen, allerdings nicht über Extras und Einstellungen sondern durch eingabe von:

1
opera:config

In der Adresszeile.
Man findet sich dann auf einer recht übersichtlichen Seite wieder die ausklappbare Menüs bereitstellt. Die Optionen sind alle Englisch und bieten keinerlei Erklärung, mehr oder weniger zufällig bin ich dann über die Entsprechende Option gestolpert.

Unter User Prefs schaltet man einfach das Häckchen bei Automatic Select Menu aus und schon ist man das Menü los.

Damit verbessert sich für meinen Teil die Benutzbarkeit noch weiter, manche sind eventuell an das Menü gewöhnt jedoch bietet es für mich keine wesentlichen Erleichterungen.


Tabletstifttasten anders belegen unter Linux

Wie es sich herausstellte war die Tastenbelegung des Stiftes unter Linux anders als die unter Windows, da dies deutlich störend für mich ist, habe ich mich auf die suche gemacht, wie man die Tastenbelegung ändern kann.

Dabei muss man wie so oft Hand an die Kofigurationsdateien legen, diesmal ist es wieder die xorg.conf. Diese eidtieren wir nun als root oder über sudo:

1
sudo nano /etc/X11/xorg.conf

Dort suchen wir nach den Einträgen die wir eh schon für unsere Stifteingabe angelegt haben und fügen die fett markierten Zeilen hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
Section "InputDevice"
  Driver "wacom"
  Identifier "stylus"
  [...]
  <strong>Option "Button2" "3"</strong>
EndSection

Section "InputDevice"
  Driver "wacom"
  Identifier "eraser"
  [...]
  <strong>Option "Button1" "2"</strong>
EndSection

Damit verhält sich der Stift dann wie unter Windows. Möchte man noch den Rechtklick über langes gedrückthalten der ersten Maustaste (halten des Stiftes) simulieren so geht dies in den Mauseinstellungen von Gnome unter dem Reiter Barrierefreiheit.