Lirc

Aus Ubuntu-Forum Wiki

Wechseln zu: Navigation, Suche
Bearbeitung l.png Artikel in Bearbeitung Bearbeitung.png
Um Versions-Konflikte zu vermeiden, darf er nicht geändert werden, so lange dieser Hinweis erscheint!

Vorlage:InArbeit Wikitext.png 704.png 610.png 606.png

Inhaltsverzeichnis

1 Lirc (Allgemein)

Mit Lirc (Linux Infrared Remote Control) ist es möglich das Linux System mit einer Fernbedienung zu steuern.
Dazu ist ein Infrarot-Empfänger am PC und eine handelsübliche Fernbedienung nötig.
Weitere Informationen zu Lirc sind auf der offiziellen Homepage und in den Ressourcen am Ende dieses Artikels zu finden.

Lirc besteht aus mehreren Komponenten:


Lirc ist in den universe Quellen in Dapper, Edgy und Feisty vorhanden.
Alle Befehle in diesem Artikel müssen in einem Terminal-Fenster eingegeben werden.

2 Installationsvorbereitung

Gearbeitet wird in dem Verzeichnis /usr/src/ und unter Benutzung von sudo.

2.1 Download der neusten Version von Lirc

cd /usr/src
sudo wget http://lirc.sourceforge.net/software/snapshots/lirc-0.8.2pre1.tar.bz2

2.2 Entpacken des Archives

Das Archiv muss nun per sudo im Verzeichnis /usr/src/ entpackt werden.

sudo tar xvjf lirc-0.8.2pre1.tar.bz2

2.3 Installation benötigter Programme

Damit Lirc verwendet werden kann, müssen folgende Programme installiert und eingerichtet werden:


Beispiel:

sudo -s
apt-get install linux-source-2.6.20 setserial gcc-3.4 build-essential
cd /usr/src/
tar -xvjf linux-source-2.6.17.tar.bz2
unlink linux
ln -s linux-source-2.6.17 linux
cd linux
cp /boot/config-2.6.17-10-generic .config

2.3.1 Falls der X-Server nicht mehr startet

Wenn das der Fall ist, müssen eure Grafikkartentreiber neuinstalliert werden.
Dies gelingt durch eine manuelle Installation oder einer erneuten Installation über die Paketverwaltung.
Beispiel an den Nvidia Beta Treibern.

sh NVIDIA-Linux-x86-1.0-9755-pkg1.run

Eine genauere Vorgehensweise ist in den entsprechenden Artikeln zur Installation der Grafikkartentreiber beschrieben.

2.4 Konfigurationsdateien von Lirc erstellen

Um sich das zu erleichtern installiert man nun Lirc aus den Paketquellen.

sudo apt-get install lirc lirc-x

2.5 Lirc installieren

Nun installieren wir die neuste Version von Lirc, die wir unter Lirc#Installationsvorbereitung heruntergeladen haben.

sudo -s
cd /usr/src/lirc-0.8.1pre2/drivers
ln -s /usr/src/linux/drivers drivers
cd ..
./setup.sh
make
make install

Bei dem Setup ist alles einzurichten und danach Save configuration & run configure zu wählen.

2.6 Laden der Module

Nach der Installation müssen die Lirc-Module geladen werden. Welches Modul geladen werden muss, hängt von der verwendeten Hardware ab. Bsp. lirc_serial

sudo modprobe lirc_serial
sudo lircd

Falls nun ein Fehler auftritt (gilt nur für lirc_serial), bitte folgendes durchführen:

sudo setserial /dev/ttyS0 uart none

2.7 Überprüfen ob die Module geladen worden sind

Falls nötig, kann man überprüfen ob die Module geladen worden sind.

irw

Danach müssen Tasten auf der Fernbedienung gedrückt werden, danach erfolgt eine Ausgabe im Terminal.
Beziehungsweise:

lsmod | grep lirc

