Skripte und Mediencenter steuern
Anleitung: Infrarot-Fernbedienung für den Raspberry Pi einrichten
Seit Jahren nutze ich an meinem Raspberry Pi eine (beliebige / normale) Infrarot-Fernbedienung. Ich möchte auf diesen Komfort nicht mehr verzichten. In dieser Anleitung zeige ich das Installieren und Einrichten unter Raspberry Pi OS Trixie Schritt für Schritt.

Ich steuere mit so einer alten TV-Fernbedienung Relais, LED-Lichterketten und mein Mediencenter. Man kann damit praktisch alles per Tastendruck ausführen, was man auch in die Konsole eingeben kann.
Für das Anschließen, Konfigurieren bzw. Einrichten einer ordinären Infrarot-Fernbedienung gibt es im Internet viele Anleitungen. Die meisten sind allerdings zum einen in die Jahre gekommen bzw. beziehen sich auf ältere Raspberry-Pi-Betriebssysteme. Zum anderen sind sie m. E. unnötig kompliziert bzw. verwirrend. Denn offenbar soll dort die kleine angeschlossene IR-Diode auch zum Senden von Signalen genutzt werden. So etwas benötige ich nicht – meine soll Signale von der Fernbedienung nur empfangen. Daher ist meine Anleitung x auch entsprechend einfacher gehalten – wenn auch nicht so kompakt, da ich alle Schritte nacheinander gut darstelle.
x Sie dient auch für mich zum späteren Nachschlagen für eine ggf. erneute Installation.
Meine Anleitung gliedert sich grob in drei Schritte:
- Anstöpseln der Infrarot-Diode an die GPIOs des Raspberry
- Installieren der kleinen Software ›LIRC‹ (⇾ Linux Infrared Remote Control)
- Trainieren der Fernbedienung bzw. das Bekanntmachen von ihr mit dem System
- Ansprechen von unterschiedlichen Programmen
Welche Hardware brauche ich?
Wir benötigen jedoch zuvor natürlich noch etwas Zubehör:
Zunächst ist dies eine Infrarot-Diode. So etwas ist eigentlich ein Cent-Artikel. Im Handel kostet das Ding meist etwas mehr, wenn man nicht gleich einhundert Stück davon kauft. Wir benötigen eine solche mit drei Beinchen. Zum Anschluss an den Raspberry Pi bzw. an das GPIO-Board benötigen wir ferner drei Steckkabel. Diese werden im Set z. B. als ›Steckbrücken-Kabel‹ verkauft.
Und natürlich benötigen wir eine Infrarot-Fernbedienung. Hierzu eignet sich nahezu jede, die man finden kann. Offenbar werden diese Dinger seit den 1980er Jahren technisch unverändert gleich produziert. Es muss aber tatsächlich eine Infrarotfernbedienung sein – und keine Bluetooth-Fernbedienung (z. B. vom FireTV-Stick). Auf welchen Kanälen die Fernbedienung sendet, ist egal: Wir trainieren später die Software – sie empfängt alle Signale.
Man kann übrigens recht einfach ermitteln, ob die (alte) IR-Fernbedienung noch sendet: Man hält sie mit ihrer vorderen Sende-LED einfach vor die Kamera eines Smartphones und drückt einige Tasten. Auf der Smartphone-Live-Kamera-Ansicht müsste die LED der Fernbedienung nun violett leuchten.
Die Handy-Kamera sieht Licht bestimmter Wellenbereiche, wo unsere Augen schon blind sind.
Noch ein Hinweis: Ich habe schlechte Erfahrungen mit diesen flachen Mini-Fernbedienungen gemacht. Eine solche habe ich oben abgebildet. Das sind diese Dinger, die eine 3V-Knopfzelle nutzen und die es häufig zu z. B. LED-Lichterketten und dergleichen dazu gibt. Für den Anfang kann man eine solche natürlich nutzen. Aber die Sendeleistung ist sehr gering (man muss genau zielen) und die Tasten bleiben irgendwann niedergedrückt bzw. sind schnell „platt“. Diese Fernbedienungen sind – im Gegensatz zu denen mit Gummi-Kontakt-Inlay – nicht für den häufigen Gebrauch bestimmt.
➜ Ich nutze eine Nachkauf-Fernbedienung, die eigentlich für die ›Android TV Box X96 Mini‹ gedacht ist und die ca. 6 Euro kostet. Oben habe ich von ihr ein Foto abgebildet. Unten in diesem Beitrag stelle ich für diese Fernbedienung auch die Tastencodes bereit, damit man die dazugehörige conf-Datei nicht selbst erstellen muss.
Soviel zur Hardware. Nun sollten wir aber erste einmal die IR-Diode mit dem Raspberry verdrahten:
Anschluss der Infrarot-Diode an den Raspberry Pi
Die Infrarot-Diode wird einfach mittels den Steck-Kabeln an drei bestimmte Pins des GPIO-Boards angeschlossen:

