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.

Ein Rückblick: eine Woche Ubuntu-Netbook-Remix

Ich hab jetzt seit einer Woche ein Netbook im Einsatz. Es ist also Zeit für einen kleinen Rückblick. Erstes Fazit: arbeiten auf der Seashell macht Spaß. Besonders da es momentan noch wirklich Arbeit ist. Es braucht eine weile bis man sich Ubuntu so angepasst hat, das es so läuft wie man es wirklich will. Besonders die Optimierung auf „Sparsamkeit“ ist noch (Konsolen) Arbeit. Daneben lassen sich hervorragend Texte schreiben, Mails lesen und im Internet surfen.

Neben der Tastatur und dem Display überzeugt vor allem der Netbook-Remix selber. Diesen muss man in zwei Bereiche teilen: Kernel/Unterbau und GUI.
Der Kernel im Netbook-Remix samt die ihm umgebene Konfiguration aus Daemons ist nicht „optimal“. Was aber nicht weiter verwundert, es zwar ein optimierter aber immer noch „allgemeingültigen“ Kernel eingesetzt. Auch der Xserver läd noch alle Module/Treiber um eine Nvidia, ATI oder sonst irgendeine Karte zu befeuern. Dies ist dem Umstand geschuldet, das es sich beim Netbook Remix um eine „große“ Distribution handelt, keine optimierte Spartenvariante. Das ließ sich aber schnell ändern. Mit „wenigen“ Handgriffen war der „allgemeine“ Kernel gegen einen EeePC-Kernel ausgetauscht, der ist nicht nur kleiner sondern spart auch Strom. Auch sonst ließ sich der Unterbau mittels aptitude und Config-Scriptes sehr komfortabel an die Bedürfnisse anpassen. Momentan hab ich das Gefühl eine Betriebssystem zu haben, was sich „fast“ perfekt an die vorhanden Hardware angepasst hat. Noch ein zwei Ecken weg schleifen (Softkey zum laufen bringen) und ich bin wunschlos glücklich.

Bei der Oberfläche überlebte ich einige Überraschungen. Ich war mit der Einstellung „ran gegangen“ Ubuntu zu installieren (da es noch kein Xubuntu Netbook-Remix gibt) und das enthaltene Gnome schnellstmögliche runter zuschmeißen und gegen Xfce zu tauschen. Da dies ja ressourcensparender ist und mehr „KDE-like“. „Gnome ist halt hässlich“. Naja es kam alles ein wenig anders. Beim Zwangsboot von Windows merkte ich das erste mal, dass eine Standard Desktopoberfläche auf einen 10“-Display alles andere als optimal ist. Die Fensterleiste zu breit, dass „Windowing“ zu platz verschwendend. Von 600 Pixeln (vertikal) gehen alleine schon knapp 100 Pixel für „Startleiste“ und „Fensterrahmen“ drauf. Nach der Installation von Ubuntu war ich erstmal schockiert von der Farbgebung. Ich mochte dieses grau in braun noch nie… Durch das Fehlen der Netzwerkfunktionalität war ich gezwungen erstmal mit dieser Oberfläche zu arbeiten, wenn auch nur in der Konsole. Nach den ersten Stunden (2-3) hatte ich Netzwerk und machte meine Drohung war. Einmal den Befehl ausgeführt, der mir GNOME runter schmeißt und XFCE draufhaut. Ohne Seil und doppelten Boden. Weg mit dem braunen Brei, her mit der … Desktopoberfläche… Nachdem ich die erste Stunde mit XFCE gearbeitet hatte (Einrichten, gestalten und auf Energiesparen trimmen) stellte ich fest, dass sich mein erster Eindruck bestätigte. Irgendwie fühlte sich das alles unrund an. Das ständige überlagern von Fenstern, das schieben und anordnen war ein Krampf. Ich verwarf das alles und installierte Ubuntu nochmal neu. Nachdem ich mich mit den Braun angefreundet hatte (mittlerweile empfinde ich es sogar als angenehm) stellten sich die Vorteile des Oberflächendesign noch stärker heraus. Bis auf ein paar nicht angepasste Dialoge (oder die Möglichkeit zu große Dialoge zu scrollen) wirkt alles aus einem Guss und aufeinander angepasst. Sogar mein Lieblingsbrowser lässt sich mit Skin wunderbar in die Oberfläche integrieren. Als Zentrale Anlaufstelle habe ich den Gnome-Netbook-Launcher wirklich ins Herz geschlossen. Anfangs wirkte das Ding überflüssig wie ein Kropf, mittlerweile findee ich das „OnScreen“Menüunervig.. Bei der kleinen Auflösung hat man oft Überblendungen oder „aufploppen“ an stellen wo man das Menü nicht erwartet. Wenn ich raus gefunden hab wie ich den Launcher auf Tastendruck einblende verschwindet das Menü endgültig…

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 🙂

WLAN unter Ubuntu NetBook Remix auf der SeaShell zum laufen bringen

Unter der aktuellen Version des NetBook-Remixes ist die Seashell nicht sinnvol zum Einsatzt zu bringen, weder LAN noch WLan sind nutzbar. Um diesen Umstand zu lösen bedarf es eines Updates. Die kann man über folgenden Befehl bewerkstelligen.

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install linux-backports-modules-jaunty

wohl dem der eine externe USB LAN/WLAN-Karte hat, wie zb bei „where’s the [any] key“.

Leider dürften die meisten käufer wie ich erstmal etwas verduzt drein schauen. Das die WLAN Karte nicht nutzbar war, damit rechnet man, das eine einfache LAN-Karte nicht nutzbar ist, das hat man unter Linux schon lange nicht mehr erlebt.

Nach einer kleinen Suche im Debian-Handbuch war die Lösung aber „schnell“ parat. Zu finden hier: Debian Handbuch

Hier der Ablauf:

Als erstes ein Medium der Wahl, am besten USB-Stick oder SD-Karte, formatieren und mit der folgenden Ordnerstruktur vorbereiten (ich hab das Medium dabei unter /media/Disk eingebunden):

/media/Disk/
  archives/
     partial/
  lists/
     partial/

danach inter /media/Disk/ eine Datei mit dem namen apt.conf anlegen (kann auch anders heißen) und mit folgendem inhalt füllen:

APT
      {
        Architecture "i386";
        Get::Download-Only "true";
      };

      Dir
      {
        State "/media/Disk/";
        State::status "status";
        Cache::archives "/media/Disk/archives/";
        Etc "/media/Disk/";
      };

Nun (auf dem EeePC) das medium mounten (wenn nicht schon geschehen) und die Datei /var/lib/dpkg/status kopieren

cp /var/lib/dpkg/status /media/Disk/

Nun das Medium auf den Rechner mit Internet Mounten und die /etc/apt/sources.list kopieren.

cp /etc/apt/sources.list /media/Disk/

nun „apt“ temporär „umbiegen“ und „updaten“:

#auf dem "download"-Rechner braucht es keine root rechte
export APT_CONFIG="/media/Disk/apt.conf"
apt-get update
apt-get dist-upgrade
apt-get install linux-backports-modules-jaunty

Nun warten bis die dateien auf das Trägermedium geschrieben wurden, dann am EeePC wieder mounten und dort updaten.

#kurzeitig eine root umgebung besorgen, erleichtert das ganze...
sudo -s
export APT_CONFIG="/media/Disk/apt.conf"
apt-get check
apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status dist-upgrade
apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status install linux-backports-modules-jaunty

anschließend neu starten und das WLan in Betrieb nehmen.

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.