Dann sollte eine ähnlich Ausgabe erfolgen:

lsmod | grep lirc                     
lirc_serial            14592  1 
lirc_dev               16484  1 lirc_serial

3 Einrichten von Lirc und der Fernbedienung

Sollten nun alle Module erfolgreich geladen sein und Signale von der Fernbedinung empfangen werden können, muss man Lirc einrichten.

3.1 Erstellen von lircd.conf

Nun erstellt man sich die lircd.conf die später in /etc/ und /etc/lirc/ abgelegt wid.
Man kann eine vorgefertigte lircd.conf für seine Fernbedinung von http://lirc.sourceforge.net/remotes/ herunterladen und nach etc/ und etc/lirc kopieren.
Falls keine passende vorhanden ist, erstellt man sich selber eine:

sudo irrecord -d /dev/lirc0 lircd.conf

Danach die Anweisungen befolgen.
Hier eine lircd.conf zur TS35 DVB-T Technisat Airstar 2

#
# using lirc-0.8 on Wed May 19 00:28:01 2004
# tested with lirc-0.8.1pre2-1
# contributed by Felix Jordan
#
# brand:                       TechniSat
# model no. of remote control: 100TS035
# devices being controlled by this remote: SkyStar 2 TV (DVB PCI card)
#

begin remote

  name  100TS035
  bits           13
  flags RC5|CONST_LENGTH
  eps            30
  aeps          100

  one           907   885
  zero          907   885
  plead         954
  gap          113935
  toggle_bit      2


      begin codes
          MUTE                     0x128D
          EXT                      0x1AB8
          A/B                      0x12A3
          POWER                    0x1A8C
          TV/RADIO                 0x0293
          -/--                     0x1A8A
          1                        0x1A81
          2                        0x1A82
          3                        0x1A83
          4                        0x1A84
          5                        0x1A85
          6                        0x1A86
          7                        0x1A87
          8                        0x1288
          9                        0x1289
          0                        0x1A80
          INFO                     0x028F
          MENU                     0x0292
          EPG                      0x1AAF
          BACK                     0x1AA2
          OK                       0x0A97
          UP                       0x1AA0
          DOWN                     0x12A1
          RIGHT                    0x1A90
          LEFT                     0x1A91
          RED                      0x0AAB
          GREEN                    0x0AAC
          YELLOW                   0x02AD
          BLUE                     0x02AE
          CHECK                    0x0AB6
          TXT                      0x1ABC
          STOP                     0x1AA9
          HILFE                    0x1A8F
      end codes

end remote

3.2 Erstellen von lircrc

.lircrc dient dazu die Verbindung zwischen Tasten und Befehlen herzustellen.
Die Datei wird im Homeverzeichnis abgelegt und das Programm irexec greift darauf zurück.

#Volumen
begin
        prog = irexec
        button = MUTE 
        config = amixer set Master 0 &
  	config = amixer set Master 100 &
end
begin
        prog = irexec
        button = LEFT 
        config = amixer set Master 5%- &
        repeat = 2
end

#kaffeine
begin
        prog = irexec
        button = POWER
        config = kaffeine &
        config = dcop kaffeine KaffeineIface quit &
end
begin
        button = UP
        prog   = irexec
        repeat = 2
        config = dcop kaffeine KaffeineIface next &
end
begin
        button = DOWN
        prog   = irexec
        repeat = 2
        config = dcop kaffeine KaffeineIface previous &
end
begin
        button = A/B
        prog   = irexec
        config = dcop kaffeine kaffeine_mainwindow#1 hide &
        config = dcop kaffeine kaffeine_mainwindow#1 restore &
end
begin
        button = EPG
        prog   = irexec
        config = dcop kaffeine KaffeineIface dvbOSD &
        repeat = 2
end
begin
        button = BACK
        prog   = irexec
        config = dcop kaffeine KaffeineIface fullscreen &
        config = dcop kaffeine KaffeineIface fullscreen &
