Fernbedienung - USB X10
Beschreibung
Diese Fernbedienung ist seit längerer Zeit bei jedem PC vom ALDI dabei. Außerdem wird sie seit einiger Zeit vom Restposten-Händler Pollin.de verkauft. Ansonsten einfach mal bei Ebay reinschauen oder bei BSS-Computer. Das tolle an dieser Fernbedienung ist, dass diese mit Funk und nicht mit Infrarot arbeitet. Die Reichweite ist ungefähr 10 m. Durch eine Ziegelwand (nicht Stahlbetondecke) geht sie auch noch.
Beschriftung auf der X10 Rückseite der Fernbedienung: RF Remote Control, P/N 20017670, FCC ID: B4S20016398, CE0536, Made in China by X10
Es gibt mehrere Fernbedienungen, welche mit demselben Treiber unter Linux laufen. Eine davon mit integriertem Mini-Joystick für Mausbedienungen wurde zusammen mit der ATI "All-In-Wonder" Grafikkarte verkauft (Fernbedienung - ATI USB Remote Wonder). Eine andere Variante ist unter dem Namen "Lola" bekannt [1].
Bilder
Konfiguration
Varianten
Es gibt insgesamt drei Möglichkeiten die Fernbedienung unter Linux zu verwenden
- LIRC über das Kernel Modul lirc_atiusb
- LIRC über den Treiber --driver=atilibusb
- Kernel Modul ati_remote (ohne LIRC), unterstützt mit dem original Kernel Modul derzeit nicht alle Tasten (Kernel Modul mit allen Tasten hier)
Im folgenden wird die erste Variante beschrieben. Diese hat den Vorteil, dass man das Verhalten über die Module-Parameter sehr flexibel einstellen kann. Welche das genau sind siehe
modinfo lirc_atiusb
Kompilieren von mind. LIRC 0.7.0
LIRC 0.7.0 runterladen und entpacken anschließend in Verzeichnis wechseln
- tar –xzvf lirc-0.7.0.tar.gz
- cd lirc-0.7.0
im LIRC Verzeichnis:
- ./autogen.sh
- ./setup.sh
-> grafisches Tool für Treiber
Folgendes auswählen:
- 1 - Driver configuration
- 8 - USB devices
- 1 - ATI/NVIDIA/X10
- 4 - Save configuration & configure
ACHTUNG notwendig fürs kompilieren: Der Symbollink /usr/src/linux muß auf die Kernel-Sourcen des (verwendeten) Kernels weisen. Die Kernel-Sourcen sind unter /usr/src/<Versionsnummer des Kernels> (weiß jetzt nicht ob dies Distributionsabhängig ist). Ohne Kernel-Sourcen kann nicht kompiliert werden. Eventuell müssen diese runtergeladen und ggf. kompiliert werden.
SUSE: Installation mit Yast: suche "kernel-source" und ggf "kernel-update-tool"
Debian basierte: siehe http://linuxger.ircland.de/index.php/Kernel_Module_Build_Environment_unter_Debian_einrichten
ctvdr 4.5: Auswahl von lirc bei der Installation (vor dem kompilieren) ist sinnvoll, auch wenn man dort noch kein USB auswählen kann. Später in der /etc/lirc/hardware.conf den Aufruf der richtigen Module (lirc_dev und lirc_atiusb) kontrollieren. Auswahl bei lirc 0.8 setup.sh ebenfalls
- 1/ATI.
Einen symbolischen Link kann man mit folgendem Befehl erstellen:
- cd /usr/src
- ln –s linux-VersionsnameKernel linux
Beispiel bei mir (anzeigen mit ls -l):
linux -> linux-2.4.29
Kompilieren und Installieren:
- make
- make install
Module laden
Einfach in ein Skript eintragen, welches bei jedem Start ausgeführt wird (z.B. SuSE /etc/init.d/boot.local)
- modprobe lirc_dev
- modprobe lirc_atiusb
ACHTUNG: Es muß USB und input laufen.
->Beim Kernel kompilieren: Unter „input core support“ müssen die Optionen „input core support“ und „event interface support“ aktiviert sein
In neueren Kerneln (2.6er Reihe) darf NICHT "Device Drivers / USB support / <M> ATI / X10 USB RF remote control" ausgewählt werden
(bei 2.6.23.11 Device drivers / Input device support / Miscellaneous devices / ATI / X10 USB...)
LIRC Konfiguration
Hinweis: Wenn keine passende Konfigurations-Datei (lircd.conf) vorhanden ist, so kann diese mit dem von LIRC mitgelieferten Programm „irrecord“ erstellt werden. Dazu:
- cd /usr/local/bin
- ./irrecord output_lircd.conf
Für die Medion USB Fernbedieung habe ich die lircd.conf bereits erstellt (siehe Anhang) ihr braucht diese nur noch nach /etc/lircd.conf kopieren.
Bei der Erstellung eigener lircd.conf: Leerzeichen z.B. im Namen der Fernbedienung "Medion X 10" führen zu "Nichtakzeptanz" der ganzen Konfiguration also "Medion_X_10".
Programm lirc ausführen:
- lircd –d /dev/lircd –c /etc/lircd.conf
Dieser lircd-Aufruf sollte so nicht funktionieren; laut http://www.lirc.org/html/lircd.html dient -c zur Kontaktierung eines lircd-Servers im Netzwerk, aber nicht zur Angabe der Konfigurationsdatei. Ein einfaches lircd reicht zum Start.
ACHTUNG: Wenn alle Anwender auf das Lirc-Device Zugriff haben sollen, so müssen die Rechte von /dev/lircd entsprechend angepasst werden:
- chmod 666 /dev/lircd
Versuchsphase
Mit dem ebenfalls mitgelieferten Programm „irw“ könnt ihr überprüfen ob alles funktioniert. Führt dazu einfach dieses Programm aus und betätigt ein paar Tasten eurer Fernbedienung. Darauf müsste eine Ausgabe am Bildschirm erscheinen.
- cd /usr/local/bin
- ./irw
Anschließend ist ein "Anlernen" des vdr erforderlich. Dazu remote.conf und remote.LIRC.conf in /var/lib/vdr umbenennen. Beim nächsten Start fragt vdr (am Fernseher!) nach den notwendigen Tastenbelegungen. Wenn nur remote.conf gelöscht oder umbenannt wird so versucht vdr zunächst aus einer remote.KBD.conf (KeyBorD) und remote.LIRC.conf eine "neue" remote.conf zu generieren. Dies ist auch der einfachste Weg die Dateien zu editieren: lirc.conf ausdrucken und anhand dieser die remote.LIRC.conf anpassen. Anschließend Remote.conf umbenenen und das ganze neu starten. Vdr findet die geänderte remote.LIRC.conf und baut eine neue remote.conf.(Achte auf Groß- und Kleinschreibung)
Programme und Skripte ausführen
Wird durch den Daemon irexec ermöglicht (zu finden unter /usr/local/bin)
Siehe hierzu den nächsten Punkt lircrc
Konfiguration der lircrc zum Ausführen von Aktionen
Konfigurations-Datei lircrc wird unter /etc/lircrc oder unter /home/anwendername/.lircrc abgespeichert.
Beispielhafter Aufbau der lircrc:
begin prog = irexec # Daemon für Skript- und Programmausführungen button = tastenName # tastenName ist in der lircd.conf definiert config = /sbin/shutdown -h now # Auszuführendes Programm mode = modusName # Modus: Schaltet Modus ein oder aus (siehe weiter unten) repeat = 0 # Wiederholung an oder aus (0 oder 1) remote = Medion_X10 # Name der Fernbedienung in der lircd.conf end
Beispielhafter Aufbau für einen Modus in der lircrc:
begin modusName begin prog = ... ... end end
Tasten-Wiederholungsrate einstellen
Über den lirc_atiusb Kernel-Module Parameter repeat kann man die Verzögerung für die Tasten-Wiederholungsrate einstellen. In /etc/modules.conf dazu folgenden Eintrag vornehmen (in 1/100 Sekunden, default ist 10 was etwas schnell ist)
options lirc_atiusb repeat=25
Bei aktuellen Linux Distribution dürfen die Änderungen nicht direkt in /etc/modules.conf vorgenommen werden sondern es gibt für LIRC eine eigene Datei unter /etc/modules.d/lirc. Nach Änderungen in dieser Datei muss die Datei /etc/modules.conf durch Aufruf von update-modules aktualisiert werden.
Wer das Problem der "doppelten" Reaktion auf einen Tastendruck hat, sollte auch mal prüfen, ob das nicht evtl. daran liegt wie er den VDR aufruft. Eventuell übergibt man dem VDR schon das LIRC-Device als Parameter ("--lirc=/dev/lircd"), da man diesen auch mit LIRC-Unterstützung kompiliert hat und ruft gleichzeitig das remote-Plugin mit dem LIRC-Device auf ("-l /dev/lircd"), da man diesen Eintrag, warum auch immer, noch drin hat. Das Ergebnis dieser Konstellation ist, dass auf jeden Tastenruck die doppelte Reaktion folgt, also immer 2 Kanäle geschaltet werden und das Menü beim Aufrufen gleich wieder verlassen wird...
Kanäle - Mehrere FB's gleichzeitig nutzen
Einstellen eines Kanals an der Fernbedienung
1. Setup(S)-Taste an der Fernbedienung drücken bis die LED erlischt
->Daraufhin blinkt die LED
->Die Anzahl des Blinkens entspricht dem momentan eingestellten Code
2. Code eingeben: 1 bis 16
3. Setup(S)-Taste an der Fernbedienung drücken
->Die LED blinkt erneut
->Die Anzahl des Blinkens entspricht dem neu eingestellten Code
Sollte die Fernbedienung nicht wie beschrieben reagieren helfen ggfs. frische Batterien.
Anpassen der Einstellungen für das lirc_atiusb Kernel-Modul
Um festzulegen, welche Kanäle von LIRC ausgewertet werden sollen, muss die 'channel acceptance bit mask' festgelegt werden.
Jeder Kanal für den in der 16-bit Maske eine 1 gesetzt wird, wird ausgewertet.
Wird eine 0 gesetzt, wird der enstsprechende Kanal ignoriert.
Das Setzen der Maske wird über den Parameter 'mask' des lirc_atiusb Moduls realisiert.
Dazu ist z.B. ein Eintrag in der /etc/modules.conf notwendig:
- options lirc_atiusb mask=0xffff
Unter ubuntu karmic gibt es die modules.conf nicht mehr. Es muss eine neue Datei unter /etc/modprobe.d/ angelegt werden. Es empfiehlt sich den Namen des Moduls, also lirc_atiusb.conf, zu nutzen. In dieser Datei den options Eintrag erstellen und im Anschluss funktionieren die Kanäle auch unter karmic.
In diesem Beispiel werden alle Kanäle akzeptiert, was der Default-Einstellung des Moduls entspricht.
mask-Werte für die einzelnen Kanäle:
1: 0x0001 2: 0x0002 3: 0x0004 4: 0x0008 5: 0x0010 6: 0x0020 7: 0x0040 8: 0x0080 9: 0x0100 10: 0x0200 11: 0x0400 12: 0x0800 13: 0x1000 14: 0x2000 15: 0x4000 16: 0x8000
Um mehrere Kanäle freizuschalten, werden einfach die einzelnen gewünschten Kanäle mit den Werten der obigen Tabelle addiert.
Beispiele:
Alle geradzahligen Kanäle:
- mask=0xaaaa
Alle ungeradzahligen Kanäle:
- mask=0x5555
Kanäle von 1-8:
- mask=0x00ff
Kanäle 1,6,8 und 13:
- mask=0x10a1
Meine lircd.conf für die Medion USB 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 end remote
lircd.conf für die USB X10 bei doppeltasten problem
Manche X10 Modelle senden unterschiedliche Codes bei kurzem bzw. langem tastendruck, dies kann im vdr dazu führen, das die fernbedienungstaste zweimal gedrückt werden muß, um eine Aktion zu erhalten:
Abhilfe: beide Codes unter dem selben Eintrag in der lircd.conf
# Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.8.3pre1(default) on Sun Dec 30 19:49:15 2007 # # contributed by # # brand: lircneu6.txt # model no. of remote control: # devices being controlled by this remote: # begin remote name X10_doppel 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 235996 toggle_bit_mask 0x80800000 begin codes up 0x6F9A up 0xEF1A down 0x77A2 down 0xF722 left 0x729D left 0xF21D right 0x749F right 0xF41F ok 0x739E ok 0xF31E rec 0x6D98 rec 0xED18 sch 0x86B1 sch 0x0631 playlist 0x719C playlist 0xF11C auge 0x5984 auge 0xD904 menu 0x709B menu 0xF01B stumm 0x5580 stumm 0xD500 v+ 0x5E89 v+ 0xDE09 v- 0x5D88 v- 0xDD08 p+ 0x608B p+ 0xE00B p- 0x608B p- 0xE10C p- 0x618C play 0xFA25 play 0x7AA5 l- 0xF621 l- 0x76A1 l+ 0xF823 l+ 0x78A3 l-- 0xF924 l-- 0x79A4 l++ 0xFB26 l++ 0x7BA6 stop 0xFD28 stop 0x7DA8 pause 0xFE29 pause 0x7EA9 record 0xFC27 record 0x7CA7 1 0xE20D 1 0x628D 2 0xE30E 2 0x638E 3 0x648F 3 0xE40F 4 0xE510 4 0x6590 5 0xE611 5 0x6691 6 0xE712 6 0x6792 7 0xE813 7 0x6893 8 0xE914 8 0x6994 9 0xEA15 9 0x6A95 0 0xEC17 0 0x6C97 * 0x0C37 * 0x8CB7 # 0x0D38 # 0x8DB8 enter 0x0B36 enter 0x8BB6 clear 0x0530 clear 0x85B0 power 0xD702 power 0xD702 red 0x0732 red 0x87B2 green 0x0833 green 0x88B3 gelb 0x0934 gelb 0x89B4 blau 0x0A35 blau 0x8AB5 tt 0xEB16 tt 0x6B96 back 0xF520 back 0x75A0 info 0x042F info 0x84AF end codes end remote
lircd.conf Medion MD1 NBC
# brand: Medion MD1 NBC # Made in China X10) # Medion Remote Control # * FCC ID: B4S20018268 # begin remote name lircd.conf 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 219967 toggle_bit_mask 0x80800000 begin codes 1 0xE20D 2 0x638E 3 0xE40F 4 0x6590 5 0xE611 6 0x6792 7 0xE813 8 0x6994 9 0xEA15 0 0x6C97 Play 0xFA25 Pause 0x7EA9 Stop 0xFD28 Record 0x7CA7 SkipNext 0xF823 SkipPrior 0x76A1 Forward 0xFB26 Rewind 0x79A4 snapshot 0xED18 red 0x87B2 yellow 0x0934 blue 0x8AB5 green 0x0833 Mute 0x5580 return 0xF11C VolUp 0x5E89 VolDown 0xDD08 ChanUp 0x608B ChanDown 0xE10C menu 0x6E99 back 0xF520 Left 0x729D Right 0xF41F Up 0xCDF8 Down 0x4570 tv 0x81AC Videos 0x022D DVD 0x5984 Guide 0xEB16 Music 0x5B86 Radio 0x032E book 0x86B1 Pictures 0xDA05 info 0x84AF Power 0xD702 ok 0x709B enter 0xF31E end codes end remote
Kanal der USB X10 (Pollin) ändern
"Das geht je nach X10 Modell etwas unterschiedlich.
Bei der verbreiteten Pollin X10 geht das z.B. so: "Welt-Taste" eine Weile gedrückt halten. Nach einem kurzen Moment blinkt das Lämpchen der Fernbedienung. Die Anzahl der Blinks ist der Kanal. Dann neuen Kanal eingeben, geht glaub ich bis 13, abschließend noch einmal die Welt Taste drücken." (Zitat Hibbelharry) http://www.vdrportal.de/board/thread.php?postid=857795#post857795
Fehlerbehebung:
- wenn irw nicht funktioniert und im syslog etwas wie "lircd-0.8.3[12187]: couldn't claim USB interface: Device or resource busy" erscheint, habt ihr wahrscheinlich die oben bei Varianten stehenden Möglichkeiten vermischt, z.B. dürft ihr NICHT bei Debian in der hardware.conf DRIVER="atilibusb" stehen haben und lirc_atiusb laden!