softhddevice und vdr shutdown

  • So, jetzt erst mal die wenig spektakuläre Erweiterung des Softhddevice-Plugins. Das Patch ist jetzt erst mal für den vpp_branch aus dem presintta repo. Ich erstelle für das vdr-developer repo gleich noch einen Patch. Ich hoffe ich bekomme git in den Griff und kann beide Repos tracken.


    Folgendes habe ich gemacht:
    * In den Settings unter General wurde eine neue Option eingeführt: "VDR shutdown erlaubt wenn detached".
    * Die entsprechenden Abfragen im Plugin-Code habe ich eingeführt.


    Folgendes habe ich gestestet:
    * Der Shutdown-Counter läuft nicht, wenn die Option nicht aktiv ist.
    * DerShutdwon-Counter läuft, wenn die Option aktiv ist.
    * Die Übersetzung ins Deutsche wird angezeigt.
    * Die Einstellung bleibt über Neustart erhalten.

  • Ich denke, das Problem ist, dass KDE nicht zuerst bei Logind nachschaut, ob es Inhibitoren gibt, sondern direkt Suspend aufruft - ich hatte die gleiche Frage wegen dem Verhalten von KODI auch schon mal im Bugtracker gestellt und die Antwort von L. Poettering war, dass das so gedacht ist, wenn eine Anwendung des gleichen User über DBus auf logind zugreift: https://bugs.freedesktop.org/show_bug.cgi?id=66321
    Man mste den Inhibitor also unter einem anderen User setzen, damit er den Suspend in dem Fall blockiert.


    Das mit der anderen User wäre im VDR Fall ja implizit so. Ich habe das eben versucht mit positivem Ergebnis. Sowohl der manuelle als auch der automatische Shutdown werden blockiert. In beiden Fällen wir ein Dialog geöffnet um nach einem Freigabepasswort zu fragen. Leider hängt der gesamte Prozess danach an dem Dialog. Auch wenn der Inhibitor geschlossen wird, wird der Suspend aber nicht fortgesetzt. Der Rechner würde also nicht automatisiert einschlafen, wenn der vdr einen Inhibitor gesetzt hat und der Timer für den Shutdown abläuft. Im Anhang das Log von dem Ganzen.


    Wenn ich das richtig verstehe, dann hat der KDE damit wiederum nur wenig zu tun, sondern agiert nur als Frontend für das Policy Kit. Der logind sagt dem Policy Kit es solle mal eine Autorisierung einfordern. Und das wartet dann eben. Wie seht ihr das?

    Dateien

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

  • IMHO verhält sich da KDE nicht optimal - es müsste erst unter org.freedesktop.login1.Manager CanSuspend aufrufen und wenn das nicht 'yes', sondern z.B. 'challenge' zurück liefert einen automatischen Suspend-Versuch abbrechen, da das nicht nicht-interaktiv ablaufen kann und wenn der Suspend interaktiv aufgerufen wird, könnte es den Nutzer fragen, ob er den Suspend erzwingen will und muss auch damit zurecht kommen, wenn die PolicyKit Authentifizierung fehlschlägt bzw. abgebrochen wird.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • IMHO verhält sich da KDE nicht optimal - es müsste erst unter org.freedesktop.login1.Manager CanSuspend aufrufen und wenn das nicht 'yes', sondern z.B. 'challenge' zurück liefert einen automatischen Suspend-Versuch abbrechen, da das nicht nicht-interaktiv ablaufen kann und wenn der Suspend interaktiv aufgerufen wird, könnte es den Nutzer fragen, ob er den Suspend erzwingen will und muss auch damit zurecht kommen, wenn die PolicyKit Authentifizierung fehlschlägt bzw. abgebrochen wird.


    Soll ich dazu einen Bug-Report an die KDEler schreiben? Vlt. ändern die das dann ja. Einen Versuch wäre es wert!

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

  • Probieren kann man es mal... - du könntest auch noch ausprobieren, ob KDE auf what="idle" bei einem Inhibitor im mode="block" reagiert, das sollte die Aktionen bei Inaktivität betreffen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ok, hier noch das Patch für den Detach-Mode basierend auf dem master brach von Johns. Das Patch für den VPP-Support Branch hatte noch 2 andere Änderungen mit drin. Ich habe mich inzwsichen gitmäßig besser sortiert und meine Änderungen in Branches sortiert. Ich habe diesen Patch darum auch nochmal angehängt.

  • Probieren kann man es mal... - du könntest auch noch ausprobieren, ob KDE auf what="idle" bei einem Inhibitor im mode="block" reagiert, das sollte die Aktionen bei Inaktivität betreffen.


    Danke für den (weiteren) Tipp! Der vdr muss aber gerade den Tatort aufnehmen. Ich teste das dann danach.


    Das Ticket bei KDE erstelle ich morgen.

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

  • Wenn man idle blockiert geht der Rechner einfach in den Suspend. Ich habe das Inhibit-Programm von einem anderen User ausgeführt und dann den Rechner automatisch einschlafen lassen. Hier das angepasste Python Programm, zur Kontrolle:



    Gute Nacht :sleep

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

  • IMHO verhält sich da KDE nicht optimal - es müsste erst unter org.freedesktop.login1.Manager CanSuspend aufrufen und wenn das nicht 'yes', sondern z.B. 'challenge' zurück liefert einen automatischen Suspend-Versuch abbrechen, da das nicht nicht-interaktiv ablaufen kann und wenn der Suspend interaktiv aufgerufen wird, könnte es den Nutzer fragen, ob er den Suspend erzwingen will und muss auch damit zurecht kommen, wenn die PolicyKit Authentifizierung fehlschlägt bzw. abgebrochen wird.


    Bevor ich den Bug-Report bei KDE gepostet habe, wollte ich die Sache nochmal testen. Der Methode CanSuspend ist übrigens nicht vom logind, sondern von org.freedesktop.PowerManagement.Inhibit. Ich habe das getestet mit aktivem inhibitor:

    Code
    qdbus org.freedesktop.PowerManagement.Inhibit /org/freedesktop/PowerManagement/Inhibit CanSuspend
    true


    Das klappt also leider nicht.


    Wenn ich an der Kommandozeile vom Sessionuser

    Code
    systemctl suspend

    eingebe, wird der suspend wie zuvor geprüft verhindert (zur Sicherheit nochmal ausgeführt). Ich habe den Bug trotzdem gemeldet, vtl. hat sich die Architektur auf dem dbus auch geändert. KDE hat bestimmt Know-How auf dem Gebiet und weiß wie es gemacht werden müsste.


    mini73: Ich habe bereits 6 Downloads für den Patch. 8)

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

  • Die Antwort von KDE kam prompt. Immerhin ist der Fehler akzeptiert. Mal sehen ob es irgendwann gelöst wird.


    Bzgl des Inhibit habe ich nochmal auf dem dbus gestöbert. Wenn man

    Code
    qdbus --system --literal org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.ListInhibitors


    ausführt, bekommt man alle Inhibitoren angezeigt. Darüber sollte man ein kleines Programm erstellen können, das die Inhibitoren auswertet, evtl. auf vdr als "reason" prüft und im Falle eines vdr-Inhibitors dies dann auf den Session-Bus mapt. Da dieses Vorgehen den inhibitor Mechanismus zweckentfremdet, könnte man auch gleich einen eigenen Service schreiben, der mit dem vdr direkt kommuniziert. Damit wäre dann auch gleich ein VDR Desktop Statusmonitor mit drin.


    Wie seht ihr das? Wäre das auch mit anderen Desktops verträglich?

    Systeminfos:
    Kubuntu 16.04 mit vdr 2.2.0, Kernel 4.4, presintta softhddevice, vnsi
    Server/Client: Asrock N3700M, 8Gbyte, DDR3L-1600-CL9, CineS2 V6.5 (LP), 2,5'' Seagate ST1750LM000, IT-502
    Client 1: Pi2 + 38KHz IR Empfänger, Raspbian mit Kernel 4.2, VOMP VDR Client, Remote vom Technisat-TV :D
    Client 2..: Kodi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!