end
begin
        button = 1
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 1 &
end
begin
        button = 2
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 2 &
end
begin
        button = 3
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 3 &
end
begin
        button = 4
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 4 &
end
begin
        button = 5
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 5 &
end
begin
        button = 6
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 6 &
end
begin
        button = 7
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 7 &
end
begin
        button = 8
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 8 &
end
begin
        button = 9
        prog   = irexec
        config = dcop kaffeine KaffeineIface setNumber 9 &
end


3.3 Autostart von Lirc

Um einen Autostart von Lirc zu realisieren, muss man die Datei hardware.conf in /etc/lirc/ editieren:

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#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

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER=""
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE="/dev/lirc0"
MODULES="lirc_serial"

# Default configuration files for your hardware if any
LIRCD_CONF="/etc/lircd.conf"
LIRCMD_CONF=""

Hier gezeigt an dem Modul lirc_serial.


Nun wird das Modul lirc_serial automatisch beim Starten geladen.
Dies ist aber nur möglich, wenn der Serial-Port nicht belegt ist.

Da dies meist aber Standard ist muss man autoserial.conf in /var/lib/setserial/ editieren:

###PORT STATE GENERATED USING AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
###AUTOSAVE###
#
# If you want to configure this file by hand, use
# dpkg-reconfigure setserial
# and change the configuration mode of the file to MANUAL.
# If you do not do this, this file may be overwritten automatically the next time you upgrade  the
# package.
#
/dev/ttyS0 uart none
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test

Der verwendete Serial-Port muss mit uart none gekennzeichnet werden.

4 Problemlösungen

Bei der Installation sollte es nicht allzu große Probleme geben. Da jedoch die Einrichtung sehr komplex ist, werden hier Lösungsansätze für eventuell auftretende Probleme vorgestellt.

4.1 irw, mode2 geben keine Ausgabe

Falls irw und mode2 keine Ausgabe ergeben, folgendes probieren:

mode2 -d /dev/lirc0

Sollte es nun zu einer Ausgabe bei mode2 kommen, muss der lirc Dämon mit dem Zusatz -d /dev/lirc0 gestartet werden.
Jedoch lässt sich die verwendete Hardware in der hardware.conf festlegen.

4.2 ir_common Modul deaktivieren

Wenn gar kein Signal von der Fernbedienung zu empfangen ist, und der Empfänger z.B.:
vorher in Dapper einwandfrei funktionierte, kann dies an dem ir_common Modul liegen, dass neu in Edgy ist.
Dieses Modul muss nun edititiert werden.
Die Datei ir-keymaps.c in /usr/src/linux-source-2.6.17/drivers/media/common/ muss folgendermaßen editiert werden:
Der Code zwischen den Klammern {} an der Stelle ir_codes_empty wird nun kopiert
und die entsprechenden Konfigurationen der verwendeten Hardware ersetzt. Beispiel an DigitalNow DNTV Live DVB-T Remote

IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = {
        [ 0x2a ] = KEY_COFFEE,
};

Nun muss das Modul gebaut werden:

cd /usr/src/linux-source-2.6.17
make modules 

Wenn dies abgeschloßen ist, wird der letzte Schritt ausgeführt:

cp /usr/src/linux-source-2.6.17/drivers/media/common/ir_common.ko /lib/modules/2.6.17-10-generic/kernel/drivers/media/common


Dann nur noch neustarten und das Empfangen der Signale sollte klappen.

4.3 Lircd setzt die Singale zu spät um

Es kommt vor, dass Lircd die Befehle zu spät verarbeitet.
Es hilft nach dem Hochfahren lircd zu beenden und zu starten. Danach läuft es flüssig.

Problem trat unter Kernel 2.6.18.3 nach Neuinstallation nicht mehr auf.

5 Ressourcen

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Forum
Navigation
Internes
Bearbeitungshilfen
Werkzeuge