Dobiwe: Lirc

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Lirc-Anbindung für die serielle Schnittstelle

Als erstes benötigt man folgende Pakete aus dem Feed:

ipkg install lirc-modules lirc

Dann für das Laden des Moduls bei Systemstart sorgen:

echo "lirc_dev" > /etc/modutils/lirc_dev
update-modules

An dieser Stelle möchte ich mich bei Stefan und Didi bedanken, die "mal eben" ein Kernel-Modul geschrieben haben :-)!

Das Modul lädt man so herunter direkt nach /home/root herunter:

wget http://gateway.metafnord.de/~stesie/h3600-opie-ipk/lirc_ipaq_tsop.o

Standardmässig ist die serielle Schnittstelle durch getty belegt, welches den Zugang über die serielle Schnittstelle ermöglicht. Wir müssen daher das getty entsorgen- allerdings erst, wenn sichergestellt ist, dass der desktop auch sauber hochgefahren ist- sonst ist man im Ernstfall entgültig ausgeschlossen!

Hierfür legt man dieses Skript in /etc/rc5.d an und macht es ausführbar:

root@h3600:~# vi /etc/rc5.d/S90byegetty 

#!/bin/sh

(sleep 10
ps ax | grep matchbox-desktop | grep -v grep || exit 1

killall getty
setserial /dev/ttySA0 uart none
insmod /home/root/lirc_ipaq_tsop.o
lircd -d /dev/lirc/0
sleep 3
/usr/bin/irexec -d /home/root/.lircrc
/usr/bin/ntpdate time.fu-berlin.de
) &

Den irexec brauchen wir später, damit wir per FB auch das Backlight und das Suspend steuern können ;) Ausserdem stellen wir die Systemzeit, da die bei einem Ausschalten ja verloren geht %) Da wir den lircd hier erst starten, entfernen wir den früheren Symlink:

root@h3600:/etc/rc5.d# rm S20lircd

Tatsächlich ist es so, dass das getty sich sowieso "entsorgt" sobald der TSOP an der seriellen Schnittstelle etwas einfängt- dies passiert oft noch vor Ablauf der 30 Sekunden.

Mit diesem Eintrag sorgt man dafür, dass das getty nicht wieder aufersteht:

/etc/inittab:

S:2345:respawn:/sbin/getty 115200 ttySA0

ersetzen durch

S:2345:once:/sbin/getty 115200 ttySA0

---

IR-Codes der Fernbedienung einlernen

IR-Fernbedienungen sind so eine Sache- nicht jede eignet sich für lirc- manchmal gibt es Probleme beim Aufzeichnen der Befehle- da muss man einfach probieren und eine geeignete herausfinden- z.B. gibt es bei Pollin immer wieder mal IR-Fernbedienungssortimente zum Spottpreis. Oder man nimmt eine Universalfernbedienung. Auf alle Fälle sollte man wirklich _alle_ Tasten der FB einlernen, dann hat man später genug Reserven und muss nicht immer nachlegen!

Ich selber habe eine Logitech Harmony 525- wie ich die konfiguriert habe steht ((DobiWeHarmony|hier))

Um einen lauffähigen lircd zu bekommen benötigt man noch eine /etc/lircd.conf, die man sich gemäss der Anleitung erstellt.

Schnellfassung:

killall lircd

laufenden Lircdienst beenden

irrecord lircd.conf -d /dev/lirc/0

im raw-format IR-Codes aufzeichnen, einfach den Anweisungen folgen!

lircd -d /dev/lirc/0

Lircdienst wieder starten

irw

Tastendrücke sollten jetzt ausgegeben werden

Es entsteht ein lircd.conf-Datei, die bei mir [tiki-download_file.php?fileId=17 lircd.conf (2.15 Kb)] so aussieht. ---

Übergabe der IR-Codes an ncmpc

Um den ncmpc dazu zu bringen, Kommandos von der Fernbedienung zu akzeptieren, bedient man sich dieser Konstruktion:

irpty /etc/ncmpc.lirc -- ncmpc'

Vorher muss noch das File angelegt werden, dass die FB-Kommandos für den ncmpc "übersetzt":

root@h3600:# cat /etc/ncmpc.lirc
#
# Sample .lirc file for usage with irpty and ncmpc
#
# $ irpty ./ncmpc.lirc -- ncmpc
#

begin
        remote = *
        button = vol-
        prog   = irpty
        repeat = 1
        config = -
end

begin
        remote = *
        button = vol+
        prog   = irpty
        repeat = 1
        config = +
end

Hier sieht man schon, dass man die Kommandos aus seiner lircd.conf an den ncmpc übergibt.

Am einfachsten ist folgender Weg:

  • mpc in einer Remote-Konsole aufrufen
  • im Hilfe-Screen ("1") stehen die Tastenkürzel
  • in zweiter Konsole das File ncmpc.lirc erstellen
  • in dritter Konsole irw laufen lassen für den Namen des Knopfes ("button")

Da kommt einiges zusammen, mein File sieht etwa so aus: [tiki-download_file.php?fileId=18 ncmpc.lirc (2.13 Kb)] :-)

---

irexec für Spezialfunktionen

Weiter oben starten wir den irexec-Dienst zusammen mit lircd:

/usr/bin/irexec -d /home/root/.lircrc

Die Datei /home/root/.lircrc legt die Auswirkung der Tastendrücke fest:

root@h3600:~# cat ~/.lircrc
begin
        prog   = irexec
        button = aus
        config = sh /usr/bin/s2ram.sh
end

begin
        prog   = irexec
        button = *
        config = xset s reset
end
  • mit dem Button "aus" schicken wir den DobiWe in den Suspend2Ram
  • beim Druck eine beliebigen Taste wird der Bildschirmschoner abgeschaltet- sonst erkennt man ja nichts mehr ;)

---

Keybindings ncmpc

Im ncmpc kann man über K die Belegung der Tasten ändern. Dies ist für manche Tasten unumgänglich- während man den Code für Space noch durch "\\040" darstellen kann, ist das für PgUp und PgDown nicht möglich- da hilft nur noch umbelegen- es entsteht folgende Datei im Homeverzeichnis:

root@h3600:~# cat .ncmpc/keys
## Key bindings for ncmpc (generated by ncmpc)

## Page up
key pgup = 339,  'A',  92

## Page down
key pgdn = 338,  'R'

## Play/Enter directory
key play = 13,  261

## Increase volume
key volume-up = 43

## Decrease volume
key volume-down = 45

## Next screen
key screen-next = 9,  260