Arch Linux – LIRC Konfiguration mit MCE RC6 IR und Lircmap.xml für XBMC (Logitech Harmony)

Vor kurzem habe ich bereits drei HowTo’s für Ubuntu veröffentlicht.

HTPC – Media Center – Logitech Harmony reagiert träge unter Windows und Linux
Linux – LIRC – XBMC mit Logitech Harmony steuern – Lircmap.xml und Keyboard.xml
Ubuntu (alle Versionen) – LIRC Konfiguration mit MCE RC6 IR605Q (147a:e03e) und Logitech Harmony

Nun möchte ich den MCE RC6 Infrarot Empfänger – Modell IR605Q aber mit dem aktuellsten Arch Linux betreiben (Stand: 03.02.2012).

EDIT: Einen Gutscheincode für den RC6 Infrarot Empfänger – Modell IR605Q gibt es hier – gültig bis 7. Februar 2012!

lsusb | grep -i formosa
Bus 003 Dev 003: ID 147a:e03e Formosa Industrial Computing, Inc. Infrared Receiver [IR605A/Q]
uname -r
3.2.2-1-ARCH
lircd -v
lircd 0.9.0

Diese HowTo funktioniert auch für Ubuntu 11.10 (Danke Fab) und sollte dann auch für 12.04 funktionieren!

ACHTUNG: In der Harmony muss das richtige MCE Profil (Windows Media Center SE) ausgewählt sein – HowTo – Danke Fab.

UPDATE_2013-01-18: Mit der systemd Umstellung hat sich auch die LIRC Konfiguration ein klein wenig geändert – hier mehr.

Das Besondere an dieser LIRC-Konfiguration ist, dass es einige Änderungen in der Kernel- und LIRC-Version gab – der aktuelle Kernel erkennt den MCE-IR-Empfänger bereits ohne LIRC! Daher ist in der hardware.conf REMOTE_DRIVER und REMOTE_MODULES leer …

vi /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Windows Media Center Transceivers/Remotes (all)"
REMOTE_MODULES=""
REMOTE_DRIVER=""
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF="mceusb/lircd.conf.mceusb"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""

#Enable lircd
START_LIRCD="true"

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

#Try to load appropriate kernel modules
LOAD_MODULES="true"

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

#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""

… und hier noch die dazugehörige lircd.conf.

vi /etc/lirc/lircd.conf
#This configuration has been automatically generated via
#the Ubuntu LIRC package maintainer scripts.
#
#It includes the default configuration for the remote and/or
#transmitter that you have selected during package installation.
#
#Feel free to add any custom remotes to the configuration
#via additional include directives or below the existing
#Ubuntu include directives from your selected remote and/or
#transmitter.

#Configuration for the Windows Media Center Transceivers/Remotes (all) remote:
include "/usr/share/lirc/remotes/mceusb/lircd.conf.mceusb"

BESONDERHEIT: Damit nicht der Kernel die Eingaben der Fernbedienung verarbeitet, sondern LIRC, muss noch ein zusätzlicher Befehl beim Starten ausgeführt werden. Diesen packen wir am Besten in die rc.local.

vi /etc/rc.local
echo lirc > /sys/class/rc/rc0/protocols

Des Weiteren wurden bei LIRC 0.9.0 die Namen der LIRC-Tasten verändert (/usr/share/lirc/remotes/mceusb/lircd.conf.mceusb). Daher müssen wir noch die XBMC Lircmap.xml (von der Ubuntu-HowTo) anpassen.

