Bei den Modellen ufs912/13 ist das möglich und bei den Spark Modellen.
Vielleicht auch bei ufs922 und ufc960 denn die benutzen auch den micom FP.
Ich habe aber diese Modelle nicht und z.Zt. ist die Funktion dafür im fp_control Code deaktiviert.
Bei allen anderen Boxen benutzt der fp_control eine pseudo Funktion : getWakeupReasonPseudo
oder es wird vom FP Treiber kein 'Einschalt Grund' geliefert.
Durchaus möglich das es auch da gehen könnte......
Nun liefert die Abfrage fp_control -w bei der ufs913 dieses :
- Bei Box per Kippschalter / oder Strom ein nach Ausfall :
Code: Alles auswählen
fp_control: SW Version 1.04
Model: ufs913
vBoxType: 10
Selected Model: Kathrein UFS912 frontpanel control utility
init
configs: DISPLAY = 1, DISPLAYCUSTOM = 1, CUSTOM = %H:%M:%S
, WAKEUPDECREMENT 300
waiting on wakeupmode from fp ...
Success reading wakeupmode from fp
reason = 0xc4
Wakeup reason = 4 (powerswitch)
Code: Alles auswählen
fp_control: SW Version 1.04
Model: ufs913
vBoxType: 10
Selected Model: Kathrein UFS912 frontpanel control utility
init
configs: DISPLAY = 1, DISPLAYCUSTOM = 1, CUSTOM = %H:%M:%S
, WAKEUPDECREMENT 300
waiting on wakeupmode from fp ...
Success reading wakeupmode from fp
reason = 0xc1
Wakeup reason = 1 (poweron)
Code: Alles auswählen
fp_control: SW Version 1.04
Model: ufs913
vBoxType: 10
Selected Model: Kathrein UFS912 frontpanel control utility
init
configs: DISPLAY = 1, DISPLAYCUSTOM = 1, CUSTOM = %H:%M:%S
, WAKEUPDECREMENT 300
waiting on wakeupmode from fp ...
Success reading wakeupmode from fp
reason = 0xc2
Wakeup reason = 2 (standby)
Code: Alles auswählen
fp_control: SW Version 1.04
Model: ufs913
vBoxType: 10
Selected Model: Kathrein UFS912 frontpanel control utility
init
configs: DISPLAY = 1, DISPLAYCUSTOM = 1, CUSTOM = %H:%M:%S
, WAKEUPDECREMENT 300
waiting on wakeupmode from fp ...
Success reading wakeupmode from fp
reason = 0xc3
Wakeup reason = 3 (timer)
Bei den Spark Modellen gibt es nur 1,2 und 3 als 'Wakeup reason', das kürze ich mal etwas ab:
Code: Alles auswählen
reason = 0x1
Wakeup reason = 1 (poweron)
reason = 0x2
Wakeup reason = 2 (standby)
reason = 0x3
Wakeup reason = 3 (timer)
Die 2 (standby) kommt bei Start per Fernbedienung oder Frontknopf aus deep StandBy
Die 3 (timer) kommt bei Timerstart.
Nun kann man mit ein paar Zeilen in der rcS das nutzen zum Abfragen:
Als kleine Funktion für ufs912/13 oder spark7162 geeignet, die den Status prüft und die Box per init 0 ausschaltet.
Code: Alles auswählen
do_check_wakeup()
{
GO_DEEP=0
fp_control -w > /dev/null 2>&1
rtv=$?
if [ "$MODEL" == "ufs913" -o "$MODEL" == "ufs912" ];then
if [ $rtv == 4 ];then
GO_DEEP=1
echo "Go to Deep..." > /dev/vfd
fi
elif [ "$MODEL" == "spark7162" ];then
if [ $rtv == 1 ];then
GO_DEEP=1
echo "GO DEEP" > /dev/vfd
fi
fi
if [ $GO_DEEP == 1 ];then
echo "Going to deep standby...."
sleep 1
init 0
sleep 5
fi
}
Theorethisch wäre es ja möglich wenn man die Funktion direkt nach dem Laden des VFD Treibers aufruft, aber...
- Nachteil ist das bei eventuell vorhandenen Timern der nächste nicht in den FP abgespeichert wird.
- Und wenn man bei ufs912/13 einen anderen RC-Code nutzt als 1 :
durch Start nach stromlos steht der ja default auf 1, erst wenn evremote2 lädt, wird der auf den gespeicherten Code geändert.
Daher rufe ich die Funktion erst kurz vor dem Neutrino Start auf:
Code: Alles auswählen
([ -e /var/etc/.enable_go_deep -a "$MODEL" != "ufs910" ] && (sleep 40;do_check_wakeup)) &
Dann wird nach 40 Sekunden die Prüfung ausgeführt. ( Start der obigen Funktion )
Die 40 Sekunden sollten für Neutrino ausreichen, das es eine gültige Systemzeit gibt und ein Timer speichern erfolg hat.
Noch eine Bemerkung:
Der Aufruf von fp_control -w speichert auch in : /proc/stb/fp/was_timer_wakeup eine 1 wenn der Startgrund 'timer' war.
Wird aber soweit ich weis nicht weiter genutzt, da das anders erledigt wird.