Diese Diode hat ja drei Pins:
- Signalpin (OUT)
- Stromversorgung: Minus-Pol (GND / Masse)
- Stromversorgung: Plus-Pol (VCC)
Auf der oberen Abbildung sieht man gut, an welche GPIO-Pins vom Raspberry Pi diese Kontakte angeschlossen werden sollten. Für das Signal nutze ich den GPIO 17. Aber man kann hier auch einen anderen wählen. Meine Anleitung bezieht sich auf diesen. Für die 3,3 Volt bzw. für die Masse (GND) bietet der Raspberry ebenfalls noch einige weitere Pins. Auch diese kann man nutzen, wenn die hier vorgeschlagenen bereits belegt sind. Eine vollständige Darstellung über die Pins (GND, Spannung, GPIOs) findet sich z. B. hier (englisch).
Ansonsten gibt es hierzu nicht mehr zu erklären. Die Verdrahtung ist schnell durchgeführt (die Nummer des Signal-GPIO-Pins merken). Nun sollten wir die Software „LIRC“ installieren:
Installieren und Einrichten der Software LIRC
Das Installieren von LIRC gelingt schnell. Denn dieses Programm ist im offiziellen Repository enthalten.
Hinweis: Falls Sie auf Ihrem Raspberry Pi das Betriebssystem OSMC nutzen (KODI), dann ist LIRC bereits enthalten: Man wählt in der grafischen Oberfläche in den Einstellungen einfach den GPIO-Pin aus, an dem der Signal-Pin der Diode angeschlossen ist und danach das jeweilige Fernbedienungs-Layout.
Die meisten nutzen sicherlich das offizielle Raspberry Pi OS (derzeit auf Basis von Trixie). Dann holen wir uns erst einmal frische Daten auf die Himbeere:
sudo apt-get update
Nun installieren wir das aktuelle LIRC:
sudo apt-get install lirc
Das Programm sollte nun installiert sein. Das reicht aber noch nicht:
System mit LIRC und Diode bekannt machen
Als nächstes öffnen wir mit dem Texteditor ›nano‹ folgende Systemdatei:
sudo nano /etc/lirc/lirc_options.conf
Und hier ändern wir folgende Einträge:
driver = default device = /dev/lirc0
Bei nano speichert man Änderungen mit STRG + S und verlässt diesen Editor mit STRG + X.
Nun muss noch eine zweite Datei verändert werden. Wir öffnen also wieder mit nano:
sudo nano /boot/firmware/config.txt
Randbemerkung: Bei älteren Raspberry-OS-Versionen lautete dieser Pfad noch /boot/config.txt.
Dort tragen wir Folgendes ein:
dtoverlay=gpio-ir,gpio_pin=17
Falls Sie den Signal-Pin Ihrer Infrarot-Diode nicht an GPIO 17 angeschlossen hatten – sondern woanders – müsste dies hier natürlich entsprechend angepasst werden.
Erste Überprüfung
Nun prüfen wir, ob der LIRC-Service korrekt läuft bzw. führen nacheinander folgende Befehle aus:
sudo systemctl stop lircd.service sudo systemctl start lircd.service sudo systemctl status lircd.service
Wir stoppen den Prozess also zunächst. Dann starten wir ihn wieder. Danach rufen wir den Status ab. Hier sollte alles im grünen Bereich sein (Service gestartet).
Jetzt starten wir den Raspberry Pi neu (sudo reboot now).
Gleich werden wir sehen, ob die IR-Fernbedienung erkannt wird: Dafür müssen wir aber erneut den Dienst stoppen: sudo systemctl stop lircd.service
Denn jetzt starten wir ein Testprogramm in der Konsole:
sudo mode2 -d /dev/lirc0
(Zum Stoppen einfach STRG + C zusammen drücken.)
Dieses Testprogramm wird offenbar von LIRC bereit gestellt. Zielen Sie nun mit Ihrer Fernbedienung auf die IR-Diode an Ihrem Raspberry Pi und drücken Sie einige Tasten. Es sollten nun in der Konsole Ausgaben erscheinen (space, pulse, …).
Das funktioniert? Dann führen Sie erneut einen Neustart des Gerätes durch (sudo reboot now). Denn nun müssen wir noch die eigene Fernbedienung bzw. deren Tasten-Codes aufzeichnen und bestimmten Standard-Werten zuweisen:
Tasten-Codes der Fernbedienung auslesen und conf-Datei erstellen
Nun müssen wir die individuellen Codes auslesen, welche jeder Tastendruck auf der Fernbedienung sendet. Jeder Code wird dann einer Taste (einer genormten Tastenbezeichnung) zugeordnet. Hierzu wird eine Conf-Datei erstellt. Aber das muss man nicht manuell machen – Lirc bietet hierfür das kleine Tool irrecord:
sudo irrecord -d /dev/lirc0 /home/pi/meine_fernbedienung.conf
Man ruft es in der Konsole auf. Falls es hier zu Problemen kommt, sollte man ggf. vorher den Lirc-Dienst stoppen (sudo /etc/init.d/lircd stop).
Irrecord macht letzendlich Folgendes:
- Der Sende-Code jeder Taste wird ausgelesen.
- Jeder Code wird einer spezifischen Tastenbezeichnung (
KEY_RED,KEY_STOP,KEY_2, …) zugeordnet. - Mit diesen Daten wird eine meine_fernbedienung.conf-Datei erstellt.
Also los: Man muss leider Englisch können, denn irrecord führt den Benutzer durch verschiedene Stufen. Zunächst wird (via der Diode) das Umgebungslicht gemessen. Es darf nicht zu hell sein. Dann muss man zum Trainieren willkürlich viele Tasten auf der Fernbedienung je für ca. eine Sekunde lang drücken (das dauert etwas).
Den wichtigsten Teil hierbei stellt das Zuordnen der Tastenbezeichnungen dar. Diese sind genormt und es gibt entsprechend sehr viele davon. Irrecord erwartet je eine genaue Bezeichnung je Taste und diese Bezeichnungen findet man z. B. auf dieser Internetseite aufgelistet.
Beispiel:
Wir drücken auf der Fernbedienung die Taste 1. Irrecord realisiert diese Eingabe bzw. liest den Code aus. Kurz danach möchte es eine genaue Bezeichnung und diese lautet laut Liste: KEY_1. So geht man nun Schritt für Schritt vor. Nach jeder KEY-Eingabe drückt man die Enter-Taste und es geht mit dem Auslesen der nächsten Taste weiter.
Am Ende (wenn es keine weiteren Tasten mehr auf der eigenen Fernbedienung gibt), drückt man erneut Enter und irrecord hat nun die Conf-Datei erstellt. Diese befindet sich zunächst im eigenen Nutzer-Verzeichnis z. B. /home/pi/meine_fernbedienung.conf
Diese Datei musste ich jedoch bei Verwendung meiner Diode noch editieren, denn irrecord hatte einige Daten hinzugefügt, die die Funktionalität beeinträchtigten. Wir öffnen nun diese conf-Datei mit Nano:
nano /home/pi/meine_fernbedienung.conf
Ich musste dort die Werte 0xFFFFFFFF in der zweiten Spalte komplett entfernen. Vielleicht spielt dies bei Ihnen keine Rolle. Meine conf-Datei schaut dann so aus:
Inhalt Conf-Datei für Android TV Box X96 Mini Fernbedienung
# Please take the time to finish this file as described in
# https://sourceforge.net/p/lirc-remotes/wiki/Checklist/
# and make it available to others by sending it to
# <lirc@bartelmus.de>
#
# This config file was automatically generated
# using lirc-0.10.2(default) on Wed Jan 14 13:49:36 2026
# Command line used: -d /dev/lirc0 /home/pi/lircd.conf
# Kernel version (uname -r): 6.12.47+rpt-rpi-v8
#
# Remote name (as of config file): X96MiniAndroidFernbedienung
# Brand of remote device, the thing you hold in your hand:
# Remote device model nr:
# Remote device info url:
# Does remote device has a bundled capture device e. g., a
# usb dongle? :
# For bundled USB devices: usb vendor id, product id
# and device string (use dmesg or lsusb):
# Type of device controlled
# (TV, VCR, Audio, DVD, Satellite, Cable, HTPC, ...) :
# Device(s) controlled by this remote:
begin remote
name X96MiniAndroidFernbedienung
bits 32
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 9058 4442
one 621 1619
zero 621 512
ptrail 621
repeat 9059 2199
gap 107902
toggle_bit_mask 0x0
frequency 38000
begin codes
KEY_POWER 0x807F02FD
KEY_AUDIO 0x807F22DD #KD-Taste
KEY_PREVIOUS 0x807FAA55
KEY_PLAYPAUSE 0x807F5AA5
KEY_STOP 0x807F4AB5
KEY_NEXT 0x807F2AD5
KEY_RED 0x807FC23D
KEY_GREEN 0x807FF00F
KEY_VOLUMEDOWN 0x807F08F7
KEY_VOLUMEUP 0x807F18E7
KEY_LEFT 0x807F8A75
KEY_RIGHT 0x807F0AF5
KEY_UP 0x807F6897
KEY_DOWN 0x807F58A7
KEY_ENTER 0x807FC837
KEY_HOME 0x807F8877
KEY_BACK 0x807F9867
KEY_CONTEXT_MENU 0x807F32CD
KEY_INFO 0x807F00FF #Maussymbol
KEY_0 0x807F807F
KEY_1 0x807F728D
KEY_2 0x807FB04F
KEY_3 0x807F30CF
KEY_4 0x807F52AD
KEY_5 0x807F906F
KEY_6 0x807F10EF
KEY_7 0x807F629D
KEY_8 0x807FA05F
KEY_9 0x807F20DF
KEY_MUTE 0x807F827D
KEY_BACKSPACE 0x807F42BD
end codes
end remote
Nach Durchsicht wird das Prinzip dahinter sicherlich klarer erscheinen. Wie man sieht, kann man sich darin auch – mit # ausgegraute – Notizen machen.
Nun befindet sich diese conf-Datei noch im Home-Ordner. Da bringt sie uns nichts. Sie muss noch ins System-Verzeichnis von lirc kopiert werden:
sudo cp /home/pi/meine_fernbedienung.conf /etc/lirc/lircd.conf.d/meine_fernbedienung.conf
Der Ablageort für die Fernbedienungsdateien lautet also /etc/lirc/lircd.conf.d/.
Man kann dort übrigens auch mehrere Fernbedienungs-Konfigurationsdateien abspeichern. Man könnte den Raspberry Pi also gleichzeitig mit mehreren Fernbedienungen steuern. Lirc liest beim Neustart alle conf-Dateien in diesem Ordner ein.
Testen der Konfigurationsdatei am lebenden Objekt
Jetzt testen wir, ob die Codes bzw. ob die Konfigurationsdatei korrekt von Lirc berücksichtigt werden. Als erstes muss der Raspberry Pi (wieder einmal) neu gestartet werden:
sudo reboot now
Nun starten wir ein weiteres Hilfsprogramm von Lirc – genannt irw:
irw
Jetzt wartet das Programm auf Eingaben und wir drücken einige Tasten auf der Fernbedienung. Es sollte eine Ausgabe wie folgende erscheinen:
00000000807f8877 00 KEY_HOME X96MiniAndroidFernbedienung 00000000807f8877 01 KEY_HOME X96MiniAndroidFernbedienung 00000000807f08f7 00 KEY_VOLUMEDOWN X96MiniAndroidFernbedienung
Perfekt: irw listet die korrekten Eingaben auf bzw. Lirc hat die Konfigurationsdatei richtig ausgelesen. Sowohl die gedrückten Tasten werden gelistet wie auch der Name der aktuell hierfür genutzten Fernbedienung (beides steht je in der conf-Datei).
Wir beenden irw wieder mit STRG + C.
Zwischenfazit: Lirc liest nun konkrete Befehle der Fernbedienung aus und ordnet jeden Tastendruck einem bestimmten KEY zu. Damit alleine können wir in der Praxis allerdings noch nichts anstellen. Aber das Backend steht. Darum geht es nun noch etwas weiter in meiner Anleitung mit zwei Szenarien:
Kodi mit der Fernbedienung steuern

