Schlagwort: Autorotation

Energiesparende halbautomatische Rotation unter Ubuntu 9.10

Nachdem nun der Touchscreen wie gewünscht funktioniert, kommt jetzt die Rotation an die Reihe.

Dieses Beispiel funktioniert für ein Lenovo X61 Tablet.


Tablet-PC Funktionalität unter Linux aktivieren für Lenovo X61t (Teil 4 – energiesparende Autorotation)

Die automatische Rotation nach dem Guide war mir im Zuge meiner Energiesparoptionen ein Dorn im Auge, basiert das System doch auf Polling welches ständig prüft ob ein Ereignis nun eingetreten ist oder nicht. Dazu muss der Prozessor mehrmals aufwachen, das kostet wiederrum Energie.

Aber ansich finde ich die Möglichkeit den Bildschirm automatisch auszurichten schon sehr schön. Not macht erfinderisch.

Ich habe mir eine Möglichkeit überlegt beide Varianten zu vereinen, Ereignisgesteuert aber ohne Polling, es hat etwas weniger Komfort aber ist vielleicht noch ein wenig nützlicher als eine ständige automatische Rotation.

Das Prinzip basiert auf dem Rotier-Knopf und den ACPI Ereignissen. Die Idee ist diese, sobald man den Rotier-Knopf drückt wird geprüft in welchem Zustand sich das Tablet befindet, ist es gerade im Tabletmodus wird für 8 Sekunden die automatische Rotation eingeschaltet, dies sollte genug sein um das Tablet so zu drehen wie man möchte.

Um das ganze hier zu konkretisieren, Vorraussetzungen:

  • Installiertes hdaps Modul
  • Lukes rotate.py irgendwo funktionierend abgelegt
  • ein installiertes thinkpad_acpi Modul

(vergleiche auch: (Teil 2 – Sondertasten + Rotation) und (Teil 3 – Autorotation))
Der Rest ist nun recht einfach.

Wir schnappen uns eine Konsole und reißen die Macht an uns, für die Weltherrschaft reicht das zwar noch nicht ganz, aber wir stehen kurz davor:

1
sudo su

Dann legen wir, beispielsweise unter /usr/local/bin eine neue Datei an die wir sinnigerweise rotatebutton.sh nennen könnten:

1
nano /usr/local/bin/rotatebutton.sh

In diese fügen wir nun folgendes ein:

1
2
3
4
5
6
7
8
9
#!/bin/bash
if [ `cat /sys/devices/platform/thinkpad_acpi/hotkey_tablet_mode` = "1" ]
then
        /usr/local/bin/rotate tablet
        sleep 8
        killall -e rotate
else
        /usr/local/bin/rotate normal
fi

Zum Herunterladen: rotatebutton
eventuell muss der Pfad zum Rotationsskript angepasst werden, ebenso die Schlafzeit.
Danach noch die Datei ausführbar machen:

1
chmod +x /usr/local/bin/rotatebutton.sh

Das Skript prüft den Status des IBM Hotkeys Tablet Mode, wenn dieser gesetzt ist wird die Rotation nach HDAPS für 8 Sekunden aktiviert, danach wird das Rotationsskript wieder getötet.

Somit erreicht man: Komfort durch automatische Rotation, wenig Belastung des Prozessors durch Verhinderung des Pollings, kein versehentliches Drehen des Bildschirms bei der Arbeit.

Jetzt müssen wir nur noch den Rotierknopf unserem Skript zuweisen:

1
gconf-editor

Unter apps/metacity/keybinding-commands
Ändern wir den Wert eines freien (oder der alten Rotationsbelegung) Kommandos auf:

1
sudo /usr/local/bin/rotatebutton.sh

unter /apps/metacity/global_keybindings/ fügen wir dann beim entsprechenden run_command_X das Keyevent ein:

1
XF86User1KB

Eventuell muss die sudoers Liste noch angepasst werden:

1
visudo

Dort fügen wir in die Zeile mit %tabletgroup noch folgendes hinzu:

1
,/usr/local/bin/rotatebutton.sh

Nun noch abspeichern, wenn man durch visudo wirklich in vi gelandet ist, so hat man gewisse Schwierigkeiten bei der Bedienung, bei mir bin ich glücklicherweise in nano gelandet, man kann die Datei auch einfach mit nano /etc/sudoers aufrufen, aber wenn man einen Fehler macht kann das unangenehme Auswirkungen haben.
(sofern die Anleitungen dieser Seite befolgt wurden sollte jetzt alles funktionieren.)


Tablet-PC Funktionalität unter Linux aktivieren für Lenovo X61t (Teil 3 – Autorotation)

Der letzte Teil der spezifischen Tabletfunktionalität ist die Autorotation.
Beim Überfliegen von Lukes Rotationsskript ist mir aufgefallen, dass es wohl eine Möglichkeit gibt die Beschleunigungssensoren des Thinkpads auszulesen und so eine automatische Rotation und eventuell auch die automatische Festplattenabschaltung zu realisieren.
Dazu benötigt man HDAPS welches nicht standardmäßig installiert ist.
Die Entwickler des HDAPS Treibers empfehlen die Verwendung des gepatchten Treibers von tp_smapi.

Also installieren wir den Kerneltreiber, dazu können wir einfach den Tarball herunterladen der auf der obenstehenden Seite verlinkt ist.
Den speichern wir an einem Ort an dem wir ihn wiederfinden, zum Beispiel im Home Ordner.

Nun benutzen wir wiedereinmal die Konsole. Dort entpacken wir den Tarball:

1
tar xzvf tp_smapi-0.40.tgz

Je nach Versionsnummer heißt die Datei etwas anders.
Wir wechseln in das neu erstellte Verzeichnis:

1
cd tp_smapi-0.40

Nun müssen wir einfach die Module erstellen lassen und sie danach laden, da wir sie öfter verwenden möchten benutzen wir die Installationsoption und natürlich geht es uns primär um den HDAPS Treiber. Also installieren wir die Module mit:

1
make install HDAPS=1

Nun sollten die Module gebaut und installiert werden. Mit modprobe laden wir die neuen Module:

1
modprobe -a tp_smapi hdaps

Sollten hier bereits Fehler auftreten so ist etwas schief gelaufen welches genauerer Betrachtung bedarf.

Nun gehen wir weiter nach dieser Anleitung vor: Karol Kritzkas Guide
Ich finde die Art wie das Script funktioniert zwar nicht schön, allerdings hat bei mir die alternative Variante leider nicht funktioniert.