[[Vorlage(InArbeit, 24.12.2009, linrunner)]] [[Vorlage(Getestet,karmic,jaunty,intrepid,hardy)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Paketen] [:Kernel: Einen eigenen Kernel kompilieren] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] [:Editor: Einen Editor mit Root-Rechten öffnen] [:Terminal: Ein Terminal öffnen] [:Packprogramme: Archive entpacken] [:Programme_kompilieren: Programme kompilieren] [:GNOME_Panel: Ein Applet zum Panel hinzufügen] [:KDE4/KDE_Systemeinstellungen: Ein Programm zum KDE-Autostart hinzufügen] [:Xfce_Panel: Erweiterungen vom Xfce Panel] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/hd.png, align=left)]] Seit 2003 verfügen viele ThinkPad-Modelle über einen Bewegungs-Sensor, ein sogenanntes [http://en.wikipedia.org/wiki/Accelerometer Accelerometer] {en}, das vor allem dazu dienen soll, den Lesearm der Festplatte im Falle eines Sturzes innerhalb von Millisekunden zu "parken", damit die Festplatte nicht beschädigt wird. Dieser aktive Festplattenschutz, das [http://www.thinkwiki.org/wiki/Active_Protection_System Harddrive Active Protection System (HDAPS)] {en} , lässt sich auch unter Linux aktivieren. Einen ähnlichen Sensor haben Notebooks von Acer (''"GraviSense"'') und Apple (''"Sudden Motion Sensor"''), HDAPS funktioniert aber nur mit ThinkPads von IBM/Lenovo. # TODO: Mac Books?! = Installation = Als Voraussetzung sind für alle Ubuntu-Versionen die Pakete * '''module-assistant''' * '''build-essential''' zu installieren [1]. Die restlichen Installationsschritte sind: * Gepatchten Kernel [#Gepatchten-Kernel-bauen-nur-Ubuntu-8-04-8-10 bauen] (nur Ubuntu 8.04, 8.10) * Kernelmodul '''hdaps''' [#Kernelmodul-hdaps-installieren-alle-Ubuntu-Versionen installieren] (alle Ubuntu-Versionen) * Überwachungsdämon '''hdapsd''' [#berwachungsdaemon-hdapsd-installieren-alle-Ubuntu-Versionen installieren] (alle Ubuntu-Versionen) {{{#!vorlage Hinweis Es ist von Vorteil die Installations- und Konfigurationsschritte genau in der beschriebenen Reihenfolge durchzuführen. Installiert man z.B. alle in diesem Artikel angegebenen Pakete in einem Schritt, so zieht der '''hdapsd''' zunächst ein veraltetes Kernelmodul '''hdaps''' an. }}} == Gepatchten Kernel bauen (nur Ubuntu 8.04, 8.10) == Die bis einschließlich Ubuntu 8.10 [:Intrepid_Ibex:] verwendeten Kernel verfügen zwar von Haus aus bereits über den Treiber '''hdaps.ko''', der die Daten des Sensors auslesen kann. Um jedoch das Schutzsystem zu aktivieren, sind Anpassungen an anderen Stellen der Kernels notwendig, für die man einen gepatchten Kernel bauen muss. {{{#!vorlage Hinweis Ab Ubuntu 9.04 [:Jaunty_Jackalope:] ist es nicht mehr nötig, einen gepatchten Kernel zu bauen, da ab Kernelversion 2.6.28 der benötigte Patch bereits integriert ist. }}} === Kernel patchen und kompilieren === Zunächst werden wie in [:Kernel#Kernelquellen-herunterladen:] beschrieben die Kernelquellen heruntergeladen und entpackt. Danach ist von [http://www.thinkwiki.org/wiki/HDAPS#Applications hier] {en} die zu den Kernelquellen passende Version des Patches herunterzuladen. Nun kann der Patch im Verzeichnis, in das die Kernel-Quellen entpackt worden sind, mit folgendem Befehl eingespielt werden: {{{#!vorlage Befehl patch -p1 -l < /WEG/ZUM/PATCH/hdaps_protect-.patch }}} Dabei dürfen nur "succeeded"-Meldungen erscheinen, andernfalls ist eine falsche Patch-Version benutzt worden. Danach ist der Kernel zu konfigurieren und zu kompilieren [2]. Wer am bestehenden Ubuntu-Kernel nichts weiter verändern will als den HDAPS-Patch, übernimmt am einfachsten die alte config-Datei aus '''/boot/config-'''. === Kernel installieren === Von den .deb-Paketen, die sich nach der Kompilierung im Quellenverzeichnis befinden, müssen die beiden folgenden installiert werden [3]: * '''linux-image-''' * '''linux-headers-''' Der gepatchte Kernel ist nun installiert und kann durch einen Neustart aktiviert werden. {{{#!vorlage Warnung Es ist dringend darauf zu achten, dass neben dem neu erstellten noch mindestens ein alternativer, funktionierender Kernel zum Booten zur Verfügung steht! }}} == Kernelmodul hdaps installieren (alle Ubuntu-Versionen) == Der in den offiziellen Kerneln enthaltene Treiber '''hdaps.ko''' ist nicht allzu stabil, weshalb selbst die Entwickler dieses Treibers empfehlen, eine gepatchte Version aus dem Projekt [http://www.thinkwiki.org/wiki/Tp_smapi tp-smapi] {en} zu verwenden. === Auswahl des passenden Pakets === Benötigt wird das Paket * '''tp-smapi-source''' Eine für den Festplattenschutz taugliche Fassung des Pakets findet sich für * Ubuntu 9.10 * Ubuntu 8.04 in den offiziellen Ubuntu-Quellen. Die in den offiziellen Quellen von * Ubuntu 9.04 * Ubuntu 8.10 enthaltenen Pakete funktionieren entweder gar nicht (9.04) oder führen zu einem hohen Stromverbrauch (8.10). Aus diesem Grund empfiehlt sich die Verwendung der Version aus Ubuntu 9.10. Zur Vereinfachung dieser Anleitung wurden passende Backport-Pakete im [https://launchpad.net/~sargentd/+archive/thinkpad-backports PPA] {en} des Entwicklers bereitgestellt, das als [:Fremdquelle:] einzubinden ist. [[Vorlage(Fremdquelle, http://ppa.launchpad.net/sargentd/thinkpad-backports/ubuntu, jaunty intrepid, main)]] [[Vorlage(Fremdquelle-auth, key 1E5F9737)]] === Modul kompilieren und installieren === Nach der Installation des Pakets muss das Kernelmodul noch mit dem Module-Assistant kompiliert und installiert werden: {{{#!vorlage Befehl sudo m-a a-i tp-smapi }}} {{{#!vorlage Hinweis Der vorstehende Schritt ``sudo m-a a-i tp-smapi`` ist nach jedem Update des Kernels auf eine höhere Version zu wiederholen. }}} === Modulaufruf konfigurieren (nur Ubuntu 8.04) === Mit einem Editor mit Root-Rechten[4] wird die Konfigurationsdatei '''/etc/modprobe.d/hdaps.conf''' mit folgendem Inhalt erstellt: {{{ install hdaps /sbin/modprobe hdaps_ec }}} == Überwachungsdämon hdapsd installieren (alle Ubuntu-Versionen) == Für den Dämon ist das Paket * '''hdapsd''' zu installieren. Um eine zum Kernelmodul passende Version zu erhalten, sind jeweils die selben wie beim [#Auswahl-des-passenden-Pakets Kernelmodul] genannten Paketquellen zu verwenden. === Konfiguration === Die Konfiguration für den Dämon befindet sich in der Datei '''/etc/default/hdapsd''', die mit Root-Rechten editiert werden muss [4]. {{{START=yes # falls hdaps beim Systemstart mitgestartet werden soll DISK=sda # oder sdb, hda, hdb; je nach Festplatte bzw. Kernel SENSITIVITY=15 # oder eine andere Zahl, 15 ist ein guter Einstiegswert FORCEENABLE="no" # hdaps für die Platte erzwingen mit "yes" OPTIONS="" # weitere Optionen }}} {{{#!vorlage Hinweis Für Ubuntu 8.04 ist die Vorbelegung ``DISK=hda`` in ``DISK=sda`` zu ändern. }}} Der Punkt ``SENSITIVITY`` stellt die Empfindlichkeit ein. Die Option ``-a`` kann hinzugefügt werden, um bei Benutzung der internen Tastatur die Empfindlichkeit automatisch zu senken. Bei einigen Festplatten wird die HDAPS-Fähigkeit fälschlicherweise nicht erkannt; dann probehalber ``FORCEENABLE="yes"`` setzen. Nach einer Anpassung der Konfiguration ist stets der Dämon mit {{{#!vorlage Befehl sudo /etc/init.d/hdapsd restart }}} neu zu starten. = Funktionstest = Für den Test ist zunächst der bei der Installation automatisch im Hintergrund gestartete Dämon anzuhalten [5] {{{#!vorlage Befehl sudo /etc/init.d/hdapsd stop }}} und im Vordergrund wieder zu starten mit {{{#!vorlage Befehl sudo hdapsd }}} bzw. für Ubuntu 8.04 mit {{{#!vorlage Befehl sudo hdapsd -d sda -s 15 }}} Nun den Laptop sanft "schütteln"; es sollten Ausgaben ähnlich dieser erscheinen: {{{ Sun Oct 25 22:17:34 2009: Starting hdapsd Sun Oct 25 22:17:34 2009: WARNING: You did not supply any devices to protect, trying autodetection. Sun Oct 25 22:17:34 2009: Adding autodetected device: sda Sun Oct 25 22:17:34 2009: Selected interface: HDAPS Sun Oct 25 22:17:35 2009: Selected HDAPS input device: /dev/input/event21 Sun Oct 25 22:17:36 2009: parking Sun Oct 25 22:17:37 2009: un-parking Sun Oct 25 22:17:40 2009: parking Sun Oct 25 22:17:41 2009: un-parking }}} Nach dem Test den Dämon mit [[Vorlage(Tasten, ctrl+c)]] beenden und wieder im Hintergrund starten mit {{{#!vorlage Befehl sudo /etc/init.d/hdapsd start }}} == Problembehebung == Erscheint beim Funktionstest die Meldung {{{ Error! Not parked when we thought we were... (paged out and timer expired?) }}} so laufen mehrere Instanzen des Dämons, die sich gegenseitig in die Quere kommen. Wahrscheinliche Ursache ist, daß der oben aufgeführte Befehl ``sudo /etc/init.d/hdapsd stop`` zum Stoppen nicht ausgeführt wurde. Zur Behebung beendet man alle Instanzen mit {{{#!vorlage Befehl sudo killall -9 hdapsd }}} und wiederholt den Funktionstest. = Optionale Anwendungen = Um den aktuellen Zustand der Festplatte dauernd im Blick zu haben, existieren einige Panel-Applets und Visualisierungsprogramme, welche die Daten des Sensors und das Verhalten des HDAPS-Dämons überwachen und darstellen. Inzwischen sind aber auch eine Reihe eher spielerischer Anwendungen entstanden, welche auf die Ablesungen insbesondere des Sensors zurückgreifen, um durch Klopfzeichen oder Schwenken des Laptops Prozesse auszulösen und Programme zu steuern. Einige Beispiele hierzu sind [#Weitere-hdaps-basierte-Anwendungen am Ende dieses Artikels] zusammengetragen. == Panel-Anzeige des Festplattenschutzes == === Unter Gnome === Gnome-Benutzern steht das '''gnome-hdaps-applet''' zur Verfügung. Es muß aus dem Quellcode kompiliert werden, dazu wird folgendes Paket benötigt [1]: * '''libpanel-applet2-dev''' Der Quellcode des Applet kann [http://www.zen24593.zen.co.uk/hdaps/ hier] heruntergeladen werden, nach dem Entpacken [6] ist es mit folgendem Befehl zu kompilieren [7]: {{{#!vorlage Befehl gcc $(pkg-config --cflags --libs libpanelapplet-2.0) -o gnome-hdaps-applet gnome-hdaps-applet.c }}} Das Programm ist nun nach '''/usr/bin/''' zu kopieren; zudem ist in '''/usr/share/pixmaps/''' ein Unterordner '''gnome-hdaps-applet''' zu erstellen, in welchen die png-Dateien aus dem Archiv zu kopieren sind: {{{#!vorlage Befehl sudo cp gnome-hdaps-applet /usr/bin/ # Programm nach /usr/bin/ kopieren sudo mkdir /usr/share/pixmaps/gnome-hdaps-applet/ # Unterordner gnome-hdaps-applet erstellen sudo cp *.png /usr/share/pixmaps/gnome-hdaps-applet/ # png-Dateien kopieren sudo cp GNOME_HDAPS_StatusApplet.server /usr/lib/bonobo/servers/ # kopiert GNOME_HDAPS.. nach /usr/lib/bonobo/servers/ }}} Nach erfolgter Installation kann das Applet auf dem üblichen Weg [8] zum Panel hinzugefügt werden. === Unter KDE === Auch für KDE-Benutzer steht mit [http://www.kde-apps.org/content/show.php?content=41710 khdapsmonitor] {en} ein Panel-Applet zur Verfügung. Zum Kompilieren werden folgende Pakete benötigt: * '''kdelibs4-dev''' * '''libqt4-dev''' * '''automake''' Nach dem Herunterladen und Entpacken des Quellcode-Archivs ist es mit dem Linux-üblichen Dreischritt zu kompilieren und zu installieren: {{{#!vorlage Befehl ./configure --without-arts make sudo make install }}} {{{#!vorlage Hinweis Ab Ubuntu 8.10 bzw. Kernel 2.6.27 ist es erforderlich, zuvor den Quellcode mit diesem [attachment:Baustelle/Festplattenschutz/khdapsmonitor-0.1-2.patch:Patch] zu versehen. }}} Nach erfolgter Installation kann unter ''"Menü -> Rechner -> Systemeinstellungen -> Erweitert -> Autostart"'' das Programm ''"System -> KHDAPSMonitor"'' zum Autostart hinzugefügt werden [9]. === Unter Xfce === Seit Ubuntu 9.10 gibt es auch für Xfce ein Plugin zum Visualisieren des HDAPS-Status. Dazu installiert man einfach das Paket * '''xfce4-hdaps''' und fügt danach das Applet dem Panel hinzu. == Visualisierungen der Raumlage == [[Bild(hdaps-gl.png, 400, align=right)]] Es bestehen verschiedene kleine Anwendungen, die die aktuelle Raumlage des Laptops anzeigen können. Empfohlen sei hier [http://sourceforge.net/projects/hdaps/files/hdaps-gl/ hdaps-gl] {en}. Bis Ubuntu 9.04 ist das Programm über die offiziellen Ubuntu-Quellen erhältlich. Folgendes Paket muss dazu installiert werden: * '''hdaps-utils''' Ab Ubuntu 9.10 ist das Paket nicht mehr über die offiziellen Ubuntu-Quellen erhältlich. Man kann es jedoch [http://packages.ubuntu.com/jaunty/hdaps-utils hier] direkt aus den Quellen von Ubuntu 9.04 herunterladen und installieren [3]. Die Echtzeit-Visualisierung kann danach mit folgendem Befehl aufgerufen werden [5]: {{{#!vorlage Befehl hdaps-gl }}} Beim Neigen des Notebooks bleibt die Raumlage des von '''hdaps-gl''' angezeigten Notebooks stabil. Neigt es sich in die falsche Richtung, so ist [#Orientierung-der-Raumachsen-korrigieren die Orientierung der Raumachsen zu korrigieren]. Ähnliche Funktionen bieten das [http://sourceforge.net/projects/hdaps/files/hdapsgl-applet/ hdapsgl-applet] und [http://sourceforge.net/projects/hdaps/files/wmhdaps/ wmhdaps] (beide {en}). Mit '''hdaps-utils''' wird auch ein Programm namens '''hdaps-pivot''' installiert, das Lageveränderungen numerisch an die Konsole ausgibt. Es wird mit folgendem Befehl gestartet: {{{#!vorlage Befehl hdaps-pivot }}} Dieselben Funktionen bieten als Panel-Applet auch [http://sourceforge.net/projects/hdaps/files/gnome-tilt/ gnome-tilt] {en} und die [http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html GKrellM]-Erweiterung [http://sourceforge.net/projects/hdaps/files/gkhdaps/ gkhdaps] {en} . Eine spielerische Visualisierung der Laptop-Raumlage bietet [http://www.cs.cmu.edu/~ecc/software.html Gyroscope] {en}, das die Bildschirmausgabe auch bei schief stehendem Laptop horizontal belässt. == Orientierung der Raumachsen korrigieren == {{{#!vorlage Hinweis Die hier beschriebene Konfiguration ist für eine korrekte Funktion nur des Festplattenschutzes nicht notwendig! }}} Das Kernelmodul '''hdaps''' enthält eine Tabelle mit den richtigen Voreinstellungen für die Orientierung der Raumachsen vieler ThinkPad-Modelle. Für eine Änderung dieser Voreinstellungen (auch im Fall unbekannter Modelle) ist entweder beim Laden des Kernelmoduls '''hdaps''' der Modul-Parameter ``invert`` oder zur Laufzeit das Sysfs-Attribut '''/sys/devices/platform/hdaps/invert''' einzustellen. ||<-3 rowclass="titel" tablestyle="width: 30%; text-align: right; float: right; margin-left: 15px"> Parameter invert || || Wert || R || P || || 0 || X || Y || || 1 || -X || -Y || || 2 || -X || Y || || 3 || X || -Y || || 4 || Y || X || || 5 || -Y || -X || || 6 || -Y || X || || 7 || Y || -X || Der Parameter ``invert`` kann die Werte 0 bis 7 annehmen. In der nebenstehenden Tabelle geben X und Y die Ausgänge des Sensors, R ein seitliches Neigen des Notebooks und P ein Neigen nach vorne oder hinten an. Am einfachsten ermittelt man die richtige Einstellung durch Ausprobieren: {{{#!vorlage Befehl sudo sh -c "echo W > /sys/devices/platform/hdaps/invert" hdaps-gl }}} Wobei 'W' durch den gewünschten Wert zu ersetzen ist. Nach jeder Änderung des Parameters muß '''hdaps-gl''' neu gestartet werden. Soll die so ermittelte Einstellung dauerhaft eingerichtet werden, ist mit einem Editor mit Root-Rechten[4] die Konfigurationsdatei '''/etc/modprobe.d/hdaps.conf''' mit folgendem Inhalt zu erstellen: {{{ options hdaps invert=W }}} Für Ubuntu 8.04 ergänzt man die [#Modulaufruf-konfigurieren-nur-Ubuntu-8-04 oben] erstellte Datei mit folgender Zeile: {{{ options hdaps_ec invert=W }}} = Links = == Allgemeine Informationen == * [http://www.pc.ibm.com/presentations/us/thinkvantage/56/index.html?shortcut=aps& APS-Video von IBM] {en} * Die Einträge im [http://www.thinkwiki.org ThinkWiki] zu [http://www.thinkwiki.org/wiki/Active_Protection_System APS], [http://www.thinkwiki.org/wiki/HDAPS HDAPS] und [http://www.thinkwiki.org/wiki/Tp_smapi tp-smapi] (alle {en} ) * [https://sourceforge.net/mailarchive/forum.php?forum_name=hdaps-devel Mailingliste der Entwickler des Linux-Treibers] {en} * Technische Daten zum Sensor [http://www.analog.com/en/prod/0,2877,ADXL320,00.html http://www.analog.com/en/prod/0,2877,ADXL320,00.html] {en} == Weitere HDAPS-basierte Anwendungen == === Kommandos auslösen über den HDAPS-Sensor === * Arbeitsfläche wechseln durch Antippen des Laptops: [http://weblogs.mozillazine.org/gerv/archives/2006/09/stablilised_smackpad.html SmackPad] {en} bzw. [http://www.gnome.org/~fherrera/gtollina.c gtollina] {es} und [http://people.ksp.sk/~mic/?menu=32&file=rotate.py rotate.py] {sk} für [:Compiz:]-Benutzer. * Beliebige Befehle auslösen, Programme starten, Passworteingaben ersetzen durch [http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw01Knock-Knock Klopfzeichen an den Bildschirmrand] {en} oder durch [http://www.ibm.com/developerworks/opensource/library/os-linuxthinkpad/ Schwenken des ganzen Laptops] {en} === Programme und Programmsteuerungen === * Spiele wie [http://developer.berlios.de/projects/ppracer/ Planet Penguin Racer] {en} und [http://neverball.org/ Neverball] {en} über Laptop-Schwenkungen steuern: [http://www.almaden.ibm.com/cs/people/marksmith/sdl.html Accelerometer Game Control] {en} * Einen Diebstahl-Alarm einbauen: [http://www.thinkwiki.org/wiki/Script_for_theft_alarm_using_HDAPS] {en} und [http://old.lukytux.net/hdaps.php] {de} ---- # tag: Hardware, System