LIRC
Author: PrinzEisenherz1
Inhaltsverzeichnis
- 1 Einleitung
- 2 Vorbereitende Maßnahmen
- 3 Installation MEDION X10
- 4 Installation einesm Empfängers einer Hauppauge TV Karte
- 5 Installation IR-Empfänger über serielle Schnittstelle (COM)
- 6 Die lircd.conf Konfiguration
- 7 Steuern von Kaffeine, XMMS, Amarok, usw mit lircrc
- 8 Probleme mit Lirc
- 9 Nützliche Links
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 einesm 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_DRIVER=""
ändern zu
LIRCD_DRIVER="hauppauge"
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 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!