Stromverbrauch der Seashell unter Karmic Koala

Wenn man Ubuntu 9.10 auf einem Netbook installiert, ist die Ausbeute des Akkus nicht optimal. Standardmäßig ist zwar der gnome-powersave-daemon aktiviert, dieser nutzt jedoch nicht das volle Potential. Ein Verbrauch von ca. 9 Watt und 4 Stunden Akkulaufzeit (ohne WLAN) ist nicht berauschend. Mit ein paar Handgriffen bekommt man aber den Verbrauch unter 6 Watt gedrückt und erreicht so die 6 Stunden Akkulaufzeit. Mein Rekord liegt bei knapp 7 Stunden, dabei war der Laptop jedoch nicht wirklich in Benutzung…

Erster Einstiegspunkt zum Stromsparen ist der „laptop_mode“-Tools. Diese sind standardmäßig installiert, jedoch deaktiviert. Dabei bieten sie wesentlich granularere Möglichkeiten das System auf „Sparsamkeit“ zu trimmen. Die wichtigen/benötigten Möglichkeiten kurz zusammen gefasst:

  • Starten und Stoppen von Diensten: Im Batteriebetrieb ist der betrieb einiger Diensten unter Umständen nicht nötig oder nicht so wichtig, dass sie kritisch für das System sind. zb: der NTP dienst.
  • das Abschalten von ungenutzten Video-Outs
  • das Einschränken der verfügbaren Bandbreite bei Ethernet interfaces. 1000MBit sind selten wirklich nötig und kostet das ein oder andere Watt

Um den Dienst scharf zu schalten, muss man die Datei /etc/default/acpi-support bearbeiten.

# Switch to laptop-mode on battery power - off by default as it causes odd
# hangs on some machines
ENABLE_LAPTOP_MODE=true

Kleinere Änderungen müssen auch unter /etc/laptop-mode/conf.d/lcd-brightness.conf gemacht werden, da sich unter dem 1008HA das Interface für das LCD Display wo anders befindet.

BRIGHTNESS_OUTPUT="/proc/acpi/video/VGA/LCDD/brightness"

Die Werte für die Helligkeit können dabei zwischen 0 und 15 skalieren.

Weitere Änderungen können nach Wunsch in den Dateien unter /etc/laptop-mode/conf.d/ gamacht werden. Hier kann man nach belieben sämtliche Veränderungen vornehmen. Das meiste ist selbsterklärend. Dabei gilt immer, alles was man im Normalbetrieb nicht braucht, sollte man abschalten und bei bedarf zuschalten.

Neben diesen „banalen“ Änderungen gibt es noch andere Optimierungen.
Einen „großen“ Vorteil bringt es RamDisk einzusetzten. Solange man mechanische Festplatten einsetzt, ist einer der größten „Stromfresser“ eben diese Festplatte. Entweder leistet man sich bei Gelegenheit eine (sündhaft) teure SSD oder man sieht zu, dass man Mechanische Zugriffe auf die Festplatte so lange unterdrückt wie irgend möglich.

Eine RamDisk ist dabei die UltimaRatio. Mittels tempfs kann man im RAM einen Bereich reservieren, der anschließend in das FileSystem gemountet wird. So kann man zb. den Cache des Browsers oder „/var/log“ direkt in den RAM legen. Auf der haben Seite verbucht man damit, dass die Fesplatte über „lange“ Zeiträume nicht angetastet werden muss. Negativ ist halt, dass alle abgelegten Daten den Kaltstart nicht überleben werden.

Alle bisherigen Optimierungen nutzten nur vorhandene Techniken besser aus, ohne das System in die Instabilität zu treiben. Die weiteren Eingriffe gehen Tiefer und können das System komplett zerschießen. Anwendung auf eigene Gefahr.

