Hallo liebe Gemeinde!
Ersteinmal wünsche ich Euch allen ein Frohes Neues Jahr!
Und dann habe ich noch einen kleinen Änderungsvorschlag, auf den ich durch ein anderes Projekt gekommen bin: Ich nutze schon seit Jahren mld mit lirc und einem Eigenbau-Empfänger am seriellen Port. Das hat auch immer funktioniert, aber mein anderes Projekt hat mich darauf gebracht, daß lirc mit dem devinput-Driver viel besser funktioniert als mit dem default-driver. Es ruckelt nichts (auch ohne "Ruckeln und Prellen unterbinden"), die Tastenwiederholung funktioniert sauber (habe ich mit dem lirc-default-driver nie hinbekommen), und das Anlernen einer neuen Fernbedienung mir irrecord geht auch viel einfacher.
Das Startup-Skript /etc/init.d/lirc sieht aber leider diesen Fall nicht vor: Es lädt den serial_ir-Treiber immer nur in Verbindung mit dem lirc-default-driver; die Kombination serial_ir + devinput geht so nicht. Ich habe deshalb /etc/init.d/lirc etwas erweitert; siehe Anhang.
Ich bin jetzt nicht der König der Shellscripte, deshalb kann man das sicher viel besser machen; ich stelle mir das so vor: In der Drop-Down-Liste "LIRC-Treiber" des Web-UIs könnte man zwei zusätzliche Punkte einfügen:
"devinput + homebrew serial receiver on COM1" und
"devinput + homebrew serial receiver on COM2"
Die /etc/init.d/lirc müßte das unterstützen, indem man in die Fallunterscheidung beim Treiberladen ungefähr so erweitert:
if [ "$LIRC_MODUL" ]; then
modul=${LIRC_MODUL##* }
if [ "$modul" = "COM1" ]; then
echo "Loading lirc serial driver"
setserial /dev/ttyS0 uart none || failed
modprobe lirc_serial 2>/dev/null || modprobe serial_ir
args="-d $(ls /dev/lirc? | tail -n1)"
check_status
elif [ "$modul" = "COM2" ]; then
echo "Loading lirc serial driver"
setserial /dev/ttyS1 uart none || failed
modprobe lirc_serial irq=3 io=0x2f8 2>/dev/null || modprobe serial_ir irq=3 io=0x2f8
args="-d $(ls /dev/lirc? | tail -n1)"
check_status
elif [ "$modul" = "GPIO" ]; then
echo "Loading lirc rpi gpio driver"
modprobe gpio-ir-recv
check_status
elif [ "$modul" = "devinputCOM1" ]; then
echo "Loading lirc devinput driver"
setserial /dev/ttyS0 uart none || failed
modprobe lirc_serial 2>/dev/null || modprobe serial_ir
args="-H $modul"
check_status
elif [ "$modul" = "devinputCOM2" ]; then
echo "Loading lirc serial driver"
setserial /dev/ttyS1 uart none || failed
modprobe lirc_serial irq=3 io=0x2f8 2>/dev/null || modprobe serial_ir irq=3 io=0x2f8
args="-H $modul"
check_status
else
args="-H $modul"
fi
In meinem (angehängten) Script ist da noch "ir-keytable -p all" drin, denn aus irgendwelchen Gründen wird das Script /etc/init.d/irkeytable bei mir nicht ausgeführt; ich habe in /etc/rc.config die Variable IRKEYTABLE_ARGS="-p all" gesetzt, aber das hat keine Wirkung.
Ich verwende das in Verbindung mit einer 0815-Fernbedienung von Pollin; die dazugehörige lircd.conf habe ich mit irrecord erzeugt und zur Information mit angehängt.
Vielleicht möchtet Ihr ja diesen Vorschlag bei Euren weiter Entwicklungen berücksichtigen.
Viele Grüße,
Andreas