Fernbedienung - USB X10

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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

Fernbedienung
FB Pollin Variante
USB Empfänger
Rückseite des USB Empfängers

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!

Links

USB X10 mit Kernel Modul nutzen (Alle Tasten)