Unter Jaunty gab es eine reihe von Traytools die die „Super Hybrid Engine“. Leider fühlten sich einige dieser Entwickler von der Ubuntu-Entwicklungs-Politik so angepisst, dass sie die Entwicklung eingestellt haben. So muss man sich inoffizieller Pakete bedienen die zu alle dem keiner Paketverwaltung unterliegen. Im Internet kann man eine brauchbare Tray-Control finden. Leider startet die auf Anhieb nicht. Da der Pyhton-Script das falsche interface für die Helligkeitssteuerung voraussetzt. Als erstes braucht man die korrekte Schnittstelle. Mittels folgendem befehl das Interface identifizieren:

find /sys/ | grep brightness

Anschließend in der Datei /usr/bin/eee-control-daemon diesen Wert in Zeile 85 und 86 einsetzten. Nun kann man den Dienst starten. Während die Steuerung der RF-KillSwitches nur leidlich funktioniert, kann man über dieses Tool die FSB-Tacktung reduzieren, Was nochmals ordentlich Stromersparnis bringt.

Etwas heickler ist das Abschalten des des AppArmor-Systems. Hier sollte man jedoch kurz inne halten! AppArmor dient zur Sicherung des Systems und stellt eine aktive Sicherheitsebene dar. Jedoch lässt sich für die Praxis eines Netbook-Einsatzes dessen Sinn vernachlässigen bzw in Frage stellen. Die Abschaltung von AppArmor brachte bei meinem System ca 0.5 Watt.

Hat man diesen Schritt einmal getan, ist es mit dem Selberbauen des Kernel auch nicht mehr weit. Der Karmic-Koala setzt auf den Standard-Kernel, dieser ist „leider“ ein generic-Kernel. Also ein Kernel der das größtmögliche Spektrum an Hardware und Spezialanwendungen unterstützt was sich der Jungs bei Chanonical vorstellen können.

Beim konfigurieren des Kernels kann man extrem viel ein und verstellen. Meiner Meinung nach gibt es kann man sich aber auf folgende Punkte beschränken:

  • Zielarchitektur: Der Kernel sollte auf Core2Duo/Xeon optimiert werden, laut mehrere Internetquellen wird damit auch der Atom abgedeckt. Alle weiteren Optionen die andere X86 Architekturen unterstützen kann man abschalten.
  • LargeMemory: Standardmäßig ist der Ubuntu-Kernel auf 4GB eingestellt. In der Seashell sind fest 1GB verbaut. Es braucht den Overhead also nicht.
  • Virtualisierung: Wer will auf einem Atom mehrere virtuelle Gast-Systeme einrichten? Wer auch immer das macht, macht braucht sich um Stromverbrauch keine Gedanken machen 😉
  • AppArmor: will man die Fehlermeldung beim Booten wegbekommen, schaltet man hier auch das Kernel-Interface für AppArmor ab.

Man kann auch Treiber „entfernen“ von denen man weiß das man sie nie brauchen wird. Jedoch bringt das außer einer kleineren InitRamDisk kaum Performance. Mehr bringt da schon das feste einkompilieren von Treibern. Wenn man viel Zeit hat, kann man einen Kernel bauen, der ohne InitRamDisk auskommt. Leider funktioniert dann dann UReadAhead nicht. Dieser dienst speichert alle Dateien die für einen Systemstart gebraucht werden sequenziell optimiert ab. So können sie besser von der Festplatte geladen werden. Leider scheint dieser ohne InitRD nicht klar zu kommen. Der Kernel bootet dann zwar schneller, da er keine RamDisk laden muss, das restliche System braucht dafür merklich länger.

Eine Beispiel Konfiguration hab ich hier bereitgestellt: EEE-Kernel.config

Alles in allem haben mir diese eingriffe rund 3 Watt Leistungsersparniss gebracht. Mit Durchschnittlich 35 WakeUps pro Sekunde ist das Ende aber noch nicht erreicht.

Karmic Koala auf der Seashell

