IR Remote Control für XBMC

Der XBMC Mediaplayer lässt sich auf verschiedenste Arten steuern.

 

Zum einen gibt es z.B. Apps für das Smartfon. Aber wer so wie ich eine Multifunktionsferbedienung besitzt möchte doch bestimmt den XBMC Mediaplayer auf der Raspberry mit der IR Fernbedinung steuern.

 

Um die Steuerbefehle zu empfangen wird ein IR Receiver benötigt. Wichtig ist bei der Auswahl, dass ein 3,3 Volt Typ verwendet wird. Dies ist nötig, da der IR-Empfänger direkt an die GPIO Pins der Raspberry angeschlossen wird.

Ich habe hierzu den TSOP4838 verwendet.

 

Software installieren

Als erstes installieren wir die benötigte Software.

Die Auswertung der Signale übernimmt das Paket lirc

 

Dieses wird mit

sudo apt-get install lirc

installiert.

 

Hardware installieren

Der IR-Empfänger wird wie schon erwähnt an die GPIO Pins angeschlossen.

Im Treiber ist als Default der GPIO18 ausgewählt.

 

Die Belegung der GPIO Pins findet man im Raspberry Wiki unter General Purpose Input/Output (GPIO)

Man muss also den Empfänger entsprechend an die Pins anklemmen.


Ist dies geschehen kann man mit folgenden Kommandos die Funktion Testen:

modprobe lirc_rpi
mode2 -d /dev/lirc0

Drückt man nun Tasten auf der Fernbedienung sieht man codierte Ausgaben.

 

Wenn soweit alles funktioniert, dann ist als nächstes die Konfiguration von lirc an der Reihe

 

Konfiguration von lirc

Als erstes Stellen wir lirc so ein, dass er die benötigten Module automatisch läd.

Dies macht man in der Datei /etc/lirc/hardware.conf

Folgenden Inhalt sollte diese Datei haben:


# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
#LIRCD_ARGS="--uinput"
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

 

Nun starten wir den lirc Prozess neu:

/etc/init.d/lirc restart


Nun müssen die Befehle der Fernbedienung angelernt werden.

Dies macht man mit dem Befehl

irrecord -d /dev/lirc0 ~/lirc.conf

Nach der Konfiguration muss ie Datei ~/lirc.conf nach /etc/lirc/lircd.conf kopiert werden.

Wichtig ist auch die Zeile mit dem Bezeichner

name lirc

Hier schreibt Ihr am besten den Namen der verwendeten Fernbedienung hin. Der name wird gleich beim XBMC wieder benötigt.

 

Startet nun lirc neu (siehe oben)

 

Nachdem lirc gestartet ist ruft ihr das Kommando irw auf. Werden jetzt Tasten gedrück, erscheinen diese angelerntet Tasten auf der Konsole.

 

Konfiguration von XMBC

 

Damit XMBC auf die Tasten der Fernbedinung reagieren kann muss eine entsprechende Konfigurationsdatei abgelegt werden.

Diese Datei liegt unter dem Homedirectory des XBMC Benutzers und heißt ~/.xbmc/userdata/Lircmap.xml

 

Meine Lircmap.xml sieht z.B. so aus:

<!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml  -->
<!--                                                                              -->
<!-- How to add remotes                                                           -->
<!-- <remote device="name_Lirc_calls_the_remote">                                 -->
<!--                                                                              -->
<!-- For the commands the layout following layout is used                         -->
<!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND>                                  -->
<!--                                                                              -->
<!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml   -->

<lircmap>
        <remote device="lirc">
        <altname>devinput</altname>
                <left>KEY_LEFT</left>
                <right>KEY_RIGHT</right>
                <up>KEY_UP</up>
                <down>KEY_DOWN</down>
                <select>KEY_OK</select>
                <select>KEY_ENTER</select>
                <start>KEY_SELECT</start>
                <back>KEY_ESC</back>
                <back>KEY_EXIT</back>
                <back>KEY_BACK</back>
                <back>KEY_CLOSE</back>
                <record>KEY_RECORD</record>
                <play>KEY_PLAY</play>
                <play>KEY_PLAYPAUSE</play>
                <pause>KEY_PAUSE</pause>
                <stop>KEY_STOP</stop>
                <stop>KEY_STOPCD</stop>
                <forward>KEY_FASTFORWARD</forward>
                <reverse>KEY_REWIND</reverse>
                <volumeplus>KEY_VOLUMEUP</volumeplus>
                <volumeminus>KEY_VOLUMEDOWN</volumeminus>
                <channelplus>KEY_CHANNELUP</channelplus>
                <channelminus>KEY_CHANNELDOWN</channelminus>
                <skipplus>KEY_NEXTSONG</skipplus>
                <skipminus>KEY_PREVIOUSSONG</skipminus>
                <title>KEY_TITLE</title>
                <subtitle>KEY_SUBTITLE</subtitle>
                <language>KEY_LANGUAGE</language>
                <mute>KEY_MUTE</mute>
                <power>KEY_POWER</power>
                <myvideo>KEY_VIDEO</myvideo>
                <mymusic>KEY_AUDIO</mymusic>
                <mypictures>KEY_MHP</mypictures>
                <mytv>KEY_TV</mytv>
                <one>KEY_1</one>
                <two>KEY_2</two>
                <three>KEY_3</three>
                <four>KEY_4</four>
                <five>KEY_5</five>
                <six>KEY_6</six>
                <seven>KEY_7</seven>
                <eight>KEY_8</eight>
                <nine>KEY_9</nine>
                <zero>KEY_0</zero>
                <red>KEY_RED</red>
                <green>KEY_GREEN</green>
                <yellow>KEY_YELLOW</yellow>
                <blue>KEY_BLUE</blue>
                <menu>KEY_MENU</menu>
                <info>KEY_INFO</info>
                <info>KEY_PROPS</info>
                <start>KEY_HOME</start>
                <display>KEY_ANGLE</display>
                <recordedtv>KEY_PVR</recordedtv>
                <teletext>KEY_TEXT</teletext>
        </remote>
</lircmap>

Wichtig ist hier die Stelle mit dem namen remote device. Als Wert wird hier der vorhin in der lirc.conf vergebene Name eingetragen.

 

 

Starten und Stoppen von XBMC mit der Fernbedinung

Auch das Starten und Stoppen von XBMC mit der Fernbedienung ist möglich. Ich habe mir hierzu ein Hilfsskript geschreiben.

 

Doch zuerst muss man noch den Powerknopf mit einem Befehl (Skript) verknüpfen.

Dies macht man in der Datei /etc/lirc/lircmd.conf mit folgendem Inhalt:

begin
  prog = irexec
  button = KEY_POWER
  config = /root/xbmcstartstop.sh&
end

Beim drücken vom Powerknopf wird nun das Skript /root/xbmcstartstop.sh ausgeführt.

Dieses Skript sieht dann so aus:

#!/bin/bash
SERVICE='xbmc-standalone'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    echo "$SERVICE service running"
    ~/xbmc stop
else
    echo "$SERVICE is not running"
    ~/xbmc start
fi

 

 

Weitere Infos:

 

Weitere informationen findet man z.B. unter

http://aron.ws/projects/lirc_rpi/

 

 

Zurück