Dobiwe: Lirc
Inhaltsverzeichnis
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