Für das Mediencenter Kodi ist eine solche IR-Fernbedienung prädestiniert. Das Steuern von Kodi mit einer Smartphone-App macht kein Vergnügen – nicht zuletzt weil man dort keine haptischen Tasten hat, die fühlbar sind.
Die IR-Fernbedienung kommuniziert ja bereits erfolgreich mit lirc. Davon weiß Kodi allerdings noch nichts. Daher benötigt es eine Hilfsdatei ➜ Lircmap.xml
Diese muss sich im User-Verzeichnis in einem Kodi-Unterordner befinden. Wir erstellen oder öffnen sie am besten mit nano:
nano /home/pi/.kodi/userdata/Lircmap.xml
Der Inhalt sollte diesem Schema folgen:

Dies ist ein Ausschnitt. Diese Datei sollte natürlich noch weitere Tasten gelistet haben. Ich konnte dies auch nur als Grafik einblenden, da der Editor dieser Seite die Zeichen dummerweise interpretiert.
Ganz oben muss der Name der eigenen Fernbedienung eingetragen werden (wie er in der lirc-conf steht, s. o). Und dann nutzt Kodi interne Bezeichnungen für typische Tasten auf der Fernbedienung. Jeder dieser internen Kodi-Bezeichnung (siehe diese Liste) ist die entsprechende Lirc-Bezeichnung zugeordnet (siehe diese Liste).
Damit müsste es (nach einem Neustart) eigentlich klappen. Da ich kein Kodi mehr nutze, kann ich dies leider derzeit nicht genau prüfen.
Aber jetzt wollen wir endlich Skripte mit der Fernbedienung starten:
Skripte / Befehle per Fernbedienung ausführen
Am Interessanten wäre das Ausführen von Skripten oder Befehlen, die man bereits über die Konsole ausführen kann. Hierzu nutzen wir das mitgelieferte Hilfsprogramm irexec und benötigen dafür noch eine eigene conf-Datei:
Als erstes erstellen wir diese irexec-conf-Datei im Userordner:
nano /home/pi/irexec-befehle.conf
Der Inhalt sieht – als Beispiel – z. B. so aus:
# kleine Lichterkette schalten begin button = KEY_POWER prog = irexec config = python3 /home/pi/00_Scripte/leds_schalten.py flags = quit end # grosse Lichterkette schalten begin button = KEY_RED prog = irexec config = python3 /home/pi/00_Scripte/relais1_schalten.py flags = quit end # Musik abspielen begin button = KEY_GREEN prog = irexec config = mpc play flags = quit end
Mit den ersten beiden Blöcken starte ich bestimmte Python-Skripte, die je an einem bestimmten Ort auf meinem Raspberry Pi gespeichert sind. Mit dem dritten Block starte ich den Audioplayer MPD (es ist ein mpd- bzw. mpc-eigener Befehl).
Das Schema sollte klar sein: Man müsste hier für eigene Ansprüche nur die jeweilige Taste ändern (wie in der Lirc-conf hinterlegt) und den eigentlichen Befehl (config-Zeile). Der Rest kann übernommen werden.
➜ Nun starten wir irexec erst einmal manuell über die Konsole zum Testen auf Basis dieser conf-Datei:
irexec /home/pi/irexec-befehle.conf
(Zum Beenden wieder STRG + C drücken.)
Jetzt sollten die Tastenbefehle die zuvor eingetragenen Befehle bzw. Skripte starten!
In meinen Aufzeichnungen finde ich noch diesen Hinweis: Falls sich irexec aufgrund fehlender Zugriffsrechte auf .cache beschwert, müsste man die Berechtigungen anpassen:
sudo chown pi:pi /home/pi/.cache chmod 700 /home/pi/.cache
Dann sollte es funktionieren. Aber natürlich soll irexec bei jedem Systemstart automatisch starten. Wir wollen dieses Programm ja nicht jedes Mal manuell über die Konsole ausführen. Daher installieren wir irexec als Service bzw. organisieren einen Autostart:
Zunächst erstellen wir eine neue Datei:
sudo nano /etc/systemd/system/irexec.service
Diese füllen wir mit Inhalt:
[Unit] Description=LIRC IRExec Service After=network.target [Service] ExecStart=/usr/bin/irexec /home/pi/irexec-befehle.conf WorkingDirectory=/home/pi User=pi Environment=HOME=/home/pi Restart=always [Install] WantedBy=multi-user.target
Obacht: Die Zeile ExecStart=/usr/bin/irexec /home/pi/irexec-befehle.conf gibt den Ort der irexec-conf-Datei an. Diese Datei muss dort natürlich existieren bzw. man muss diese Zeile entsprechend anpassen, wenn sich die Datei an einer anderen Stelle befindet oder wenn man sie anders nennen möchte. Und natürlich müsste man als User „pi“ unterwegs sein – ansonsten dies entsprechend ändern.
Nun registrieren wir diesen neuen Service in zwei Schritten:
sudo systemctl daemon-reload sudo systemctl enable --now irexec.service
Ob dieser Service korrekt läuft, prüft man mit sudo systemctl status irexec.service.
Das war’s. Man könnte anstelle des Dienstes irexec ggf. auch ganz einfach über die crontab starten: @reboot /usr/bin/irexec. Das wäre vielleicht einfacher bzw. nachvollziehbarer und besser zu administrieren.
Und jetzt noch einmal Neustarten.
Nun sollten automatisch die definierten Tasten der Fernbedienung definierte Befehle bzw. Skripte starten.
Ich steuere mit meiner Fernbedienung mehrere Relais bzw. schalte Steckdosen damit. Zudem bediene ich zwei direkt am Raspberry angeschlossene LED-Lichterketten und ich steuere ›MPD‹ (den Audioplayer) damit. So starte ich morgens nach dem Aufwachen noch mit halb geschlossenen Augen via Fernbedienung das Internetradio, nachdem ich zuvor die Steckdose der Anlage und eine der beiden Lichterketten aktiviert habe.
Wer Kodi nutzt, sollte sich Kodi-Send (play (bestimmte datei), stopp, vol+, …) ansehen. Die kurzen Befehle kann man direkt in die irexec-conf-Datei eintragen.




