Seit dem Kernel 2.6.35 haben sich einiges im Bezug auf den Umgang des Linux Kernels mit Fernbedienungen geändert. Im besonderen betrifft das die iMON-Geräte von SoundGraph. Um diese kümmert sich jetzt der Treiber 'imon', der sie als Eingabegeräte zur Verfügung stellt (/dev/input/eventX). Das führt dazu, dass eine klassische LIRC-Installation die Geräte nicht mehr erkennt. Einen ausführlichen Artikel findet man bei Jarod Wilson: http://wilsonet.com/?page_id=95 http://wilsonet.com/?page_id=99 (Eine alternative, detailierte Anleitung findet man auch unter http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/p9...)
LIRC Installation
Im Prinzip ist es aber einfach, die Fernbedienung wieder an LIRC anzubinden, um so seine gewohnte übliche Konfiguration weiterhin zu verwenden. Man muss lediglich Lirc mit dem devinput
Driver konfigurieren. Ich empfehle dafür, LIRC aus den Sourcen selbst zu übersetzen, da man dadurch flexibler bei der Wahl der Treibers ist, das Programm schon beim kompilieren entschlacken kann und es keine Hexerei ist.
- Installieren der notwendigen Pakete (als root oder mittels sudo):
~# apt-get install make build-essentials linux-source dialog
- Herunterladen des Quellcodes von http://sourceforge.net/projects/lirc/files/LIRC oder über http://www.lirc.org und entpacken.
- Konfigurieren und Installation von LIRC (als root oder mittels sudo in dem entpackten Ordner):
~# ./setup.sh # hier den gewünschten Treiber (devinput) auswählen ~# make ~# make install
Konfigurieren von LIRC
Jetzt muss man LIRC noch für die iMON Fernbedienung über die Input Devices konfiguriert werden (siehe hierfür auch http://lirc.org/html/devinput.html). Dazu editiert man die Datei hardware.conf
, die abhängig von der verwendeten Distribution meist unter /etc/lirc
. Essentiell sind hierbei vor allem die folgenden Zeilen:
LOAD_MODULES=true DRIVER="devinput" DEVICE="/dev/input/by-id/usb-15c2_ffdc-event-if00"
Den Pfad zum Device sollte man unbedingt über die ID festlegen, da die nummerierten Devices unter /dev/input/event[X]
in ihrer Reihenfolge variieren können. Die gesuchte ID stellt sich zusammen aus der Hersteller und Geräte ID. Die iMON Geräte liefern hier aber mehrere Geräte, da die Fernbedienung einen Maus und einen Keyboard Modus unterstützt. Der Keyboard-Modus ist hier üblicherweise mit der Endung -if00
verknüpft. Abschließend kann man LIRC (neu)starten (/etc/init.d/lircd restart
) und die Konfiguration mittels irw
testen. Dabei sollten die einzelnen Codes der Fernbedienung ausgegeben werden, bis man das Programm mit Ctrl-C
abbricht.
Patchen von iMON
Für die iMON Geräte kann es hilfreich sein, den Moduswechsel zwischen Keyboard und Maus zu deaktivieren, um so den dafür vorgesehenen Knopf auf der Fernbedienung als "Hinauf"-Taste zu verwenden (und die übrigen Knöpfe entsprechend für die anderen Cursor-Tasten zu konfigurieren). Dafür setzt man im Kernel Modul für den iMON Driver den paramter nomouse auf 1, indem man die Datei /etc/modprobe.d/imon.conf
erstellt oder bearbeitet und die Zeile
options imon nomouse=1
einfügt. Bei manchen Versionen des Drivers ist diese Option aber leider fehlerhaft und zeigt daher keine Wirkung. Abhilfe schafft ein Patch, den man nach dieser Anleitung einspielt: (Von http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/p9...)
- Herunterladen des Patches von http://sourceforge.net/mailarchive/forum.php?thread_name=AANLkTiks4uM3an... (ganz am unteren Ende der Seite)
- Kernel Sourcen installieren
~# apt-get install linux-source
- Vorbereiten
~# cd /usr/src/linux-source-2.6.35/linux-source-2.6.35 /usr/src/linux-source-2.6.35/linux-source-2.6.35# make oldconfig && sudo make prepare /usr/src/linux-source-2.6.35/linux-source-2.6.35# sudo make modules_prepare
- Einspielen des Patches (Achtung, der Sub-Pfad zur Datei
imon.c
kann je nach Distribution abweichen!)~# cd /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# patch < imon.c.patch
- Altes Modul sichern
~# cd /lib/modules/2.6.35-23-generic/kernel/drivers/media/IR /lib/modules/2.6.35-23-generic/kernel/drivers/media/IR# ll insgesamt 212 drwxr-xr-x 3 root root 4096 2010-11-08 15:06 ./ drwxr-xr-x 7 root root 4096 2010-11-08 15:06 ../ [...] -rw-r--r-- 1 root root 37884 2010-11-06 01:44 imon.ko [...] /lib/modules/2.6.35-23-generic/kernel/drivers/media/IR# mv imon.ko ~/imon.ko.orig
- Alte Module entladen
~# /etc/init.d/lircd stop lirc stop/waiting ~# lsmod | grep imon rc_imon_pad 1437 0 imon 21769 0 ir_core 14654 9 ir_lirc_codec,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,rc_imon_pad,ir_rc5_decoder,ir_nec_decoder,imon ~# rmmod imon
- gepatchtes Modul kompilieren
~#cd /usr/src/linux-source-2.6.35/linux-source-2.6.35 /usr/src/linux-source-2.6.35/linux-source-2.6.35# sudo make clean CLEAN /usr/src/linux-source-2.6.35/linux-source-2.6.35 CLEAN .tmp_versions ## Sollte eine Datei "Modules.symvers" oder ähnlich vorhanden sein, dann weg damit. /usr/src/linux-source-2.6.35/linux-source-2.6.35# find -name *symvers* ./drivers/media/IR/Module.symvers /usr/src/linux-source-2.6.35/linux-source-2.6.35# rm ./drivers/media/IR/Module.symvers ## compilieren /usr/src/linux-source-2.6.35/linux-source-2.6.35# cd drivers/media/IR/ /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules ## Modul händisch laden (zu Testzwecken) /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# insmod imon.ko /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# lsmod | grep imon rc_imon_pad 1437 0 imon 20985 0 ir_core 14654 9 rc_imon_pad,imon,ir_lirc_codec,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_rc5_decoder,ir_nec_decoder /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# tail -f /var/log/syslog kernel: [ 1400.240517] Registered IR keymap rc-imon-pad kernel: [ 1400.240659] input: iMON Remote (15c2:ffdc) as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/rc/rc0/input4 kernel: [ 1400.240758] rc0: iMON Remote (15c2:ffdc) as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/rc/rc0 kernel: [ 1400.268015] imon 4-2:1.0: Unknown 0xffdc device, defaulting to VFD and iMON IR (id 0x23) kernel: [ 1400.284014] imon 4-2:1.0: iMON device (15c2:ffdc, intf0) on usb<4:3> initialized kernel: [ 1400.284046] usbcore: registered new interface driver imon kernel: [ 1400.756122] input: iMON Remote (15c2:ffdc) (lircd bypass) as /devices/virtual/input/input5 ## Installieren /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# sudo cp imon.ko /lib/modules/2.6.35-23-generic/kernel/drivers/media/IR /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# depmod -ae WARNING: -e needs -E or -F /usr/src/linux-source-2.6.35/linux-source-2.6.35/drivers/media/IR# modprobe imon kernel: [ 2009.092892] Registered IR keymap rc-imon-pad kernel: [ 2009.093281] input: iMON Remote (15c2:ffdc) as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/rc/rc0/input6 kernel: [ 2009.093458] rc0: iMON Remote (15c2:ffdc) as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/rc/rc0 kernel: [ 2009.124022] imon 4-2:1.0: Unknown 0xffdc device, defaulting to VFD and iMON IR (id 0x23) kernel: [ 2009.124028] imon 4-2:1.0: imon_set_display_type: overriding display type to 1 via modparam kernel: [ 2009.136515] imon 4-2:1.0: iMON device (15c2:ffdc, intf0) on usb<4:3> initialized kernel: [ 2009.136545] usbcore: registered new interface driver imon kernel: [ 2009.876613] input: iMON Remote (15c2:ffdc) (lircd bypass) as /devices/virtual/input/input7
- LIRC neu starten
~# /etc/init.d/lircd start
Dannach funktioniert der oben erwähnte nomouse Modus auch und man kann die Buttons der Fernbedienung als Steuerkreuz nutzen, ohne Gefahr zu laufen, den Eingabemodus zu wechseln. Testen kann man das, indem man mit irw
die Inputsignale der Fernbedienung beobachtet und auf den Keyboad/Mouse Button drückt. Vor dem Patch kam hier kein Signal an, da die Taste nicht an LIRC weitergereicht wurde, sondern im Treiber den Mode-Switch signalisiert hat. Jetzt wird die Taste wie jede andere an LIRC zur Verarbeitung weitergereicht.
- Blog von Peter Schmidt
- 6945 Aufrufe