Linux als SOHO-Server
für Linux- und Windows-Clients |
Kapitel:
|
Gerade heutzutage in der multimedialen Zeit, wo es auch unter Linux genügende Applikationen hierfür gibt, ist es vielleicht interessant mit einer Fernbedienung einen Linux-Rechner zu steuern. Auf der vorliegenden Seite wird gezeigt wie mit einer handelsüblichen Infrarot-Fernbedienung, z.B. die vom Fernseher, ein Linux-Systems gesteuert werden kann. Dabei kommt das Projekt 'LIRC' (Linux Infrared Remote Control) zum Einsatz. 'LIRC' umfasst einen kompletten Satz von Programmen/Tools, inklusiv der Treiber um Infrarot-Signale empfangen und senden zu können. Auf der vorliegenden Seite wird nur auf das Empfangen und Auswerten von IR-Signalen eingegangen. LIRC-HardwareAls Hardware (Empfänger/Sender) werden von 'LIRC' verschiedene Typen (Hersteller), mit unterschiedlichen Schnittstellen unterstützt. Eine Liste von fertigen IR-Geräten ist auf der Homepage von 'LIRC' zu finden. Auch ist auf der 'LIRC'-Homepage die Rede von 'home-brew-hardware', dabei handelt es sich um Hardware, die selbst aufgebaut (zusammen gelötet) wurde. Entsprechende Vorschläge sind ebenfalls auf der Homepage zu finden. Es ist relativ einfach, selber einen passenden Empfänger mit ein paar Bauteilen zu bauen. Hier ein Beispiel:
Auf dem linken Bild ist die Schaltung eines IR-Empfängers abgebildet.
Primäres Bauteil ist der Empfänger (IC1) selbst (TSOP 1738, von der Fa.: 'Vishay' ), der von Haus
aus ein serielles Signal liefert. Der Empfänger muss noch für die serielle
Schnittstelle des PCs adaptiert werden. Die Adaption besteht dabei nur
aus einen Spannungsregler (IC2), einer Diode (D1), einen Kondensator (C1) und
einen Widerstand (R1). Installation von LIRCFür 'LIRC' sind unter Debian mittels 'apt-get install' folgende Pakete zu installieren: 'lirc', 'lirc-modules-source' und falls eine 'X'-Oberfläche vorhanden ist kann auch 'x-lirc' installiert werden. Der schwierigste Teil bei der Installation von 'LIRC' ist das Erzeugen der relevanten Kernel-Module für den IR-Empfänger, die aus den 'lirc-modules-source' erstellt werden. Zur Erstellung der Module sollten auch die passenden Kernel-Quellen installiert sein. Bei der Installation vom Pakets 'lirc' sind einige Fragen zu beantworten, hier der Dialog am Beispiel des oben aufgeführten IR-Empfängers, angeschlossen an der ersten seriellen Schnittstelle:
Der Dialog kann auch nach der Installation mit 'dpkg-reconfigure lirc' erneut durchlaufen werden. Bei der Installation von 'lirc-modules-source' müssen via Dialog weitere Fragen beantwortet werden:
Auch der Dialog für die Kernel-Module kann später mit: 'dpkg-reconfigure lirc-modules-source' erneut durchlaufen werden. Nun kann, wie oben im Screenshoot beschrieben, versucht werden die Kernel-Module zu generieren:
Nach der Generierung sollten ein fertiges Debian-Paket im Verzeichnis '/usr/src/' vorliegen, welches mit 'dpkg -i ...' installiert werden kann. Danach kann händisch versucht werden die Kernel-Module zu laden:
Sollte das Laden des 'lirc_serial' scheitern, z.B. mit der Meldung: 'Device or resource busy', liegt das daran, dass die Unterstützung für die serielle Schnittstelle fest in den Kernel reinkompiliert wurde und aktiviert ist. In diesem Fall hilft ein:
Beim Aufruf von 'setserial' ist das 'Device' entsprechen der Schnittstelle anzugeben. Soll der serielle Treiber bei jeden Systemstart deaktiviert bleiben, so kann dieses mit 'dpkg-reconfigure setserial' festgelegt werden, im folgenden Dialog ist dann der Punkt 'manual' anzuwählen. Weiterhin ist in der Datei: '/var/lib/setserial/autoserial.conf' dieses für die relevante Schnittstelle einzutragen bzw. abzuändern:
Damit bei jeden Systemstart die 'LIRC'-Module automatisch mitgeladen werden, ist nachzuprüfen ob dieses in der Datei: '/etc/lirc.hardware.conf' eingetragen ist:
Es sollte 'LOAD_Modules=true' eingestellt sein (gelbe Markierung). Unter 'MODULE=' sind die benötigten Module für den jeweiligen IR-Empfänger aufzuführen. Die Datei wird beim Start von '/etc/init.d/lirc' ausgewertet. Änderungen in der Datei 'hardware.conf' können auch mit: 'dpkg-reconfigure lirc' erfolgen. Ein erster Test, ob der Empfänger arbeitet und ob die Konfiguration stimmt, kann mit dem zu 'LIRC' gehörenden Tool 'mode2' erfolgen. Das Tool 'mode2' zeigt die Impuls-/Pausen-Länge des Infrarot-Signals an, hierzu eine Beispielausgabe:
Alternativ kann, falls man sich auf einen X-Windows-System befindet, 'xmode2' zur Überprüfung genutzt werden. 'xmode2' stellt die Impuls-/Pausen-Länge des IR-Signals von der Fernbedienung in einen separaten Fenster in graphischer Form da. Konfiguration des LIRC-DämonsNachdem sichergestellt ist, das die Treiber korrekt installiert sind und arbeiten, kann als nächstes eine 'LIRC'-Konfigurationsdatei 'lircd.conf' passend zur Fernbedienung im Verzeichnis '/etc/lirc/' hinterlegt werden. Dabei kann zunächst geprüft werden, ob es für die Fernbedienung schon eine fertige Konfigurationsdatei gibt, falls dieses zutrifft, kann diese unter den Namen '/etc/lirc/lircd.conf' hinterlegt werden. Soll eine unbekannte Fernbedienung bekannt gemacht werden, so kann diese mit dem Lernprogramm 'irrecord' geschehen. 'irrecord' ist auf der Konsole aufzurufen, als Parameter ist der Name der Datei mitzugeben, in der die Konfiguration gesichert werden soll, z.B.:
Nach dem Start fordert das Programm auf, Tasten auf der Fernbedienung zu betätigen. Wenn das klappt, startet der Lernmodus, in dem jeder Taste einen Namen zugeordnet wird und dieser anschließend mit der Fernbedienung bestätigt werden muss um so die Zuordnung zu bekommen. Zum Abschluss müssen noch einige Tasten schnell betätigen werden, damit sich 'LIRC' auf die Wiederholrate der Fernbedienung einstellen kann. Hier ein Beispiel einer solchen aufgezeichneten Konfigurationsdatei:
In der abgebildeten Konfigurationsdatei sind nur vier Buttons berücksichtigt, siehe gelbe Markierung ('red', 'green', 'yellow' und 'blue'). Nach Abschluss der Lernphase ist die erstellte Datei unter den Namen 'lircd.conf' in das Verzeichnis '/etc/lirc/' zu kopieren:
Anschließend ist der 'LIRC'-Dämon erneut zu starten:
Mit dem zum 'LIRC' gehörenden Programm 'irw' kann die Funktionalität der Erkennung nachgewiesen werden. Wenn alles gut geht, dann schreibt 'irw' bei jedem Tastendruck auf die IR-Fernbedienung den dazugehörigen Code raus, der bei der Taste mit 'irrecord' zugewiesen wurde. Hierzu eine Beispielausgabe:
Anwendungsorientierte KonfigurationUm mit dem IR-Empfänger inklusiver Kernel-Module auch Anwendungen steuern zu können, muss weiter konfiguriert werden. Dabei kann man grob zwischen zwei Arten der Applikations-Steuerung unterscheiden. Zum einen kann mittels eines bestimmter Tasten Ereignisse eine bestimmte Aktion direkt ausgelöst werden ('lircrc'). Weiterhin kann auch, sofern eine X-Oberfläche vorhanden ist, die Maus-Funktionalität nachgebildet werden ('lircmd'). Im folgenden werden kurz beide Arten vorgestellt. lircrcUm mit der Fernbedienung auf Tastendruck Applikationen steuern zu können ist eine Konfigurationsdatei 'lircrc' zu erstellen. Die Konfigurationsdatei 'lircrc' kann als benutzergültige Datei im 'home'-Verzeichnis ('~/.lircrc') oder als systemweite Konfigurationsdatei unter '/etc/lirc/lircrc') erstellt werden. Falls keine '~/.lircrc' vorhanden ist, wird die systemweite Konfigurationsdatei benutzt. Die Konfiguration innerhalb der Datei ist relativ einfach und leicht zu durchschauen, da es nur wenige Schlüsselworte gibt. Hier ein triviales Beispiel zu Konfiguration:
Aufgabe der Konfigurationsdatei ist es, bei einem Tastendruck auf der
Fernbedienung, unter Hinzunahme eines Programms, eine bestimmet Aktion
auszuführen. Dabei ist jeder Taste ein eigener Block zuzuordnen. Nach Abspeichern der 'lircrc'-Datei sollten die benutzten Programme 'irexec' und 'irxevent' am besten im Hintergrund laufen, dazu kann folgendes eingegeben werden:
Sofern 'irxevent' genutzt wird, muss noch das Paket 'lirc-x' auf dem System installiert sein. Weitere detaillierte Informationen bezüglich 'lircrc', 'irexec' und 'irxevent' können in der Dokumentation oder den Manualseiten nachgelesen werden. lircmdEinen anderen Ansatz als Kommandos auszuführen oder Tasten auf der Tastatur zu simulieren verfolgt 'lircmd' ('LIRC'-Mouse-Daemon). Das Programm bietet die Möglichkeit die Bewegungen oder Tasten der Maus zu emulieren. Auch der Maus-Dämon benötigt eine Konfigurationsdatei, die im Verzeichnis '/etc/lirc/' als Datei 'lircmd.conf' vorliegen sollte. Auch die Konfiguration von 'lircmd.conf' ist recht simpel, hierzu wieder ein Beispiel:
Zunächst ist der Maus-Typ mit 'PROTOCOL' festzulegen, mögliche Werte sind
hier: 'MouseSystems', 'IntelliMouse' und 'IMPS/2'. Weiterhin ist noch die 'X11'-Konfigurationsdatei zu erweitern. Für einen 'X11'-Server der Version '4.x', hier unkommentiert die notwendigen Änderungen:
In der Sektion 'ServerLayout' ist eine Zeile für das 'inputDevice "LIRC-Mouse"' einzufügen und es ist dann eine neue Sektion 'InputDevice' zu erstellen. Wichtig vor allem ist, die Angabe des korrekten Maus-Treibers. Damit nun alles funktioniert muss der 'X11'-Server neu gestartet werden, z.B. durch 'restart' des Systems. Auch ist dafür Sorge zu tragen, dass der Mouse-Dämon läuft, z.B. durch:
kann dieser im Hintergrund auf der Kommandozeile gestartet werden. Danach sollte sich der Mauszeiger unter 'X11' mit der Fernbedienung steuern lassen. AnmerkungenAuch das Senden von IR-Signalen ist mit 'LIRC' und entsprechender Hardware möglich, eine Beschreibung hierzu ist auf der Homepage von 'LIRC' zu finden. Weiterhin kann auch das Maus-Interface für die Konsole 'gpm', mittels 'LIRC' gesteuert werden, auch hier ist die Vorgehensweise auf der Homepage beschrieben. Zu beachten ist auch, dass bei jedem Kernel-Update die 'LIRC'-Module neu generiert werden müssen. Sollte sich 'irrecord' mit der Meldung: 'Something went wrong' beschweren und keine Konfigurationsdatei generieren, so kann noch als zusätzlichen Parameter '--force' beim Aufruf mit angeben werden um ein Konfigurationsdatei im 'RAWMODE' zu erhalten. Weitere Infos
letzte Änderung: 01. Januar 2014 |
Copyright © 2004 Norbert Eusterholz |