Archiv > Development
Mld-3.0.2
wino:
Wenn ich das Schaubild von oben richtig interpretiere müsste für den Betrieb mit Lirc folgendes über Skripte unterschieden und ausgewertet werden.
Bei einem Lirc-Empfänger ohne udev (seriell) wird die hardware.conf (gibt es bei MLD nicht) abgefragt, bewertet und je nach Ergebnis gehandelt.
Bei einem Lirc-Empfänger über udev greift die Rules 98.lircd.rules und das lirc_helper Skript. Fernbedienungen (Lirc) die in der 98.lircd.rules eingetragen sind sowie eine NAME.lircd.conf in /usr/share/mld-remote/remotes existiert, werden automatisch laufen. Als Vermittler (Bridge) zwischen lircd und eventlircd dient dabei lircd2uinput (benötigt python-uinput).
Eventlircd wird bei jeder Empfangsart benötigt. Damit möglist viele Fernbedienungen automatisch funktionieren, müssen die lircd.conf Dateien an die vorhandene remote.conf angepasst werden.
@Claus
bei diesem Vorhaben bist Du als Programmierer und Shell-König gefragt. Das WbIf wird wohl auch angepasst werden müssen? Wenn es Dir hilft, kann ich die relevanten Skripte aus yaVDR hier einstellen. Könnte vielleicht als eine
wino:
Werden Eure USB-Lirc Empfänger bei 3.0.2 erkannt und die Module dazu geladen? Für den Start von lircd habe ich mir das Upstart-Init Skript von yaVDR angesehen und versucht es an unsere Bedingungen anzupassen.
Dazu habe ich rc.functions um diese zwei Einträge erweitert.
--- Code: ---load_lirc_modules()
{
MODULES_MISSING=false
for mod in $*; do
modprobe $mod 2> /dev/null || MODULES_MISSING=true
done
if $MODULES_MISSING; then
exit 0
fi
}
build_remote_args()
{
REMOTE_ARGS="$*"
#For remote only detection support, we need
#both REMOTE_DEVICE and TRANSMITTER_DEVICE undefined
if [ -z "$REMOTE_DEVICE" ] && [ -z "$TRANSMITTER_DEVICE" ] && [ -c $dev ]; then
REMOTE_DEVICE="$dev"
fi
#If we have a REMOTE_DEVICE or REMOTE_DRIVER defined (either because no devices
#were defined, OR if we explicitly did), then populate REMOTE_ARGS
if [ ! -z "$REMOTE_DEVICE" ] || [ ! -z "$REMOTE_DRIVER" ]; then
if [ -n "$REMOTE_DEVICE" ] && [ "$REMOTE_DEVICE" != "none" ]; then
REMOTE_ARGS="--device=$REMOTE_DEVICE $REMOTE_ARGS"
fi
if [ -n "$REMOTE_DRIVER" ] && [ "$REMOTE_DRIVER" != "none" ]; then
REMOTE_ARGS="--driver=$REMOTE_DRIVER $REMOTE_ARGS"
fi
#Now, if we ALSO have a transmitter defined, add some args
#To make the first lircd listen up
if [ ! -z "$TRANSMITTER_DEVICE" ] || [ ! -z "$TRANSMITTER_DRIVER" ]; then
REMOTE_ARGS="$REMOTE_ARGS --listen"
fi
REMOTE_ARGS="--output=$REMOTE_SOCKET.$$ $REMOTE_ARGS"
fi
echo $REMOTE_ARGS
}
--- End code ---
Es werden die Dateien lircd.conf und hardware.conf aus /etc/lirc (gibt es in MLD bisher nicht) ausgewertet.
Das eigentliche Startsript sieht im Moment so aus.
--- Code: ---#!/bin/sh
# Startet den lirc demon
case "$1" in
start | resume)
. /etc/init.d/rc.functions
. /etc/lirc/hardware.conf
test -f /usr/sbin/lircd || exit 0
if [ -f /etc/lirc/hardware.conf ];then
. /etc/lirc/hardware.conf
fi
if [ ! -f /etc/lirc/lircd.conf ] ||
grep -q "^#UNCONFIGURED" /etc/lirc/lircd.conf ||
[ "x$START_LIRCD" = "xfalse" ]; then
exit 0
fi
if [ "$LOAD_MODULES" = "true" ]; then
load_lirc_modules $REMOTE_MODULES
fi
REMOTE_SOCKET=/var/run/lirc/lircd
build_remote_args
REMOTE_LIRCD_ARGS=`build_remote_args $REMOTE_LIRCD_ARGS`
if [ -z "$REMOTE_LIRCD_ARGS" ]; then
exit 0
fi
exec /usr/sbin/lircd --nodaemon $REMOTE_LIRCD_ARGS
if [ ! -f /etc/lirc/lircd.conf ] ||
grep -q "^#UNCONFIGURED" /etc/lirc/lircd.conf ||
[ "x$START_LIRCD" = "xfalse" ]; then
exit 1
fi
;;
stop | halt)
. /etc/init.d/rc.functions
echo "Stopping lirc daemon"
killall lircd || failed
rm -r /dev/lircd
unload_modules lirc
update_setting "VDR_RCU" ""
update_setting "VDR_SXFE_ARGS" "${VDR_SXFE_ARGS% --lirc}"
check_status
;;
restart)
$0 stop
$0 start
;;
init)
start=1
resume=1
halt=1
after=eventlircd
before=vdr
;;
*)
echo "Usage $0 {start | stop | restart}" >&2
exit 1
esac
--- End code ---
Es werden keine Module in der hardware.conf automatisch eingetragen und das WbIf müsste sicherlich auch umgeschrieben werden. Es ist nur ein bescheidener Versuch der als eventuelle Arbeitsvorlage dienen könnte.
@Claus,
es wäre nett wenn Du Dich der Sache annehmen würdest. Es sollte unterschieden werden ob es ein Serail-Empfänger ohne udev oder ein USB-Empfänger mit Udev-Unterstützung ist. Weiterhin sollten die lircd.conf an die einheitliche remote.conf angepasst werden können.
Siehe Dir auch bitte die obigen Skripte an, ob damit eine vorläufige lircd Funktion möglich ist und gegebenenfalls
wino:
Hallo MegaX,
wenn ich mir Deine lircd.conf ansehe, hast Du wohl eine iMon PAD FB und müsstest bei lirc das Modul lirc_imon und lirc_dev laden? Wenn das so ist, möchte Dich bitten testweise anstelle von lirc, dvb-remote zu installieren. Deine Hardware wird durch udev erkannt und die Module rc-core und imon sowie die Keymap rc-imon-pad sollten installiert werden.
Wen nicht alle Tasten mit der beiliegenden (in /etc/vdr) remode.conf funktionieren ist erst einmal nicht tragisch. Die lassen sich leicht anpassen. Es geht um die rc-core Treiber anstelle von lirc.
MfG
wino
MegaX:
Habs mal getestet und die FB gibt auch schon was von sich :))
addons:
--- Code: ---MLD-3.0.2_eventlircd-0.0.1_5.sfs
MLD-3.0.2_evtest-1.29_2.sfs
MLD-3.0.2_irkeytable-0.8.6_1.sfs
MLD-3.0.2_kernel-3.5.4.136_alsa-1.0.25_94.sfs
MLD-3.0.2_kernel-3.5.4.136_dvb-2012.09.23_154.sfs
MLD-3.0.2_kernel-3.5.4.136_dvb-remote-2012.09.23_12.sfs
MLD-3.0.2_kernel-3.5.4.136_network-0_74.sfs
MLD-3.0.2_kernel-3.5.4.136_xorg-1.11.3_162.sfs
MLD-3.0.2_kernel-3.5.4.136_xorg-nvidia-304.43_84.sfs
MLD-3.0.2_lib-av-53_12.sfs
MLD-3.0.2_lib-pango-1.6.0_2.sfs
MLD-3.0.2_lib-x-0_16.sfs
MLD-3.0.2_locales-0_49.sfs
MLD-3.0.2_samba-3.6.3_20.sfs
MLD-3.0.2_ssh-0_15.sfs
MLD-3.0.2_vdr-1.7.30.368_369.sfs
MLD-3.0.2_vdr-1.7.30.368_addons-0.4.0_44.sfs
MLD-3.0.2_vdr-1.7.30.368_setup-0.3.1_50.sfs
MLD-3.0.2_vdr-1.7.30.368_softhddevice-2012.09.15_12.sfs
MLD-3.0.2_webserver-0_190.sfs
--- End code ---
lsmod:
--- Code: ---Module Size Used by Tainted: P
r8169 35782 0
rc_imon_pad 1269 0
imon 15859 0
ir_lirc_codec 3015 0
lirc_dev 6471 1 ir_lirc_codec
ir_mce_kbd_decoder 2462 0
ir_sanyo_decoder 1269 0
ir_sony_decoder 1187 0
ir_jvc_decoder 1269 0
ir_rc6_decoder 1654 0
ir_rc5_decoder 1133 0
ir_nec_decoder 1305 0
rc_dvbsky 807 0
m88ds3103 13145 2
cx25840 79374 1
cx23885 110260 16
videobuf_dma_sg 5500 1 cx23885
rc_core 9598 14 rc_imon_pad,imon,ir_lirc_codec,ir_mce_kbd_decoder,ir_sanyo_decoder,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_rc5_decoder,ir_nec_decoder,rc_dvbsky,cx23885
altera_ci 6017 1 cx23885
cx2341x 11645 1 cx23885
v4l2_common 3622 3 cx25840,cx23885,cx2341x
videodev 60817 4 cx25840,cx23885,cx2341x,v4l2_common
tveeprom 9809 1 cx23885
videobuf_dvb 3374 1 cx23885
videobuf_core 10799 3 cx23885,videobuf_dma_sg,videobuf_dvb
dvb_core 64299 3 cx23885,altera_ci,videobuf_dvb
btcx_risc 2379 1 cx23885
tda18271 27905 1 cx23885
altera_stapl 17753 1 cx23885
nvidia 10169008 52
snd_hda_codec_hdmi 17840 4
snd_hda_codec_realtek 39251 1
snd_hda_intel 16785 4
snd_hda_codec 53904 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 3775 1 snd_hda_codec
snd_seq_oss 19159 0
snd_seq_midi_event 3632 1 snd_seq_oss
snd_seq 32200 4 snd_seq_oss,snd_seq_midi_event
snd_seq_device 3536 2 snd_seq_oss,snd_seq
snd_pcm_oss 25600 0
snd_pcm 43541 6 cx23885,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_pcm_oss
snd_page_alloc 4753 2 snd_hda_intel,snd_pcm
snd_timer 11985 3 snd_seq,snd_pcm
snd_mixer_oss 9778 1 snd_pcm_oss
snd 34606 19 cx23885,snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss
ati_agp 3877 0
agpgart 17775 2 nvidia,ati_agp
uinput 5031 0
--- End code ---
MegaX
wino:
Der Anfang ist damit gemacht. Installiere bitte usbutils.
Die Ausgabe von lsusb -v > lsusb.txt und die Ausgabe von cat /proc/bus/input/devies würde mich interessieren. Als Fleißaufgabe könntest Du bitte im dvb-remote Addon unter src/dvb/linux/drivers/media/rc/keymaps die rc-imon-pad.c anpassen und mir zukommen lassen.
Dabei gehst Du wie folgt vor. Deine bisherige lircd.conf mit der rc-imon-pad.c unter Berücksichtigung der gemeinsamen remote.conf abgleichen. Die Tastenbelegung in der rc-imon-pad.c muss nach der Bearbeitung mit denen in der remote.conf übereinstimmen. Die Tasten, die Du für User1-9 vorgesehen hast, müssen in der rc-imon-pad.c danach KEY_PROG1-9 benannt sein.
Kommst mit dem geschrieben nicht klar, kannst Du mir Deine lircd.conf nochmal zukommen lassen. In dieser sollen die Tasten kommentiert sein, die Du für die User-Tasten vorgesehen hast.
MfG
wino
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version