Hier war es eine weile sehr ruhig, dass hatte zwei Gründe. Erstens hatte ich Urlaub (die letzte Woche) zum anderen hat sich gezeigt, dass beim Netbook-Remix von Jaunty (9.04) auf Karmic (9.10) sehr viel passieren würde. Es hätte wenig Sinn gemacht, den Jaunty auf der Seashell bis zum Brechen zu optimieren, um ihn anschließend durch den Karmic zu ersetzten.

Darum dreht sich die Frage ja im Grunde. Lohnt es sich, eine funktionierende  Jaunty-Netbook-Installation durch eine Karmic zu ersetzten. Kurz und knapp: Ja. Sämtliche Funktionen der Seashell funktionieren Out-of-the-Box. Hier nochmal die Auflistung:

  • WLAN und LAN: Beide Interfaces werden erkannt und können sofort genutzt werden.
  • HotKeys/LEDS: Fast alle wichtigen HotKeys (WLAN ausschalten, usw) funktionieren tadelos. Ausnahmen Touchpad-deaktiviern
  • Suspend to Disk/Ram: laufen jetzt besser/robuster.

Diese Verbesserungen sind zu großen Teilen auf den neuen Kernel (2.6.31) zurückzuführen. Hier war der Jaunty einfach „benachteiligt“. Beim damaligen Release hat sich in zu vielen Treiberteilen, die die Netbooks betreffen, zu viel getan. Besonders hart hat es den Treiber der Intel-Grafikkarten getroffen. Dieser war im alten Kernel einfach „gebrochen“. Die Performance ist zwar immer noch hinter den Windows-Treibern aber schon erheblich besser als unter Jaunty.

Das Design und die Bedienung wurden im Detail verbessert. Es wirkt alles aufgeräumter und dezenter.

Über FN-Taste das Touchpad deaktivieren.

Der Controler des 1008HA benutzt für die Touchpad-Taste einen anderen KeyCode als die bissherigen EeePC-Modelle. Somit bedarf es einer Anpassung. Am leichtesten geht dies über das EeePC-Tooling von Statux.

Mit diesem wird eine „angepasstes“ ACPI-Tooling ausgeliefert welches die Events dem System zur Verfügung stellt. Dies ist nich alles weiter wild und wird auch von anderen ACPI-Implementierung geliefert (auch der Standartversion). Diese Variante bietet aber die Möglichkeit ohne größere Probleme in den „Verarbeitungsprozess“ einzugreifen.

Mittels einer Debugoption kann sich die KeyCodes ausgeben lassen. Damit lässt sich die folgende Configurationsdatei (/etc/default/eeepc-acpi.local) schnell zusammenstellen. Nach einem (Dienst)Neustart funktioniert der Key.

#KEY_SHOW=1 #Debugausgabe zuschalten oder nicht

KEY_WIFI="00000010"
#KEY_BT=  #die Seashell hat dafür keinen schalter
#KEY_CAM= #die seashell hat dafür keinen schalter
KEY_VOLU="00000015"
KEY_VOLD="00000014"
KEY_MUTE="00000013"
KEY_TOUCHPAD="00000037" #angepasster keycode
KEY_RESOLUTION="0000001b"

KEY_VGAOFF="00000016"
KEY_VGAOUTA="00000030" 
KEY_VGAOUTB="00000031" 
KEY_VGAOUTC="00000032" 

KEY_PERFMON="00000012"
KEY_PERFMON_COMMAND="/usr/bin/gnome-system-monitor"
KEY_PERFMON_NAME="System Monitor"
KEY_PERFMON_ICON="gnome-monitor"

TOUCHPAD_KEY_DISABLE="1"
TOUCHPAD_DELAY="0.5"

POWER_AC="00000050"
POWER_BAT="00000051"

MODE_AC="performance"
MODE_BAT="ondemand"

PAUSE_SERVICES="anacron cron ntp bluetooth"

USB_SUSPEND=1 #mit vorsicht zu genießen! dokumentation lesen
DONOT_SCALE_FSB="1"

