Diese Anleitung ist für jene gedacht, die LIRC von Grund auf besser verstehen wollen.
Es ist weniger eine Anleitung zur Installation von Lirc im XBMC sondern eine Erklärung, wie diese zusammenarbeiten.
Erforderliche Grundkenntnisse:
- LIRC installieren und konfigurieren http://wiki.ubuntuusers.de/LIRC
- Dateien mit Root-Rechten bearbeiten
LIRC kann einen durchaus in die Verzweifelung treiben.
Generell ist das Ziel ja eindeutig:
Wenn ich die Taste "Gelb" drücke, dann soll im XBMC die Information des Videos angezeigt werden.
Aber schon bei diesem simplen Gedanken kommt es zu Überschneidungen.
Soll denn die Taste nur im Bereich "Video" die Funktion "VideoInfo" haben, oder soll die Taste auch die Funktionen:
- Systeminfo im Home-Screen
- AlbumInfo im Musikbereich
haben?
Somit haben wir schon 3 Wünsche an eine Taste.
Um die Funktionsweise zu erläutern, nehme ich in dieser Erklärung den härtesten Fall an:
Eine Universalfernbedienung mit einer beliebigen Vorlage.
Es gibt also keine Vorgefertigten *.conf Dateien.
-
Die Infratotbefehle aus der Fernbedienung sind für den PC nur Impulse auf einem Empfänger. (Stichwort: mode2 http://wiki.ubuntuusers.de/LIRC)
Er kann damit von Haus aus rein garnichts anfangen.
Um das Ziel "Gelbe Taste->XBMC-Homescreen->Systeminfo" zu erreichen, müssen einige Stationen abgearbeitet werden.
Das System bekommt ein Signal und vergleicht dieses mit dem Inhalt der lircd.conf.
Signal 0x8BEE -> Gelb
Das XBMC schaut in der Lircmap.XML nach dem Befehl "Gelb" und übersetzt diesen mit dem Befehl "Info".
Dann wird in der Remote.XML nach dem Befehl "Info" in der jeweiligen GUI-Ebene nachgeschaut und dieser in die dort hinterlegten Befehle angewendet.
Somit müssen immer mindestens 3 Dateien aufeinander abgestimmt sein.
lircd.conf->Lircmap.xml->remote.xml
Schaut man sich die klassische [definition='3','0']keymap[/definition].xml an, dann bemerkt man schnell, dass die Befehle im Grunde bereits alle vergeben sind.
Für den Großteil der Nutzer sollten die auch reichen. http://wiki.xbmc.org/?title=Keymap.xml
Ungefähr in der Mitte kommt die "Remote Section".
Auf der linken Seite der Tabelle sieht man alle direkt möglichen Button-Strings.
Der Button-String ist nichts weiter als die Position2 in unserer Befehlskette: die Lircmap.XML
Man muss sich nicht durch die anzahl der Strings in der [definition='3','0']keymap[/definition].xml beschränken lassen.
Die Kombination aus den Befehlen der Keymap.xml und eigenen Buttons, die eben nicht dort aufgeführt sind, ist auch Problemlos möglich. Es kostet nur ein wenig mehr Zeit.
Es sind technisch betrachtet 256 Tasten möglich.
--
Wer noch mehr Buttons benötigt, als die aus der [definition='3','0']keymap[/definition].xml Vorlage, der muss diese als OBC-Buttons in der [definition='3','0']keymap[/definition].xml angeben, Unterhalb der Sektion <universalremote>:
---
Somit ergibt sich immer folgende Befehlskette:
Ich muss einen Namen für eine Taste vergeben (lircd.conf), die dann in der Lircmap.xml PASSEND zum XBMC-System übersetzt wird und dann in der Remote.xml mit einer Funktion des XBMC belegt werden kann.
Es gibt (noch) keine direkte Lirc->XBMC Methode. Der Übersetzer Lircmap.XML ist notwendig.
--
LIRC installieren. (um eine funktionierende lircd.conf zu erhalten)
Eine sehr gute LIRC Anleitung ist auf http://wiki.ubuntuusers.de/LIRC zu finden.
(Eine Installationsanleitung passend zum erwähntem Atric-IR-Einschalter findet sich hier: [HowTo] Atric IR-Einschalter unter Ubuntu einrichten )
Ich werde die Installation hier nicht noch mal komplett durchgehen, jedoch etwas zu der Methode sagen.
Bei der Installation wird man bereits nach einer Hardware gefragt.
Meist ist dies zumindest für den Empfänger eindeutig, da man entweder einen USB oder einen ComPort Empfänger hat.
Bei einem ComPort Receiver wie dem von Artic http://www.atric.de/IR-Einschalter/index.php wird über dmesg ein "Low-Receiver" an ttys0 angezeigt.
Um zu testen, ob der Empfänger reagiert, sollte man erst mit mode2 testen, ob überhaupt irgendwas ankommt.
mode2 zeigt alles an, was es an Signalen über den Empfänger kommt.
Unabhängig von irgendeiner conf Datei.
Kommt nichts an, dann kann das z.B. an den falsche geladenen Modulen liegen. (REMOTE_MODULES="lirc_serial")
Kommt über mode2 etwas an, dann geht es weiter mit irrecord.
irrecord benötigt einen Pfad und einen Treiber.
irrecord erklärt sich von alleine. Man klickt sich so durch seine Fernbedienung, bis man nach den Tastennamen gefragt wird.
Ich empfehle, die Tastennamen so zu benenennen, wie diese auch auf der Fernbedienung benannt sind.
Auch wenn das Ziel ist, dass die Taste "Gelb" am Ende den Befehl "Info" ausführt, ist es einfacher, die Taste erst mal "Gelb" zu nennen.
Ist man durch die Prozedur durch, schaut man sich die erstellte lircd.conf an.
Sehr gut ist, wenn hinter "flags" ein RC5|CONST_LENGTH steht.
Noch als "gut" würde ich RC6 einstufen.
SPACE_Encoded und ganz besonders RAW sind nicht zu empfehlen.
Alles im allem könnte die dann so aussehen:
begin remote
name URC_7960
bits 13
flags RC5|CONST_LENGTH
eps 30
aeps 100
one 922 832
zero 922 832
plead 936
gap 112763
toggle_bit_mask 0x800
begin codes
Power 0x120C
Video 0x123F # 16:9
Prev 0x1232 # |<
Stop 0x1236
Next 0x122E # >|
FastRew 0x122C
Play 0x1235
FastFwd 0x1234
List 0x022F
Pause 0x1229
Record 0x1237
Volume+ 0x1210
Mute 0x120D
Volume- 0x1211
Up 0x0210
Down 0x0211
Left 0x0215
Right 0x0216
Ok 0x0217
Channel+ 0x1220
Channel- 0x1221
Red 0x022B
Green 0x022C
Yellow 0x022D
Blue 0x022E
Info 0x020F
Menu 0x0212
Epg 0x122F # guide
Text 0x123C # mce
Popup 0x1231 # pop up X
Back 0x1222 # auch die Taste zwischen CHANNELUP und CHANNELDOWN
1 0x1201
2 0x1202
3 0x1203
4 0x1204
5 0x1205
6 0x1206
7 0x1207
8 0x1208
9 0x1209
0 0x1200
end codes
end remote
Alles anzeigen
Sollte da wirklich RAW in der Zeile stehen, dann nehmt eine andere Fernbedienung.
Um genau zu sein, würde ich so lange testen, bis ich auf R5 gelandet bin.
Das erspart einem Probleme mit doppelt Ausgeführten Befehlen.
Ich habe noch Comments eingefügt, da ein paar Tasten den gleichen Befehl lieferten.
Also Comments sind durchaus möglich und auch wirklich hilfreich.
Man kann sich hier auch bereits Entsprechungen zur Lircmap.xml eintragen.
Ist das so weit gelaufen, sollte man nach einem Neustart von lircd eine "logische" Ausgabe auf den irw-Befehl bekommen.
Beim Druck auf die Taste "||" müßte ein "Pause URC_7960" erscheinen.
Entsprechend sollte man dann alle Tasten durchtesten.
So bekommt man auch schnell heraus, ob evtl. Tasten dabei sind, die identische Befehle liefern.
Dazu nutzt man dann die Comments...
Die lircd.conf ist geschrieben. Dann kommt nun der Übersetzer ins Spiel.