Zusätzlichen Tasten einer Tastatur Funktionen zuweisen: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Rückfahrkarte eingebaut)
(Quellen und weiterführende Links)
Zeile 1: Zeile 1:
Hi Leute
+
Author: [http://www.linux-club.de/profile.php?mode=viewprofile&u=2025 PrinzEisenherz1]
  
Nachdem ich bei der Konfiguration meines Keyboards per linEAK auf einige Probleme aber wenig Hilfe und Infos im Internet gestossen bin, habe ich die Prozedur mal als kleines Tutorial zusammengefasst.
+
== Einleitung ==
Über Korrekturen und Ergänzungen würde ich mich natürlich sehr freuen.
 
  
 +
Dieses Howto behandelt die Installation und Konfiguration von Lirc unter SuSE.<br>
 +
Es wurde erfolgreich unter SuSE 10.0 - 10.2 getestet und dürfte auch bei den 9er-Versionen funktionieren.<br>
 +
Dieses Howto beinhaltet folgende Fernbedienungsvarianten:
 +
* MEDION X10 Funkfernbedienung (USB)
 +
* IR-Empfänger über serielle Schnittstelle (COM)
 +
wobei der Schwerpunkt hier bei MEDION X10 liegt.
  
== INSTALLATION ==
+
== Vorbereitende Maßnahmen ==
  
Hier hab' ich mich erstmal auf YaST verlassen, und einfach die Pakete "lineakd", "lineak_defaultplugin" und "lineak_kde" installiert.
+
Als erstes muß man mit YAST, Smart oder vergleichbaren Paketmanager folgende Pakete installieren:<br>
Man sollte darauf achten, dass man die Pakete alle aus der gleichen Quelle installiert, weil sonst evtl. das Zusammenspiel nicht so recht klappt.
+
* lirc
Das Paket "lineakconfig" hab' ich diesmal auch gleich weggelassen, weil das bei meinen früheren Versuchen ohnehin nicht funktionierte.
+
* lirc-kmp-''<Kerneltyp>''<br>
 +
Bei ''lirc-kmp-<Kerneltyp>'' handelt es sich um ein Paket mit zusätzlichen Treibermodulen. Hier ist es wichtig das es zum installierten Kernel passt.<br>
 +
Sollte man nicht wissen welcher Kernel installiert ist, dann kann man dies auf der Konsole mit ''uname -r'' herausfinden.<br>
 +
z.B. <br>
 +
2.6.18.2-34-default
 +
Bei diesem Beispiel handelt es sich um einen default-Kernel. Also muß man in diesem Fall das Paket ''lirc-kmp-default'' auswählen.<br>
 +
<br>
  
 +
== Installation MEDION X10 ==
  
== VORBEREITUNG ==
+
USB-Funkempfanger anschließen und mit ''lsmod'' prüfen welche Module vom System automatisch geladen werden.<br>
 +
z.B
 +
# lsmod
 +
snd_seq_device          7948 2 snd_seq,snd_rawmidi
 +
snd                    50692 12 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_via82xx,snd_ac97_codec, ...                                                                       
 +
soundcore                    8672 1 snd
 +
uhci_hcd            27280 0
 +
usbcore              108804  5 ati_remote,hci_usb,ehci_hcd,uhci_hcd
 +
ide_cd                35360  0
 +
cdrom                  32288  1 ide_cd      <br>
 +
Wie man hier erkennen kann wird automatisch das Treibermodul ''ati_remote'' geladen. Dies ist aber nicht das passende für den MEDION X10. <br>
 +
Um das Modul zu entladen gibt man als Root in der Konsole folgendes ein:
 +
rmmod ati_remote
 +
Damit das Modul ''ati_remote'' beim nächsten Neustart bzw. beim erneuten anstecken des USB-Empfängers nicht wieder automatisch geladen wird, setzt man es in die Blacklist. <br>
 +
Die Blacklist befindet sich um Unterordner
 +
/etc/modprobe.d/
 +
Dazu mit einem Editor die Datei blacklist editieren.
 +
# mcedit /etc/modprobe.d/blacklist
  
1. Um zu überprüfen, ob für mein Keyboard (Logitech Cordless Desktop S 510) bereits eine Definition vorhanden ist öffne ich (als normaler Benutzer) eine Konsole und lass mir alle bekannten Keyboards auflisten:
+
Dort folgenden Eintrag hinzufügen
  
  lineakd -l | less
+
  blacklist ati_remote
  
oder (weil die Liste sehr lang ist) nur die von Logitech:
+
Als nächstes läd man die benötigten Module für MEDION X10:
 +
modprobe lirc_dev
 +
modprobe lirc_atiusb
  
  lineakd -l | grep -i logitech
+
Überprüfen ob die Module geladen wurden:
 +
  # lsmod | grep lirc | grep -v
 +
lirc_atiusb             16160 0
 +
lirc_dev                13284 1 lirc_atiusb
 +
usbcore                    108804 5 lirc_atiusb,hci_usb,ehci_hcd,uhci_hcd
  
Ich hatte Pech, mein Keyboard war nicht dabei.
+
Wie man erkennen kann wurden beide Module erfolgreich geladen.<br>
Alle, die hier Glück haben, notieren sich das Kürzel, das vor dem Namen des entsprechenden Keyboard angezeigt wird und können direkt zum Abschnitt [[#KEYBOARD KONFIGURIEREN|KEYBOARD KONFIGURIEREN]] springen.
+
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis ''/etc/sysconfig/''<br>
 +
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
  
2. Man könnte jetzt natürlich nachschauen, ob sich ein ähnliches Keyboard in der Liste befindet und die entsprechende Definition ausprobieren. Dabei kann ein Blick in /etc/lineakkb.def hilfreich sein, da man hier sieht, welche Tasten für welches Keyboard definiert sind. Das kann aber auch sehr langwierig werden, und es ist fraglich, ob das die schnellere / einfachere Methode ist.
+
# mcedit /etc/sysconfig/lirc
Ich hab' mich entschlossen eine eigene Definition zu schreiben.
 
  
3. Erstmal machen wir uns eine Liste mit den Bezeichnungen aller Sondertasten unseres Keyboards. Am besten legt man die gleich dreispaltig an und schreibt die Namen der Tasten in die erste Spalte. Die Bezeichnungen sind prinzipiell frei wählbar, aber es ist bestimmt nicht verkehrt, sich an den anderen Definitionen zu orientieren (siehe /etc/lineakkb.def).
+
Dort muss man dann folgende Änderungen durchführen:
  
== KEYCODES BESTIMMEN ==
+
LIRCD_DEVICE=""
 +
ändern auf
 +
LIRCD_DEVICE="/dev/lirc0"
  
1. Wieder in der Konsole: ''xev'' eingeben. Damit werden für jedes Tastatur- bzw. Mouse-Ereignis diverse Informationen angezeigt. Uns interessiert davon nur der "keycode" unserer Sondertasten.
+
und dann noch
  
2. Systematisch drücken wir jetzt alle Sondertasten der Reihe nach, und tragen jeweils den Zahlenwert, der nach dem Wort "keycode" angezeigt wird zur entsprechenden Taste in der 3. Spalte unserer Liste ein. Bei manchen Tasten wird eventuell gar nix angezeigt; um die werden wir uns anschliessend kümmern.
+
LIRC_MODULE=""
 +
ändern auf
 +
LIRC_MODULE="lirc_atiusb"
  
3. Wir schließen ''xev'', indem wir das kleine Fensterchen im Vordergrund schließen, und wechseln in der Konsole zu root (su) und machen uns ein "Überwachungsfenster" auf:
+
Dadurch wird beim starten des Runlevels ''lirc'' auch gleich das Modul ''lirc_atiusb'' mitgeladen.<br><br>
  
<code>tail -f /var/log/messages</code>
+
== Installation eines Empfängers einer Hauppauge TV Karte ==
  
Damit ermitteln wir gleich die sogenannten "scancodes" für jede Taste, die zuvor keinen Keycode hatte.
+
Dieser Abschnitt behandelt die Konfiguration von lirc um einen Hauppauge TV Karten IR Empfänger benutzen zu können.
  
4. Für jede Taste ohne Keycode, die wir jetzt drücken, zeigt unser Überwachungsfenster u.a. eine Zeile nach dem folgenden Muster an:
+
Voraussetzungen: lirc ist installiert, lirc kernelmodule sind installiert (Vorgehensweise oben beschrieben).
  
<code>kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known</code>
+
Zunächst muss man ein Paar Änderungen an der Konfigurationsdatei vornehmen.
 +
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
  
Hier interessiert uns die hexadezimale Zahl vor "<keycode>", in unserem Beispiel "e03b".
+
# mcedit /etc/sysconfig/lirc
Das machen wir nun für alle nicht belegten Tasten und tragen die Werte in die 2.Spalte unserer Tabelle ein. Mit ''CTRL+C'' stoppen wir die Überwachung in unserer Konsole.
 
  
5. Jetzt brauchen wir unbenutzte Keycodes, die wir unseren eben ermittelten Scancodes zugordnen können. Die finden wir in /etc/defkeymap.map. Am Besten schreiben wir sie in eine Datei in unseren .lineak-Ordner im home-Verzeichnis:
+
Dort muss man dann folgende Änderungen durchführen:
  
<code>grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt</code>
+
LIRCD_DEVICE=""
 +
ändern zu
 +
LIRCD_DEVICE="/dev/lirc0"
  
Mit einem Texteditor können wir in dieser Datei nun alle unbelegten Keycodes nachschauen.
+
LIRC_MODULE=""
 +
ändern zu
 +
LIRC_MODULE="lirc_i2c"
  
6. Wir ordnen unseren Scancodes (2. Spalte unserer Liste) beliebige freie Keycodes aus der eben erstellten Datei zu (als root):
+
Nun brauchen wir eine lircd.conf die zu Hauppauge TV-Karten passt.
 +
Wir nehmen die folgenden Zeilen und speichern sie in Datei dieser Datei.
 +
/etc/lircd.conf
  
<code>setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN</code>
+
 +
 
 +
begin remote
  
 +
  name  hauppauge_pvr
 +
  bits          13
 +
  flags RC5|CONST_LENGTH
 +
  eps            30
 +
  aeps          100
  
7. Jetzt wechseln wir wieder zum normalen Benutzer und ermitteln mit ''xev'' (siehe Punkt 1. und 2.) nun die Keycodes die unter X unseren "toten" Tasten zugeordnet wurden (Achtung, die unterscheiden sich von denen, die wir per ''setkeycodes'' zugewiesen haben!).
+
  one          969  811
Die Ergebnisse tragen wir in unsere 3.Spalte ein, die damit dann komplettiert wird.
+
  zero          969  811
 +
  plead        1097
 +
  gap          114605
 +
  toggle_bit      2
  
== DEFINITION SCHREIBEN  ==
 
  
1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition:
+
      begin codes
 +
          Power                    0x00000000000017FD
 +
          Go                      0x00000000000017FB
 +
          1                       0x00000000000017C1
 +
          2                        0x00000000000017C2
 +
          3                        0x00000000000017C3
 +
          4                        0x00000000000017C4
 +
          5                        0x00000000000017C5
 +
          6                        0x00000000000017C6
 +
          7                        0x00000000000017C7
 +
          8                        0x00000000000017C8
 +
          9                        0x00000000000017C9
 +
          Back/Exit                0x00000000000017DF
 +
          0                        0x00000000000017C0
 +
          Menu                    0x00000000000017CD
 +
          Red                      0x00000000000017CB
 +
          Green                    0x00000000000017EE
 +
          Yellow                  0x00000000000017F8
 +
          Blue                    0x00000000000017E9
 +
          Ch+                      0x00000000000017E0
 +
          Ch-                     0x00000000000017E1
 +
          Vol-                    0x00000000000017D1
 +
          Vol+                    0x00000000000017D0
 +
          Ok                      0x00000000000017E5
 +
          Mute                    0x00000000000017CF
 +
          Blank                    0x00000000000017CC
 +
          Full                    0x00000000000017FC
 +
          Rewind                  0x00000000000017F2
 +
          Play                    0x00000000000017F5
 +
          Forward                  0x00000000000017F4
 +
          Record                  0x00000000000017F7
 +
          Stop                    0x00000000000017F6
 +
          Pause                    0x00000000000017F0
 +
          Replay                  0x00000000000017E4
 +
          Skip                    0x00000000000017DE
 +
      end codes
  
  sed -n '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def
+
  end remote
  
 +
Nun laden wir testweise das Kernelmodul. Als root in einer Konsole geben wir folgendes ein.
 +
#modprobe lirc_i2c
  
2. Diese Datei öffnen wir mit einem Texteditor. Sie ist nach folgendem Muster aufgebaut:
+
Nun können wir lirc mit folgendem befehl starten.
 +
#lircd
  
  [LTCDXX]
+
Nun testen wir einmal ob ein Signal ankommt
      brandname = "Logitech"
+
#irw
      modelname = "Cordless Desktop XX"
+
und tippen ein bischen auf der Fernbedienung rum.
      [KEYS]
 
        Taste1 = 123
 
        Taste2 = 345
 
        Taste3 = 567
 
        Taste4 = 789
 
      [END KEYS]
 
  [END LTCDXX]
 
  
 +
== Installation IR-Empfänger über serielle Schnittstelle (COM) ==
  
3. Jetzt ändern wir diese Datei so, dass sie unser Keyboard repräsentiert.
+
Dieser Abschnitt behandelt die Installation eines IR-Empfängers über serielle Schnittstelle (COM).<br>
Dazu tragen wir anstelle von "LTCDXX" ein passendes Kürzel ein (aber keines, das schon in /etc/lineakkb.def vorkommt. Am besten mit lineakd -l überprüfen), ändern die Einträge für "brandname" und "modelname" entsprechend unserem Keyboard. Anschließend ersetzen wir Taste1-Taste4 mit unseren Tasten-Keycode-Paaren (1. und 3.Spalte unserer Liste). Speichern nicht vergessen.
+
Solch ein Empfänger kann mit etwas Geschick und geringen Kosten selbst gebaut werden.<br>
 +
Eine gute Anleitung findest sich auf folgender Website:<br>
 +
[http://www.nasauber.de/linux_know_how/lang/lirc/ Bauanleitung IR-Empfänger]<br><br>
 +
Um den IR-Empfänger mit ''lirc'' verwenden zu können, muss man die COM-Schnittstelle noch anpassen.<br>
 +
Dazu muss man als erstes das Programm ''setserial'' installieren. Dies ist bei SuSE mit dabei. Man kanns auch mit Smart, opt, oder ähnlichem<br>
 +
installieren. Dann gibt man als root in der Konsole folgenden Befehl ein:<br>
 +
# setserial /dev/ttyS0 uart none
  
== KEYBOARD KONFIGURIEREN ==
+
''/dev/ttyS0'' steht hierbei für die COM1-Schnittstelle.<br>
 +
Damit dies auch bei einem Neustart geschieht, fügt man diesen Befehl am besten in folgende Datei ein:
 +
/etc/init.d/boot.local
 +
Somit wird es bei jedem Neustart automatisch durchgeführt.<br>
  
1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen.
+
Als nächstes läd man als root das Modul für den seriellen IR-Empfänger:
 +
# modprobe lirc_serial
  
Wenn unser Keyboard unter [[#VORBEREITUNG|VORBEREITUNG]] gefunden wurde, gab es in der Ausgabe ein Kürzel für unser Keyboard. Dieses setzen wir statt "LTCXX" in folgendem Befehl ein:
+
Überprüfen ob die Module geladen wurden:
 +
# lsmod | grep lirc | grep -v
 
   
 
   
lineakd -e /etc/lineakkb.def -f ~/.lineak/lineakd.conf -c LTCXX
+
Hier sollte dann eine Ausgabe erscheinen wo ''lirc_dev'' und ''lirc_serial'' erscheinen. <br>
 +
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis ''/etc/sysconfig/''<br>
 +
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
 +
 
 +
# mcedit /etc/sysconfig/lirc
 +
 
 +
Dort muss man dann folgende Änderungen durchführen:
 +
 
 +
LIRCD_DEVICE=""
 +
ändern auf
 +
LIRCD_DEVICE="/dev/lirc0"
 +
 
 +
Gegebenenfalls muss hier ''/dev/lirc'' verwendet werden. Am besten ausprobieren.<br>
 +
und dann noch
 +
 
 +
LIRC_MODULE=""
 +
ändern auf
 +
LIRC_MODULE="lirc_serial"
 +
 
 +
Dadurch wird beim starten des Runlevels ''lirc'' auch gleich das Modul ''lirc_serial'' mitgeladen.<br><br>
 +
 
 +
== Die lircd.conf Konfiguration ==
 +
 
 +
Damit lirc die eingehenden Signale der Fernbedienung auch den passenden Tasten zuordnen kann, benötigt man noch eine passende ''lircd.conf''.<br>
 +
Diese kann man für die gebräuchlichsten Fernbedienungen von der lirc-Website runterladen.
 +
http://lirc.sourceforge.net/remotes/ <br> <br>
 +
Beispiel lircd.conf MEDION X10:<br>
 +
# Please make this file available to others
 +
# by sending it to <lirc@bartelmus.de>
 +
#
 +
# this config file was automatically generated
 +
# using lirc-0.7.0(atiusb) on Fri Feb 18 01:53:46 2005
 +
#
 +
# contributed by FUX 2005-02-17
 +
#
 +
# brand: Medion
 +
# model no. of remote control: RF Remote Control
 +
#                              FCC ID: B4S20016398
 +
# devices being controlled by this remote:
 +
#
 +
  begin remote
 +
  name  Medion_X10
 +
  bits          16
 +
  eps            30
 +
  aeps          100
 +
  one            0    0
 +
  zero            0    0
 +
  pre_data_bits  8
 +
  pre_data      0x14
 +
  post_data_bits  16
 +
  post_data      0x0
 +
  gap          227928
 +
  toggle_bit      0
 +
begin codes
 +
3                        0x000000000000E40F
 +
2                        0x000000000000E30E
 +
1                        0x000000000000E20D
 +
4                        0x000000000000E510
 +
5                        0x000000000000E611
 +
6                        0x000000000000E712
 +
7                        0x000000000000E813
 +
8                        0x000000000000E914
 +
9                        0x000000000000EA15
 +
0                        0x000000000000EC17
 +
ok                      0x000000000000F31E
 +
up                      0x000000000000EF1A
 +
down                    0x000000000000F722
 +
right                    0x000000000000F41F
 +
left                    0x000000000000F21D
 +
del                      0x000000000000F520
 +
ren                      0x0000000000000B36
 +
red                      0x0000000000000732
 +
green                    0x0000000000000833
 +
yellow                  0x0000000000000934
 +
blue                    0x0000000000000A35
 +
txt                      0x000000000000EB16
 +
ch-                      0x000000000000E10C
 +
ch+                      0x000000000000E00B
 +
vol+                    0x000000000000DE09
 +
vol-                    0x000000000000DD08
 +
mute                    0x000000000000D500
 +
tv                      0x000000000000012C
 +
vcr                      0x000000000000022D
 +
dvd                      0x000000000000D904
 +
music                    0x000000000000DB06
 +
radio                    0x000000000000032E
 +
photo                    0x000000000000DA05
 +
preview                  0x000000000000042F
 +
list                    0x0000000000000530
 +
desktop                  0x0000000000000631
 +
setup                    0x000000000000F01B
 +
snapshot                0x000000000000ED18
 +
acquire                  0x0000000000000C37
 +
play                    0x000000000000FA25
 +
reward                  0x000000000000F924
 +
forward                  0x000000000000FB26
 +
stop                    0x000000000000FD28
 +
rec                      0x000000000000FC27
 +
pause                    0x000000000000FE29
 +
skipr                    0x000000000000F621
 +
skipf                    0x000000000000F823
 +
dvdmenu                  0x000000000000EE19
 +
dvdaudio                0x0000000000000F3A
 +
off                      0x000000000000D702
 +
chsearch                0x000000000000F11C
 +
fullscreen              0x0000000000000E39
 +
editimage                0x0000000000000D38
 +
end codes
 +
 
 +
<br>
 +
Jetzt startet man ''lirc''<br>
 +
 
 +
Zum starten des Runlevels ''lirc'' als root folgenden Befehl ausführen:
 +
# rclirc start
 +
mit
 +
# rclirc status
 +
überprüfen ob ''lirc'' gestartet wurde.<br>
 +
Damit der Runlevel ''lirc'' bei jedem Systemstart automatisch gestartet wird führt man als root folgendes aus:<br>
 +
# chkconfig lirc on
 +
 
 +
Es werden durch ''lirc'' jetzt im Verzeichnis ''/dev'' folgende Major-Dateien angelegt:
 +
lirc
 +
lirc0
 +
Diese muss man noch mit den passenden Rechten versehen damit auch ein normaler Nutzer ''lirc'' nutzen kann.
 +
Dieses erziehlt man als root in der Konsole mit folgenden Befehlen:
 +
# chmod 666 /dev/lirc
 +
# chmod 666 /dev/lirc0
 +
 
  
Wenn wir, wie oben beschrieben, eine eigene Definitionsdatei erstellt haben, setzen wir das Kürzel, welches wir darin für unser Keyboard vergeben haben, statt "LTCXX" in folgendem Befehl ein:
+
Um jetzt die Fernbedienung zu testen, startet man das Hilfsprogramm ''irw''
  
  lineakd -e ~/.lineak/myKeyboard.def -f ~/.lineak/lineakd.conf -c LTCXX
+
  # cd /usr/bin
 +
# ./irw
  
Somit haben wir die Datei /home/ausführender_Benutzer/.lineak/lineakd.conf erstellt.
+
Wenn jetzt eine Taste auf der Fernbedienung gedrückt wird, dann gibt ''irw'' die Bezeichnung und den Tastencode aus! Dann weiß man das die lirc-Konfiguration läuft.
 +
<br><br>
  
  
2. In die Datei lineakd.conf wird nun für jede Taste eingetragen, was diesselbe auslösen soll. Hierfür gibt es vordefinierte Makros, aber auch die Möglichkeit beliebige Kommandos auszuführen. Man kann die Einträge manuell per Texteditor vornehmen, oder die grafische Oberfläche von Klineakconfig benutzen.
+
== Steuern von Kaffeine, XMMS, Amarok, usw mit lircrc ==
  
3. Eine Liste der Makros erhält man mit:
+
Um mit ''lirc'' auch Programme (z.B. XMMS) steuern zu können benötigt man, zwei im Hintergrund laufende, deamons.<br>
 +
Diese müssen in der Konsole als normaler Nutzer aufgerufen werden.<br>
 +
Bevor diese aber gestartet werden muss man im Verzeichnis ''/etc'' noch die Datei ''lircrc'' anlegen.
 +
Diese befüllt man mit den Steuerbefehlen für z.B XMMS.<br>
 +
Um XMMS mit ''lirc'' steuern zu können muss noch zusätzlich das Paket ''xmms-plugins'' installiert werden und in XMMS unter ''Optionen -> Plugins -> Allgemeine Plugins'' das Lircplugin aktiviert werden.
 +
<br><br>
 +
Beispiel lircrc:
  
  lineakd -L | less
+
  begin irexec
 +
begin
 +
prog  = irexec
 +
button = music
 +
config = xmms &
 +
mode  = xmms
 +
repeat = 0
 +
end
 +
begin
 +
prog  = irexec
 +
button = radio
 +
config = amarok &
 +
mode  = amarok
 +
repeat = 0
 +
end
 +
end irexec
 +
begin xmms
 +
begin
 +
button = play
 +
prog = xmms
 +
config = play
 +
end
 +
begin
 +
prog = xmms
 +
button = pause
 +
config = pause
 +
end
 +
begin
 +
prog = xmms
 +
button = stop
 +
config = stop
 +
end
 +
begin
 +
prog = xmms
 +
button = skipf
 +
config = next
 +
end
 +
begin
 +
prog = xmms
 +
button = skipr
 +
config = prev
 +
end
 +
begin
 +
prog = xmms
 +
button = forward
 +
config = FWD 3
 +
repeat = 2
 +
end
 +
begin
 +
prog = xmms
 +
button = reward
 +
config = BWD 3
 +
repeat = 2
 +
end
 +
begin
 +
prog = xmms
 +
button = off
 +
config = QUIT
 +
mode = irexec
 +
repeat = 0
 +
end
 +
end xmms
 +
begin amarok
 +
begin
 +
prog  = irexec
 +
button = play
 +
config = dcop amarok player playPause
 +
end
 +
....
 +
begin
 +
prog  = irexec
 +
button = off
 +
config = dcop amarok MainApplication-Interface quit
 +
mode  = irexec
 +
repeat = 0
 +
end
 +
end amarok
  
Teilweise haben diese selbsterklärende Namen, wer detaillierte Informationen benötigt sei auf die Dokumentation auf der Projekthomepage von linEAK verwiesen:
+
<br>
http://lineak.sourceforge.net/index.php?nav=docs
+
Mit folgenden Befehlen werden jetzt die beiden Deamons als normaler Nutzer gestartet:<br>
 +
/usr/bin/irexec -d /etc/lircrc
 +
/usr/bin/irxevent &
  
4. Wenn man Klineakconfig benutzen möchte, startet man diesen am besten mit:
+
um diese automatisch bei jedem Neustart zu laden schreibt man am besten ein bash-Script und legt dieses in
''ALT+F2'', gibt "klineakconfig" in den Dialog ein und bestätigt.
+
/home/''<Nutzername>''/.kde/Autostart/
Jetzt sollte ein Pinguin-Symbol mit Tastatur in der Taskleiste erscheinen.
 
So wird linEAK zukünftig auch automatisch mit dem System gestartet und die Sondertasten stehen immer zur Verfügung.
 
  
5. Neben den Makros können für eine Taste beliebige Befehle angegeben werden, zu dem der jeweilige Benutzer berechtigt ist.
+
Beispiel bash-Script ''lircstart.sh'':<br>
Hierfür lohnt es auch, sich mit dem dcop-System auseinandersetzen. Ein guter Einstiegspunkt dafür mit grafischer Oberfläche ist kdcop.
+
#!/bin/bash
''ALT+F2'' und "kdcop" eingeben und bestätigen.
+
sleep 2
 +
/usr/bin/irexec -d /etc/lircrc
 +
/usr/bin/irxevent &
 +
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3
  
== STARTBEDINGUNGEN ==
+
Diese muss dann noch ausführbar gemacht werden:
  
1. Wenn wir zuvor den "setkeycodes"-Befehl benötigten, um Scancodes auf Keycodes abzubilden, ist es wichtig diese Zuordnungen in ein Startskript einzubauen. Sonst würden wir diese Einstellungen beim Booten wieder verlieren. Der entsprechende Befehl ist der gleiche, wie unter [[#KEYCODES BESTIMMEN|KEYCODES BESTIMMEN]] Punkt 6., nur dass er in ein Startskript geschrieben werden muss.
+
# chmod +x /home/''<Nutzername>''/.kde/Autostart/lircstart.sh
Es bietet sich an, dies in /etc/init.d/boot.local einzutragen.
 
Ich habe es am Ende von /etc/init.d/kbd eingetragen, so wird die Zuordnung immer vorgenommen, nachdem die Grundeinstellungen des Keyboards geladen wurden.
 
  
2. Wenn man KlinEAK benutzt, sollte es das schon gewesen sein.
+
== Probleme mit Lirc ==
Will man das aus irgendeinem Grund nicht, kann man ein eigenes Startskript schreiben. Infos dazu findet man unter /etc/init.d/skeleton und /usr/share/doc/packages/lineakd.rc.
 
  
==  WEITERE INFOS ==
+
Wenn man bei laufendem Lirc den USB-Funkempfänger entfernt dann wird innerhalb ganz kurzer Zeit das Logfile ''lircd'' unter ''/var/log/''
 +
mit Fehlermeldungen überflutet. Bei einer Größe von über 2GB wird dann der Runlevel ''lirc'' abgeschossen und kann nicht mehr gestartet werden. <br>
 +
Um dies zu vermeiden sollte man ''lirc'' nicht als Runlevel starten. Also nicht mit ''chkconfig lirc on'' auf Autostart setzten, sondern mit folgendem Script nur auf Bedarf starten bzw beenden:<br>
  
/usr/share/doc/packages/lineakd/<br>
+
Lirc_StartStop.sh
/usr/share/doc/packages/lineak_defaultplugin/<br>
 
/usr/share/doc/packages/lineak_kde/<br>
 
  
* http://lineak.sourceforge.net
+
#!/bin/bash
 +
#
 +
# Lirc starting script writen by Schneider Johnny 06112006
 +
# Dieses Schript prüft wie groß das Log-File von Lirc ist und löscht es gegebenenfalls.
 +
# Dann wird geprüft ob sich der Funkempfänger am USB-Slot befinden und startet dann Lirc.
 +
# Wenn der Empfänger entfernt wird dann lässt sich der Lirc-deamon beenden.
 +
# Variablen erstellen
 +
GEFUNDEN=
 +
FS=                # Leere Variable für die Dateigrösse (FileSize)
 +
DATEI=20000000    # Variable für den Vergleich erzeugen und mit Wert belegen
 +
# 1. Abschnitt
 +
# prüfen ob Log-Datei lircd vorhanden ist
 +
if (test -f /var/log/lircd);
 +
then
 +
#echo "Datei gefunden!"
 +
# Dateigrösse von /var/log/lircd ermitteln und mit Hilfe
 +
# der Kommandosubstitution in eine Variable schreiben.
 +
FS=$(ls -l /var/log/lircd | tr -s " " | cut -d " " -f 5)
 +
# Bildschirmausgabe über Dateigröße
 +
#echo "Die Log-Datei Lircd ist $FS Byte groß."
 +
fi
 +
if (test $FS -gt $DATEI);then
 +
#echo "Die Datei ist zu groß und wird jetzt gelöscht ..."
 +
kdesu rm /var/log/lircd
 +
#else
 +
#echo "Die Dateigröße ist ok"
 +
fi
 +
# Es wird geprüft ob der Funkempfänger Medion X10 angeschlossen ist
 +
if ( ps x | grep lirc | grep -v grep );then
 +
kdesu killall lircd
 +
kdialog --passivepopup "Der Lirc-Deamon wurde beendet !!!!" 4
 +
elif ( lsusb | grep X10 | grep -v grep );then
 +
kdesu rclirc start
 +
/usr/bin/irexec -d /etc/lircrc
 +
/usr/bin/irxevent &
 +
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3
 +
#echo "Lirc-deamon wird gestartet ..."
 +
else
 +
exit
 +
fi
  
 +
<br>
 +
Jetzt kann man bequem vom Sofa aus seine Programme steuern.<br>
 +
Viel Glück und viel Spass bei der Umsetzung!
  
 +
== Quellen und weiterführende Links ==
  
Viel Spaß
+
* [http://www.lirc.org Lirc-Homepage]
tisyb
+
* [http://lirc.sourceforge.net/remotes/ lircd.conf von unterstützten Fernbedienungen]
  
  

Version vom 27. Februar 2007, 08:33 Uhr

Author: PrinzEisenherz1

Einleitung

Dieses Howto behandelt die Installation und Konfiguration von Lirc unter SuSE.
Es wurde erfolgreich unter SuSE 10.0 - 10.2 getestet und dürfte auch bei den 9er-Versionen funktionieren.
Dieses Howto beinhaltet folgende Fernbedienungsvarianten:

  • MEDION X10 Funkfernbedienung (USB)
  • IR-Empfänger über serielle Schnittstelle (COM)

wobei der Schwerpunkt hier bei MEDION X10 liegt.

Vorbereitende Maßnahmen

Als erstes muß man mit YAST, Smart oder vergleichbaren Paketmanager folgende Pakete installieren:

  • lirc
  • lirc-kmp-<Kerneltyp>

Bei lirc-kmp-<Kerneltyp> handelt es sich um ein Paket mit zusätzlichen Treibermodulen. Hier ist es wichtig das es zum installierten Kernel passt.
Sollte man nicht wissen welcher Kernel installiert ist, dann kann man dies auf der Konsole mit uname -r herausfinden.
z.B.

2.6.18.2-34-default

Bei diesem Beispiel handelt es sich um einen default-Kernel. Also muß man in diesem Fall das Paket lirc-kmp-default auswählen.

Installation MEDION X10

USB-Funkempfanger anschließen und mit lsmod prüfen welche Module vom System automatisch geladen werden.
z.B

# lsmod
snd_seq_device          	7948	2 snd_seq,snd_rawmidi
snd                    		50692	12 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_via82xx,snd_ac97_codec, ...                                                                         
soundcore            	         8672	1 snd
uhci_hcd            		27280	0
usbcore              		108804  5 ati_remote,hci_usb,ehci_hcd,uhci_hcd
ide_cd                		35360  	0
cdrom                  		32288  	1 ide_cd      

Wie man hier erkennen kann wird automatisch das Treibermodul ati_remote geladen. Dies ist aber nicht das passende für den MEDION X10.
Um das Modul zu entladen gibt man als Root in der Konsole folgendes ein:

rmmod ati_remote

Damit das Modul ati_remote beim nächsten Neustart bzw. beim erneuten anstecken des USB-Empfängers nicht wieder automatisch geladen wird, setzt man es in die Blacklist.
Die Blacklist befindet sich um Unterordner

/etc/modprobe.d/

Dazu mit einem Editor die Datei blacklist editieren.

# mcedit /etc/modprobe.d/blacklist

Dort folgenden Eintrag hinzufügen

blacklist ati_remote

Als nächstes läd man die benötigten Module für MEDION X10:

modprobe lirc_dev
modprobe lirc_atiusb

Überprüfen ob die Module geladen wurden:

# lsmod | grep lirc | grep -v
lirc_atiusb	            16160	0
lirc_dev            	    13284	1 lirc_atiusb
usbcore        	            108804	5 lirc_atiusb,hci_usb,ehci_hcd,uhci_hcd

Wie man erkennen kann wurden beide Module erfolgreich geladen.
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis /etc/sysconfig/
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.

# mcedit /etc/sysconfig/lirc

Dort muss man dann folgende Änderungen durchführen:

LIRCD_DEVICE=""

ändern auf

LIRCD_DEVICE="/dev/lirc0"

und dann noch

LIRC_MODULE=""

ändern auf

LIRC_MODULE="lirc_atiusb"

Dadurch wird beim starten des Runlevels lirc auch gleich das Modul lirc_atiusb mitgeladen.

Installation eines Empfängers einer Hauppauge TV Karte

Dieser Abschnitt behandelt die Konfiguration von lirc um einen Hauppauge TV Karten IR Empfänger benutzen zu können.

Voraussetzungen: lirc ist installiert, lirc kernelmodule sind installiert (Vorgehensweise oben beschrieben).

Zunächst muss man ein Paar Änderungen an der Konfigurationsdatei vornehmen. Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.

# mcedit /etc/sysconfig/lirc

Dort muss man dann folgende Änderungen durchführen:

LIRCD_DEVICE=""

ändern zu

LIRCD_DEVICE="/dev/lirc0"
LIRC_MODULE=""

ändern zu

LIRC_MODULE="lirc_i2c"

Nun brauchen wir eine lircd.conf die zu Hauppauge TV-Karten passt. Wir nehmen die folgenden Zeilen und speichern sie in Datei dieser Datei.

/etc/lircd.conf


begin remote
 name  hauppauge_pvr
 bits           13
 flags RC5|CONST_LENGTH
 eps            30
 aeps          100
 one           969   811
 zero          969   811
 plead        1097
 gap          114605
 toggle_bit      2


     begin codes
         Power                    0x00000000000017FD
         Go                       0x00000000000017FB
         1                        0x00000000000017C1
         2                        0x00000000000017C2
         3                        0x00000000000017C3
         4                        0x00000000000017C4
         5                        0x00000000000017C5
         6                        0x00000000000017C6
         7                        0x00000000000017C7
         8                        0x00000000000017C8
         9                        0x00000000000017C9
         Back/Exit                0x00000000000017DF
         0                        0x00000000000017C0
         Menu                     0x00000000000017CD
         Red                      0x00000000000017CB
         Green                    0x00000000000017EE
         Yellow                   0x00000000000017F8
         Blue                     0x00000000000017E9
         Ch+                      0x00000000000017E0
         Ch-                      0x00000000000017E1
         Vol-                     0x00000000000017D1
         Vol+                     0x00000000000017D0
         Ok                       0x00000000000017E5
         Mute                     0x00000000000017CF
         Blank                    0x00000000000017CC
         Full                     0x00000000000017FC
         Rewind                   0x00000000000017F2
         Play                     0x00000000000017F5
         Forward                  0x00000000000017F4
         Record                   0x00000000000017F7
         Stop                     0x00000000000017F6
         Pause                    0x00000000000017F0
         Replay                   0x00000000000017E4
         Skip                     0x00000000000017DE
     end codes
end remote

Nun laden wir testweise das Kernelmodul. Als root in einer Konsole geben wir folgendes ein.

#modprobe lirc_i2c

Nun können wir lirc mit folgendem befehl starten.

#lircd

Nun testen wir einmal ob ein Signal ankommt

#irw

und tippen ein bischen auf der Fernbedienung rum.

Installation IR-Empfänger über serielle Schnittstelle (COM)

Dieser Abschnitt behandelt die Installation eines IR-Empfängers über serielle Schnittstelle (COM).
Solch ein Empfänger kann mit etwas Geschick und geringen Kosten selbst gebaut werden.
Eine gute Anleitung findest sich auf folgender Website:
Bauanleitung IR-Empfänger

Um den IR-Empfänger mit lirc verwenden zu können, muss man die COM-Schnittstelle noch anpassen.
Dazu muss man als erstes das Programm setserial installieren. Dies ist bei SuSE mit dabei. Man kanns auch mit Smart, opt, oder ähnlichem
installieren. Dann gibt man als root in der Konsole folgenden Befehl ein:

# setserial /dev/ttyS0 uart none

/dev/ttyS0 steht hierbei für die COM1-Schnittstelle.
Damit dies auch bei einem Neustart geschieht, fügt man diesen Befehl am besten in folgende Datei ein:

/etc/init.d/boot.local

Somit wird es bei jedem Neustart automatisch durchgeführt.

Als nächstes läd man als root das Modul für den seriellen IR-Empfänger:

# modprobe lirc_serial

Überprüfen ob die Module geladen wurden:

# lsmod | grep lirc | grep -v

Hier sollte dann eine Ausgabe erscheinen wo lirc_dev und lirc_serial erscheinen.
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis /etc/sysconfig/
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.

# mcedit /etc/sysconfig/lirc

Dort muss man dann folgende Änderungen durchführen:

LIRCD_DEVICE=""

ändern auf

LIRCD_DEVICE="/dev/lirc0"

Gegebenenfalls muss hier /dev/lirc verwendet werden. Am besten ausprobieren.
und dann noch

LIRC_MODULE=""

ändern auf

LIRC_MODULE="lirc_serial"

Dadurch wird beim starten des Runlevels lirc auch gleich das Modul lirc_serial mitgeladen.

Die lircd.conf Konfiguration

Damit lirc die eingehenden Signale der Fernbedienung auch den passenden Tasten zuordnen kann, benötigt man noch eine passende lircd.conf.
Diese kann man für die gebräuchlichsten Fernbedienungen von der lirc-Website runterladen. http://lirc.sourceforge.net/remotes/

Beispiel lircd.conf MEDION X10:

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.7.0(atiusb) on Fri Feb 18 01:53:46 2005
#
# contributed by FUX 2005-02-17
#
# brand: Medion
# model no. of remote control: RF Remote Control
#                              FCC ID: B4S20016398
# devices being controlled by this remote:
#
  begin remote
  name  Medion_X10
  bits           16
  eps            30
  aeps          100
  one             0     0
  zero            0     0
  pre_data_bits   8
  pre_data       0x14
  post_data_bits  16
  post_data      0x0
  gap          227928
  toggle_bit      0
begin codes
3                        0x000000000000E40F
2                        0x000000000000E30E
1                        0x000000000000E20D
4                        0x000000000000E510
5                        0x000000000000E611
6                        0x000000000000E712
7                        0x000000000000E813
8                        0x000000000000E914
9                        0x000000000000EA15
0                        0x000000000000EC17
ok                       0x000000000000F31E
up                       0x000000000000EF1A
down                     0x000000000000F722
right                    0x000000000000F41F
left                     0x000000000000F21D
del                      0x000000000000F520
ren                      0x0000000000000B36
red                      0x0000000000000732
green                    0x0000000000000833
yellow                   0x0000000000000934
blue                     0x0000000000000A35
txt                      0x000000000000EB16
ch-                      0x000000000000E10C
ch+                      0x000000000000E00B
vol+                     0x000000000000DE09
vol-                     0x000000000000DD08
mute                     0x000000000000D500
tv                       0x000000000000012C
vcr                      0x000000000000022D
dvd                      0x000000000000D904
music                    0x000000000000DB06
radio                    0x000000000000032E
photo                    0x000000000000DA05
preview                  0x000000000000042F
list                     0x0000000000000530
desktop                  0x0000000000000631
setup                    0x000000000000F01B
snapshot                 0x000000000000ED18
acquire                  0x0000000000000C37
play                     0x000000000000FA25
reward                   0x000000000000F924
forward                  0x000000000000FB26
stop                     0x000000000000FD28
rec                      0x000000000000FC27
pause                    0x000000000000FE29
skipr                    0x000000000000F621
skipf                    0x000000000000F823
dvdmenu                  0x000000000000EE19
dvdaudio                 0x0000000000000F3A
off                      0x000000000000D702
chsearch                 0x000000000000F11C
fullscreen               0x0000000000000E39
editimage                0x0000000000000D38
end codes


Jetzt startet man lirc

Zum starten des Runlevels lirc als root folgenden Befehl ausführen:

# rclirc start

mit

# rclirc status

überprüfen ob lirc gestartet wurde.
Damit der Runlevel lirc bei jedem Systemstart automatisch gestartet wird führt man als root folgendes aus:

# chkconfig lirc on

Es werden durch lirc jetzt im Verzeichnis /dev folgende Major-Dateien angelegt:

lirc
lirc0

Diese muss man noch mit den passenden Rechten versehen damit auch ein normaler Nutzer lirc nutzen kann. Dieses erziehlt man als root in der Konsole mit folgenden Befehlen:

# chmod 666 /dev/lirc
# chmod 666 /dev/lirc0


Um jetzt die Fernbedienung zu testen, startet man das Hilfsprogramm irw

# cd /usr/bin
# ./irw

Wenn jetzt eine Taste auf der Fernbedienung gedrückt wird, dann gibt irw die Bezeichnung und den Tastencode aus! Dann weiß man das die lirc-Konfiguration läuft.


Steuern von Kaffeine, XMMS, Amarok, usw mit lircrc

Um mit lirc auch Programme (z.B. XMMS) steuern zu können benötigt man, zwei im Hintergrund laufende, deamons.
Diese müssen in der Konsole als normaler Nutzer aufgerufen werden.
Bevor diese aber gestartet werden muss man im Verzeichnis /etc noch die Datei lircrc anlegen. Diese befüllt man mit den Steuerbefehlen für z.B XMMS.
Um XMMS mit lirc steuern zu können muss noch zusätzlich das Paket xmms-plugins installiert werden und in XMMS unter Optionen -> Plugins -> Allgemeine Plugins das Lircplugin aktiviert werden.

Beispiel lircrc:

begin irexec
begin
prog   = irexec
button = music
config = xmms &
mode   = xmms
repeat = 0
end
begin
prog   = irexec
button = radio
config = amarok &
mode   = amarok
repeat = 0
end
end irexec
begin xmms
begin
button = play
prog = xmms
config = play
end
begin
prog = xmms
button = pause
config = pause
end
begin
prog = xmms
button = stop
config = stop
end
begin
prog = xmms
button = skipf
config = next
end
begin
prog = xmms
button = skipr
config = prev
end
begin
prog = xmms
button = forward
config = FWD 3
repeat = 2
end
begin
prog = xmms
button = reward
config = BWD 3
repeat = 2
end
begin
prog = xmms
button = off
config = QUIT
mode = irexec
repeat = 0
end
end xmms
begin amarok
begin
prog   = irexec
button = play
config = dcop amarok player playPause
end
....
begin
prog   = irexec
button = off
config = dcop amarok MainApplication-Interface quit
mode   = irexec
repeat = 0
end
end amarok


Mit folgenden Befehlen werden jetzt die beiden Deamons als normaler Nutzer gestartet:

/usr/bin/irexec -d /etc/lircrc
/usr/bin/irxevent &

um diese automatisch bei jedem Neustart zu laden schreibt man am besten ein bash-Script und legt dieses in

/home/<Nutzername>/.kde/Autostart/

Beispiel bash-Script lircstart.sh:

#!/bin/bash
sleep 2
/usr/bin/irexec -d /etc/lircrc
/usr/bin/irxevent &
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3

Diese muss dann noch ausführbar gemacht werden:

# chmod +x /home/<Nutzername>/.kde/Autostart/lircstart.sh

Probleme mit Lirc

Wenn man bei laufendem Lirc den USB-Funkempfänger entfernt dann wird innerhalb ganz kurzer Zeit das Logfile lircd unter /var/log/ mit Fehlermeldungen überflutet. Bei einer Größe von über 2GB wird dann der Runlevel lirc abgeschossen und kann nicht mehr gestartet werden.
Um dies zu vermeiden sollte man lirc nicht als Runlevel starten. Also nicht mit chkconfig lirc on auf Autostart setzten, sondern mit folgendem Script nur auf Bedarf starten bzw beenden:

Lirc_StartStop.sh

#!/bin/bash
#
# Lirc starting script writen by Schneider Johnny 06112006
# Dieses Schript prüft wie groß das Log-File von Lirc ist und löscht es gegebenenfalls.
# Dann wird geprüft ob sich der Funkempfänger am USB-Slot befinden und startet dann Lirc.
# Wenn der Empfänger entfernt wird dann lässt sich der Lirc-deamon beenden.
# Variablen erstellen
GEFUNDEN=
FS=                 # Leere Variable für die Dateigrösse (FileSize)
DATEI=20000000     # Variable für den Vergleich erzeugen und mit Wert belegen
# 1. Abschnitt
# prüfen ob Log-Datei lircd vorhanden ist
if (test -f /var/log/lircd);
then
#echo "Datei gefunden!"
# Dateigrösse von /var/log/lircd ermitteln und mit Hilfe
# der Kommandosubstitution in eine Variable schreiben.
FS=$(ls -l /var/log/lircd | tr -s " " | cut -d " " -f 5)
# Bildschirmausgabe über Dateigröße
#echo "Die Log-Datei Lircd ist $FS Byte groß."
fi
if (test $FS -gt $DATEI);then
#echo "Die Datei ist zu groß und wird jetzt gelöscht ..."
kdesu rm /var/log/lircd
#else
#echo "Die Dateigröße ist ok"
fi
# Es wird geprüft ob der Funkempfänger Medion X10 angeschlossen ist
if ( ps x | grep lirc | grep -v grep );then
kdesu killall lircd
kdialog --passivepopup "Der Lirc-Deamon wurde beendet !!!!" 4 
elif ( lsusb | grep X10 | grep -v grep );then
kdesu rclirc start
/usr/bin/irexec -d /etc/lircrc
/usr/bin/irxevent &
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3
#echo "Lirc-deamon wird gestartet ..."
else
exit
fi


Jetzt kann man bequem vom Sofa aus seine Programme steuern.
Viel Glück und viel Spass bei der Umsetzung!

Quellen und weiterführende Links


Zurück zu Hardware