Damit das Touchpad „on-the-fly“ abgeschaltet werden kann braucht es noch „einige“ Anpassungen.
Erstmal müssen alle Einträge in der XServer-Configdatei (/etc/X11/xorg.conf) entfernt werden die das Touchpad/Mause betreffen.
Die Seashell verwendet ein standart Synaptic-Touchpad, entsprechend müssen eventuelle Protokollanpassungen in der Datei „/etc/modules“ entfernt werden. Der Treiber funktioniert „out of the Kernel“.

Alle konfiguration betreffend des Touchpads sollte/muss über eine HAL-Policy erfolgen. Dazu einfach eine Datei unter /etc/hal/fdi/policy anlegen. Diese sollte die Endung .fdi haben.
folgenden Inhalt einfach reinkopieren

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="input.x11_driver" string="synaptics">
<merge key="input.x11_options.PalmDetect" type="string">true</merge>
<merge key="input.x11_options.SHMConfig" type="string">true</merge> 
</match>
</device>
</deviceinfo>

Auf „PalmDetect“ kann verzichtet werden, SHMConfig muss auf „true“ gesetzt werden. Alle weiteren möglichen Parameter können im Ubuntu wiki nachgeschlagen werden. Nach einem (HAL-Dienst)Neustart lässt sich nun auch das Touchpad auf Knopfdruck zu/abschalten.

Sehr praktisch das ganze.

Seashell RFKillswitch unter Ubuntu

Damit man auf Knopfdruck das WLan abschalten kann muss man das modul rfkill-input laden lassen. In der Datei „/etc/modules“ das modul angeben.

Man kann auch mit dem folgendem Befehl, das modul temporär laden und testen.

sudo modprobe rfkill-input

will man etwas mehr komfort braucht man eines der „vielen“ EeePC-Applets. Ein gutes wird über das statux.org-Repository. Danach kann man sich das EeePC-Tray installieren. Danach bekommt man eine Visualisierung ob der Tastendruck „gezogen“ hat, da der WPA-Supplicant ein wenig verzögert reagiert.

1008HA – Sound zu leise

Nach der Standartinstallation des NetBook-Remix auf der SeaShell wird man schnell feststellen, dass der Sound extrem leise daher kommt, obwohl unter windows der „Sound“ während der Einrichtung nerfig laut war, das muss man leider über sich ergehen lassen.

Leider lässt sich dem problem mit GUI-Boardmitteln nicht wirklich bei kommen. Da man aber die Console bei der Seashell durchaus gewöhnt ist/sein muss reicht ein aufruf des Alsamixers in der Console…

alsamixer

dort den zweiten Kanal hochdrehen (Anschlag) und anschließend die Einstellungen speichern

sudo alsactl store

und schon klappt es mit dem Sound 🙂

Seashell und Ubuntu NetBook Remix

ASUS hat mit dem ersten EeePC für Furore gesorgt weil dieser ohne ein Windows daher kam. Ja man konnte nicht mal eins installieren. Dieser neue EeePC ist „voll“ Windows-tauglich, so heißt es zu mindestens. Ausgeliefert wird er mit einer in vier Partitionen geteilten Platte samt vorinstallierten Windows XP.

WARNUNG: Die Linuxer unter euch, die sofort alles löschen und daraus ein oder mehrere EXT/Reiser Partitionen machen wollen, sollten hier innehalten. ASUS liefert BIOS Updates aus (die wichtig sind), welche nur von Windows aus zu installieren sind. Ihr braucht also eine Wartungspartition. Ich für meinen Teil hab eine 10GB XP partition und 150 GB EXT3.

Zudem läuft OOTB weder LAN noch WLAN mit Ubuntu. Damit fällt der Netzboott/NetInstall (PXE) ins Wasser. Zwar kann das BIOS via PXE booten, das aktuelle Jaunty Image kann jedoch die LAN-Karte nicht ermitteln und bricht ab. Einer Installation über USB Stick/SD-Karte steht aber nix im weg (NetbookRemix). Es Bedarf aber in jedem Fall einen zweiten Rechner mit funktionierendem Internetzugang und am besten apt-get. Denn man muss das erste Update ohne Internet fahren und erst danach bekommt man die WLan Karte (Artheros) ans laufen.