vi /home/USERNAME/.xbmc/userdata/Lircmap.xml
<!-- 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   -->
<!--                                                                              -->
<!--                              Logitech Harmony                                -->
<!--                          loggn.de - Nico Hartung                             -->
<!--                        https://www.loggn.de/linux-ubuntu-lirc-xbmc-mit-logitech-harmony-steuern-lircmap-xml-und-keyboard-xml/                           -->
<!--                                                                              -->
<lircmap>
	<remote device="mceusb">
		<!-- no Display -->
		<power>KEY_POWER</power>
		<teletext>Teletext</teletext>
		<menu>KEY_DVD</menu>
		<back>KEY_BACK</back>
		<info>More</info>
		<guide>Guide</guide>
		<red>KEY_RED</red>
		<green>KEY_GREEN</green>
		<yellow>KEY_YELLOW</yellow>
		<blue>KEY_BLUE</blue>
		<left>KEY_LEFT</left>
		<right>KEY_RIGHT</right>
		<up>KEY_UP</up>
		<down>KEY_DOWN</down>
		<select>KEY_OK</select>
		<volumeplus>KEY_VOLUMEUP</volumeplus>
		<volumeminus>KEY_VOLUMDOWN</volumeminus>
		<pageplus>KEY_CHANNELUP</pageplus>
		<pageminus>KEY_CHANNELDOWN</pageminus>
		<mute>KEY_MUTE</mute>
		<play>KEY_PLAY</play>
		<pause>KEY_PAUSE</pause>
		<stop>KEY_STOP</stop>
		<forward>KEY_FORWARD</forward>
		<reverse>KEY_REWIND</reverse>
		<skipplus>KEY_NEXT</skipplus>
		<skipminus>KEY_AGAIN</skipminus>
		<record>KEY_RECORD</record>
		<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>
		<clear>KEY_CLEAR</clear>
		<enter>KEY_ENTER</enter>
		<!-- with Display -->
		<display>Aspect</display>
		<start>Home</start>
		<myvideo>Videos</myvideo>
		<mymusic>Music</mymusic>
		<mypictures>Pictures</mypictures>
		<mytv>TV</mytv>
		<!-- old versions of harmony -->
		<star>Star</star>
		<hash>Hash</hash>
	</remote>
</lircmap>

Die dazu passende Keyboard.xml bzw. Keymap.xml findet ihr in der Ubuntu-HowTo.

Viel Spaß! 😉

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