Hier die Zusammenfassung:

[OOTB funktional Ubuntu 9.04 Jaunty (NetbookRemix)]

Suspend to RAM
Suspend to Disk
Bluetooth
Sound
WebCam
Hintergrundbeleuchtung (Regelung)
Tastatur/Maus

[OOTB nicht funktional Ubuntu 9.04 Jaunty (NetbookRemix)]

LAN
WLAN
Alle Softkey haben keine Funktion (auch die um die WLan/BT verindung abzuschalten)
Sound zu leise (was sich aber ohne weiteres beheben lässt)

Die Akkulaufzeit beträgt rund 4 Stunden, wenn man es mittels powertop und ein paar Skriptes optimiert schafft man ohne Probleme die 6 Stunden.

Mein neues Spielzeug: ASUS EeePC 1008HA

Ich hab mir ein neues Spielzeug gegönnt. Einen EeePC 1008HA. Das neuste Modell und „Königsklasse“ von ASUS unter den (billig) Netbooks. Ich hab mich für dieses Modell entschieden weil der Hersteller mit seiner bisherigen Politik bewiesen hat, dass man auch auch Linux erfolgreich unterstützen kann. Ob mit den Ultra-Schlanken QuickBoot-Linux für ihre Motherboards oder dem ersten EeePC selber, eine Linux-Only Maschine.

Der 1008HA, Codename Seeshell basiert auf einer stromsparenden Intel Atom Plattform, wie alle anderen Modelle in der (Preis)Kategorie auch. Nur in der Ausstattung unterscheiden sich die Geräte geringfügig.

Außer einem GSM/HSDPA Modem ist bei diesem Modell alles mit an Bord was man für moderne Kommunikation so braucht. Bluetooth, 208.11 (B G) N(Draft) und (überraschenderweise) 10/100 LAN. Bestückt ist das Board mit einem 1GB RAM (kann auf maximal 2GB ausgebaut werden). Die Festplatte ist leider eine 160GB Platte „alter“ Bauart, keine SSD. Mit SSDs lassen sich noch keine Größen erreichen die eine „Windows“ Plakette ermöglichen (zu mindestens nicht bezahlbar). Leider bleibt das nicht das einzige Ärgernis mit der Ergebenheit an Redmond.

Positiv hinzu kommt das Design der „Muschel“. Flach wie selbige. Der LAN-Port ist breiter als das Gehäuse, was über eine findige Klappe realisiert wird.. Der Anschluss für einen externen Monitor ist an der Unterseite versteckt und alle weiteren Anschlüsse über Blenden unsichtbar gemacht. Sehr schick das ganze. Besonders in schwarz (mit blauen LEDs) sieht das ganze Edel aus… Bis auf diese scheiß Logos… Alle Aufkleber lassen sich rückstandslos entfernen, nur bei dem Atom und Windowslogo muss man mit Alkohol loslegen. Minuspunkts.

Gengretypisch aber dennoch beschissen ist das verspiegelte 10“ Display, in praller Sonne wird arbeiten so unmöglich. Die 10“ machen sich jedoch positiv bemerkbar. Man hat wesentlich mehr Übersicht als bei den Vorgängermodellen. Positiv wirkt sich das auch auf die Größe der Tastatur aus. Hier hat sich ASUS nicht lumpen lassen, Die Tastatur ist das eigendliche Highlight des 1008HA. Guter Anschlagpunkt und Haptik und auch die Größe der „Sondertasten“ (TAB, Enter, Shift) ist so, dass man sich als Vielschreiber nicht die Finger bricht. Damit kann man auch mal „geschwind“ ein paar Zeilen Sourcecode hacken…

Trotz der „Größe“ fällt das Gewicht mit 1.1KG angenehm gering aus. Das ist ein eindeutiger „immer dabei“ Faktor.

Wie sich das Teil in der Praxis schlägt folgt in den nächsten Artikeln.