22 Gedanken zu „Arch Linux – LIRC Konfiguration mit MCE RC6 IR und Lircmap.xml für XBMC (Logitech Harmony)“

  1. Hi Nico,

    erstmal: vielen Dank für dieses coole Tutorial – hat mir schon ein Stück weitergeholfen 🙂

    Leider habe ich unter Arch es noch nicht geschafft einen Formosa-Empfänger mit der Harmony 700 zum laufen zu bekommen.
    Liegt vielleicht aber auch daran, dass ich den Black RC6 und nicht wie Du den Mini RC6 habe.
    Daher auch die unterschiedlichen Product-IDs: „147a:e042“ und eben die Harmony 700.

    „irw“ zeigt mir nichts wenn ich eine Taste drücke, aber der Empfänger blinkt. Laut dmesg ist der Empfänger angeschlossen und wird wohl auch erkannt:

    [root@hugin ~]# dmesg | grep -i formosa
    [ 13.590433] generic-usb 0003:147A:E042.0003: hiddev0,hidraw2: USB HID v1.00 Device [Formosa21 eHome Infrared Transceiver] on usb-0000:00:12.0-4/input1

    Das Kernelmodul „mceusb“ hab ich geladen:
    [root@hugin ~]# lsmod | grep rc
    ir_lirc_codec 4091 0
    lirc_dev 9327 1 ir_lirc_codec
    ir_rc6_decoder 2057 0
    ir_rc5_decoder 1641 0
    rc_core 13280 8 mceusb,ir_nec_decoder,ir_rc5_decoder,ir_rc6_decoder,ir_jvc_decoder,ir_sony_decoder,ir_mce_kbd_decoder,ir_lirc_codec
    crc16 1359 1 ext4

    Und eben deine schönen Configs „mitgenommen“ 😉 Das Howto über die Konfiguration der Harmony habe ich ebenfalls durchgemacht.
    Leider hab ich keine Geräte unter /dev/input/by-id/ daher weiß ich auch nicht wie ich die Fernbedienung überhaupt ansteuern soll.

    Gibt’s da ein anderes Kernelmodul, das mir die fehlenden Einträge erzeugt?

    Vielen Dank und Gruß,
    Pieter

  2. Hi Pieter,
    ich habe mich mit dem Problem (IR606Q, 147a:e042) auf Wunsch vom Betreiber des CoHaus-Shops schon beschäftigt. Hier meine Analyse:

    IR606Q
    lsusb
    Bus 003 Device 003: ID 147a:e042 Formosa Industrial Computing, Inc.

    HINTERGRUND
    Dass richtige Treiber-Modul wäre mceusb.

    Bei Linux-Versionen bis Kernel 2.6 und Lirc-Version 0.8.x (bis Ubuntu 10.04) sind die Treiber-Module (mceusb) in Lirc enthalten.
    Bei Linux-Versionen ab Kernel 3.0 und Lirc-Version 0.9.x (ab Ubuntu 10.10, Arch Linux) sind die Treiber-Module (mceusb) im Kernel enthalten.

    Mit keiner dieser Varianten funktioniert dieser IR-Empfänger „out-of-the-box“! Bis Ubuntu 10.04 (Kernel 2.6 und LIRC 0.8.x) ist das Beheben des Problems einfacherer als mit neueren Versionen.

    GRUND
    Das Modul „mceusb“ erkennt den IR-Empfänger nicht, weil die Device-ID nicht im Quellcode von mceusb.c drinsteht.
    Man müsste in der mceusb.c folgende Zeilen hinzufügen …

    /* Formosa21 / eHome Infrared Receiver */
    { USB_DEVICE(VENDOR_FORMOSA, 0xe042) },

    LÖSUNG
    bis Ubuntu 10.04 oder Kernel 2.6 mit LIRC 0.8.x
    Man muss wie in meinem Beitrag (unteren Abschnitt, bis 10.04 – https://www.loggn.de/ubuntu-lirc-konfiguration-mit-rc6-ir605q-147a-e03e-und-logitech-harmony/ einfach das Lirc-Modul patchen, nur dass man nicht wie in der HowTo …

    /* Formosa Industrial Computing IR605Q */
    { USB_DEVICE(VENDOR_FORMOSA, 0xe03e) },

    … hinzufügt sondern …

    /* Formosa21 / eHome Infrared Receiver */
    { USB_DEVICE(VENDOR_FORMOSA, 0xe042) },

    ab Ubuntu 10.10 oder Kernel 3.x mit LIRC 0.9.x
    Man muss sich über die jeweiligen Paket-Manager die Kernel- bzw. Linux-Headers runterladen, im Quellcode unter drivers/media/rc/mceusb.c (meisten /usr/local/src/linux*/drivers/media/rc/mceusb.c) die oben geschriebenen Zeilen hinzufügen. Dann je nach Linux-Distri den Kernel kompilieren und installieren… ziemlich zeitaufwendig, mit einem Intel Atom ca. 6-8 Stunden.

    BUG-REPORT
    Ich habe bei der offiziellen Kernel-Entwicklung (Kernel.org), Ubuntu und Arch Linux den Fehler gemeldet:

    https://bugzilla.kernel.org/show_bug.cgi?id=42926
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/954772
    https://bugs.archlinux.org/task/28904

    Gruß Nico

    1. Alternative zum Patchen für Kernel 3.x:


      echo 147a e042 > /sys/bus/usb/drivers/mceusb/new_id

      Das sagt dem Modul, dass es zusätzlich zu den im Modul definierten Vendor-Device-ID-Tupeln auch auf das angegebene reagieren soll. So spart man sich das Kompilieren.

      EDIT NICO:
      Info: Nur bei IR606Q (147a e042), nicht bei IR605Q (147a e03e) – bei IR605Q so wie in der HowTo!

          1. EDIT NICO:
            Info: Nur bei IR606Q (147a e042), nicht bei IR605Q (147a e03e) – bei IR605Q so wie in der HowTo!

            EDIT:
            Habe es hinbekommen:
            echo 147a e042 > sudo tee /sys/bus/usb/drivers/mceusb/new_id

            danach musste ich noch in /etc/lirc/hardware.conf
            die Sektionen:
            REMOTE_MODULES=““
            REMOTE_DRIVER=““

            manuell leeren, danach ging es wieder

  3. I do not speak German, but I was able to follow enough to fix my issue with the same remote on XBMC.

    Thank you very much for this useful post.

  4. Hallo Nico,

    kannst du dies mit dem Kernel kompilieren etqwas besser beschreiben. Ich wollts nach der Anleitung aus dem Wiki bei ubuntuusers machen habe dabei aber keinen Erfolg da viele verschiedene Versionen und Zwischenschritte die ich meiner meinung nach nicht ausfuehren muss. Ich will eigentlich nur den Sourcecode herunterladen, da die mceusb.c entsprechend abaendern und dann ohne weitere Aenderungen kompilieren.
    Stehe auf dem Schlauch. 🙁

    1. Hi Chilango, hast du den IR606Q mit „147a:e042“? Welche Distri? Arch? Ubuntu?

      Das ist ziemlich tricky …

      Ja genau, die Kernel-Source herunterladen, die Änderungen machen, kompilieren, installieren und update-grub. Diesen Spaß musst du dann bei jedem Update machen, wenn ein Kernel-Update installiert wird.

      Hier ein alter Artikel (wahrscheinlich hat sich einiges geändert) – https://www.loggn.de/linux-kernel-backen-nach-debian-art/

      Gruß Nico

  5. Moin, ich hab auch ein kleines Problem und zwar habe ich mir den IR606Q angeschafft und alles wie hier im beschrieben durchgeführt. Nur funktionieren will es bis jetzt noch nicht…erhalte bei „irw“ keine Ausgabe der Tasten nur der Empfänger leuchtet rot auf 🙁 Gerät wurde soweit erkannt:
    lsusb

    Bus 005 Device 002: ID 147a:e042 Formosa Industrial Computing, Inc.

    Laut dmesg ist der Empfänger angeschlossen und wird wohl auch erkannt:
    [ 13.364543] generic-usb 0003:147A:E042.0001: hiddev0,hidraw0: USB HID v1.00 Device [Formosa21 eHome Infrared Transceiver] on usb-0000:00:13.0-2/input1

    Was mir bereits aufgefallen ist, ist das die Datei /dev/lirc0 nicht vorhanden ist.
    Habe einen den Kernel 3.X und schon bereits den Befehl
    „echo 147a e042 > sudo tee /sys/bus/usb/drivers/mceusb/new_id“ durchgeführt aber keine Veränderung 🙁

    Hat noch wer eine Idee?
    Gruß

    1. Hi Script1,
      mache dich mal mit …

      su -

      … zu root.
      Dann ein …

      echo 147a e042 > tee /sys/bus/usb/drivers/mceusb/new_id
      modprobe -r mceusb
      modprobe mceusb

      Gruß Nico

      1. Mh leider keine Veränderung 🙁 Wie gesagt was mir noch aufgefallen ist ist, dass die Datei /dev/lir0 fehlt..ist das normal?

        Gruß

        1. Hi Script1,
          nein das ist so nicht normal.

          root@elfriede:~$ ls -lsa /dev/lir*
          0 crw------- 1 root root 251, 0 2012-07-13 16:47 /dev/lirc0
          0 lrwxrwxrwx 1 root root 19 2012-07-13 16:47 /dev/lircd -> /var/run/lirc/lircd=

          Es hat auch definitiv noch nichts mit lirc zu tun, sondern tatsächlich mit dem Kernel-Modul mceusb. Ich kann dir an diesem Punkt wahrscheinlich nicht mehr helfen, da ich hier nur einen IR605Q habe. Sorry. 🙁

          Welche Linux-Distri nutzt du eigentlich?

          Gruß

          1. Also bei mir erscheint folgendes „nur“:

            root@xbmc:~# ls -lsa /dev/lir*
            0 lrwxrwxrwx 1 root root 19 2012-07-17 14:45 /dev/lircd -> /var/run/lirc/lircd

            Hat die nicht noch iwer ne Idee drehe langsam hier durch ;P

  6. Hi, folgendes Problem:

    habe seit Heute den IR605Q Empfänger, vorher habe ich eine einfach Tastatur genommen aber die ist mir inzwischen zu unhandlich.

    Wie genau muss ich was installieren und einstellen damit mein Linux Ubuntu HTPC den Empfänger erkennt und meine Harmony genau so erkennt wie eine Tastatur?

    MfG

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert