[Gelöst} Sundtek.service - systemd - Wer kennt sich mit .service (etc.) files aus

  • Hallo Portal,


    Arch Linux hat vor kurzem auf Systemd umgestellt und ich versuche mich grade auf meinem frisch installiertem VDR einzuarbeiten. Die Hardware findet ihr in meiner Signatur - aber es gibt folgende Änderungen:


    - Neben der WD Festplatte werkelt jetzt eine SSD
    - Anstatt der Nova -se2 habe ich jetzt einen Sundtek DVB-S2 USB Stick


    Leider führt die Kombination aus SSD und dem Sundtek Stick zu einigen Timingproblemen. Das System startet so schnell, dass der VDR den Sundtek Stick noch nicht als device erkennen kann weil er noch nicht komplett initialisiert ist.
    Es gibt zwar die Möglichkeit im Sundtek Treiber nach dessen Initialisierung ein Programm und somit auch den VDR zu starten, aber das würde dazu führen wenn der Stick nicht gestartet werden kann startet auch der VDR nicht. Aufnahmen könnten auf der zweiten Karte dann nicht durchgeführt werden.
    Ich weiss leider nicht wie ich das über die service files steuern kann. Ausserdem finde ich auch keine brauchbare Erläuterung der Möglichkeiten von service Dateien.


    Hier mal die beiden Service Dateien vom VDR und dem Sundtek Stick:


    VDR:



    Sundtek


    Ich habe bereits versucht mit After= und Wants=dev-dvb-adapter0-frontend0.device sicherzustellen, dass die device vorhanden sind, aber wants wartet sehr lange und wird dann mit einem Timeout beendet und after bringt keine Verbesserung.


    Hat sich damit von euch schonmal jemand beschäftigt?


    Gruß
    Atech

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

    Einmal editiert, zuletzt von Atechsystem ()

  • Ich weiss leider nicht wie ich das über die service files steuern kann. Ausserdem finde ich auch keine brauchbare Erläuterung der Möglichkeiten von service Dateien.


    Die schönste Lösung wäre das dynamite-Plugin - damit werden DVB-Geräte eingehängt, sobald sie zur Verfügung stehen und man darf sie im laufenden Betrieb an- und abstecken. Falls das nicht möglich ist (z.B. weil es sich mit einem anderen benötigten Plugin oder der Konfiguration beißt), könntest du darauf warten, dass der Adapter angelegt wird (und falls das nicht innerhalb von OnActiveSec passiert den Dienst trotzdem starten lassen) - so ähnlich wurde es hier als funktionierende Lösung gepostet: http://lists.fedoraproject.org…/2012-January/160910.html

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Die Lösung mit der Pfadprüfung ist interessant...


    Allerdings frage ich mich dennoch ob dieser Sundtek-Daemon erst dann forkt wenn *alle* Devices da sind. Die Pfadprüfung prüft ja nur auf *ein* Device. Wenn es derer mehrere gibt, dann startet der VDR dann doch unter Umständen zu früh?

  • Hi,


    genau da liegt mein Problem. Im grunde wird ja durch das Servicefile nur der Start angetriggert. Ich gehe davon aus, dass es dann als "active" markiert wird und eben nich abgewartet wird bis der Treiber komplett geladen ist. Daher meine Frage ob es mit den service Dateien alleine überhaupt möglich ist soetwas zu realisieren.


    Theoretisch benötige ich das an mehreren Stellen:


    1.) Sundtek Stick laden - warten bis er bereit ist
    2.) VDR laden - warten bis er bereit ist
    3.) X starten
    4.) Wenn X gestartet Softhddevice per SVDRP ATTA anbinden


    Eigentlich kann 2. und 3. parallel erfolgen - dann müsste aber das verbinden von Softhddev sicherstellen, dass der xserver geladen wurde und der VDR auch schon getstartet hat.


    Das ist bei ca. 2 Sekunden in denen das alles startet sehr schwierig ohne irgendwelche Sicherheiten.


    Gruß
    Atech

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • Ihr seit echt schnell! Ich werde das von Seahawk mal testen. Sowas habe ich auch gesucht...

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight


  • genau da liegt mein Problem. Im grunde wird ja durch das Servicefile nur der Start angetriggert. Ich gehe davon aus, dass es dann als "active" markiert wird und eben nich abgewartet wird bis der Treiber komplett geladen ist. Daher meine Frage ob es mit den service Dateien alleine überhaupt möglich ist soetwas zu realisieren.


    "type=Forking" ist eine mögliche Art wie man systemd mitteilen kann wann der betroffene Dienst "bereit" ist. Er darf dann aber erst forken wenn auch wirklich alles betriebsbereit ist.



    Softhddevice ist fähig den X-Server auch komplett selber mitzustarten. Alternativ: runvdr-extreme nehmen und den VDR und den X-Server damit starten. Eine zentrale Konfiguration für Plugin- und VDR-Paramter gibt's da gleich gratis mit dazu.


    Allerdings musst du die runvdr-extreme patchen. Es gibt da einige Fehler die sonst einen stabilen Betrieb verhindern:


    https://github.com/CReimer/vdr…ree/master/runvdr-extreme

  • "type=Forking" ist eine mögliche Art wie man systemd mitteilen kann wann der betroffene Dienst "bereit" ist. Er darf dann aber erst forken wenn auch wirklich alles betriebsbereit ist.

    Dann ist das ja beim Sundtek nicht der Fall - ich habe es ja schon drin.


    Zitat

    Softhddevice ist fähig den X-Server auch komplett selber mitzustarten.
    Alternativ: runvdr-extreme nehmen und den VDR und den X-Server damit
    starten. Eine zentrale Konfiguration für Plugin- und VDR-Paramter gibt's
    da gleich gratis mit dazu.

    Das ist mir bekannt. Funktioniert auch wunderbar, aber leider bin ich dann als Benutzer vdr nichtrichtig eingeloggt und der Zugriff aufs Homedir von anderen Programmen aus ist nicht möglich. Habe da noch keien Lösung für gefunden.


    Runvdrextreme werd ich mir mal anschauen. Ich hatte gehofft ich bekomme es einfach mit den Servicedateien irgendwie hin


    Gruß
    Atech

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • Die Lösung mit der Pfadprüfung ist interessant...


    Allerdings frage ich mich dennoch ob dieser Sundtek-Daemon erst dann forkt wenn *alle* Devices da sind. Die Pfadprüfung prüft ja nur auf *ein* Device. Wenn es derer mehrere gibt, dann startet der VDR dann doch unter Umständen zu früh?


    Also ich habe in der sundtek.conf das device festgelegt auf /dev/dvb/adapter1. Trotzdem funktioniert es nicht mit:


    [Path]
    PathExists=/dev/dvb/adapter1/frontend0
    PathExists=/dev/dvb/adapter1/demux0


    Der Sundtek Stick wird nach wie vor nicht vom VDR erkannt. Erst nach einem VDR restart wird er benutzt.

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • Mal ne ganz provokante Idee ;) Wie wäre es damit einfach mal Sundtek zu fragen woran man erkennt das der Daemon bereit ist? Die werden wissen wie der Daemon funktioniert ;)
    Das /dev/dvb/adapter1/frontend0 existiert muss ja nicht zwangsläufig bedeuten das es auch schon funktioniert. Und es muss ja auch nicht zwangsläufig bedeuten das es zum Sundtek Daemon gehört.



    Die von Sundtek sind doch hier, und so wie ich das sehe sind die auch immer hilfsbereit. Da würde ich doch einfach mal fragen bevor ich rumbastele und irgendwelche halbgaren würgarounds hinfummle.


    BTW: Das Problem besteht ja nicht nur bei systemd, upstart und sysvinit haben ja das selbe Problem. Und das ist ja nicht nen reines Sundtek Problem, auch dieses Problem stößt man bei jeden Daemon den man starten will.
    Z.B. fehlt hier auch noch beim VDR Start die Erkennung wann der VDR bereit ist, das dbus2vdr Plugin hat da z.B. extra was drin damit Upstart erkennen kann wann der VDR wirklich fertig gestartet ist (d.h. der VDR wirklich bereit ist).


    cu


  • Du kannst --wait-for-devices beim Daemon anhängen, falls ein Gerät angeschlossen ist wird dieses vollkommen initialisiert bevor sich mediasrv in den Background katapultiert. Falls kein Gerät angeschlossen ist geht es an der Stelle auch sofort weiter.
    Bin jetzt nicht so belesen in den Service files, aber Type=forking dürfte dann ja nicht richtig sein da es wohl nicht blockieren würde (eventuell Type=simple ?).

  • "forking" ist dann schon richtig. Bei "simple" wird erwartet, dass der Daemon nicht forkt, also durchläuft. Wenn er doch forkt (also der erste gestartete Prozess terminiert), dann gilt der Prozess bei "simple" als "nicht laufend".

  • Du kannst --wait-for-devices beim Daemon anhängen, falls ein Gerät angeschlossen ist wird dieses vollkommen initialisiert bevor sich mediasrv in den Background katapultiert.

    Zitat

    "forking" ist dann schon richtig. Bei "simple" wird erwartet, dass der Daemon nicht forkt, also durchläuft.

    Danke! Das hat funktioniert. Der Stick wird jetzt vom VDR direkt erkannt.


    Hier nochmal das Sundtek servicefile falls jemand mal das gleiche Problem hat:


    sundtek.service:


    Jetzt muss ich nur noch hinbekommen, dass softhddevice sich vernünftig verbindet. Ich werde mal dbus2vdr anschauen.


    Danke und Gruß an alle die mtgeholfen haben!
    Atech

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • Ich habe den Titel noch angepasst weil es ja vornehmlich um den sundtek.service geht.

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight


  • Jetzt muss ich nur noch hinbekommen, dass softhddevice sich vernünftig verbindet. Ich werde mal dbus2vdr anschauen.


    Wenn der X-Server bereits läuft, dann verbindet sich softhddevice direkt und ohne manuelles "Attachen". Versuche halt bei Gelegenheit mal runvdr-extreme und wenn du damit Probleme hast, dann melde dich nochmal.

  • Moin!


    Z.B. fehlt hier auch noch beim VDR Start die Erkennung wann der VDR bereit ist, das dbus2vdr Plugin hat da z.B. extra was drin damit Upstart erkennen kann wann der VDR wirklich fertig gestartet ist (d.h. der VDR wirklich bereit ist).


    Upstart ist da ziemlich einfach gestrickt, Stichwort "expect stop". Wenn das im Upstart-Job drin steht, dann erwartet Upstart, dass der gestartete Prozess ein STOP-Signal schickt, wenn es komplett bereit ist. Upstart schickt dann sofort ein CONT und kann dann mit den Abhängigkeiten weitermachen. Das ist das, was dbus2vdr macht, wenn die Upstart-Unterstützung aktiviert ist. Das STOP-Signal wird ausgelöst, wenn der vdr das erste mal im Main-Loop ist. Wenn er da ist, sollte er wohl vollständig initialisiert sein... :)
    Das Schöne ist, dass man für die Upstart-Unterstützung keinerlei komische Abhängigkeiten braucht.


    Wenn es einen ähnlichen Mechanismus für systemd gibt, würde ich es gerne in dbus2vdr einbauen. Das werde ich auch tun, sobald ich mal ein systemd-System zum Testen habe und wenn ich weiß, wie man systemd sowas mitteilen kann. Wenn das jemand weiß, klärt mich bitte auf. Ein Link zu einer Dokumentation würde mir auch vollkommen reichen, lesen kann ich selbst... :)


    Die Lösung mit der Pfadprüfung ist interessant...


    Ich würde mindestens noch dvr0 dazunehmen, das braucht der vdr auch.


    Lars.

  • Moin!


    Die schönste Lösung wäre das dynamite-Plugin


    ...und zusätzlich das Sundtek-Plugin. Das redet nämlich direkt mit dem Sundtek-Treiber und sagt dynamite, wenn neue Geräte kommen oder vorhandene abgezogen werden.


    Lars.

  • Moin!



    ...und zusätzlich das Sundtek-Plugin. Das redet nämlich direkt mit dem Sundtek-Treiber und sagt dynamite, wenn neue Geräte kommen oder vorhandene abgezogen werden.


    Lars.

    Hi!


    ich habe mir das alles bereits bei dir angeschaut. Finde es auch wriklich genial. Bin immer ein Vertreter von "keep it simple" aber jetzt wo ich nur noch USB habe sollte ichs villeicht mal testen.


    Also würde der Sundtek Stick dann automatisch eingehangen wenn er bereit ist? Und ich könnte ihn theoretisch im Betrieb einfach abziehen (praktisch wird es wohl kaum passieren)?


    Gruß
    Atech

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • Wenn der X-Server bereits läuft, dann verbindet sich softhddevice direkt und ohne manuelles "Attachen". Versuche halt bei Gelegenheit mal runvdr-extreme und wenn du damit Probleme hast, dann melde dich nochmal.


    Mit dem Befehl -x verbindet sich softhddevice aber leider nicht mit einem gestarteten X-Server:


    Code
    Feb 01 13:16:39 vdr vdr[544]: Fatal server error:
    Feb 01 13:16:39 vdr vdr[544]: Server is already active for display 0
    Feb 01 13:16:39 vdr vdr[544]: If this server is no longer running, remove /tmp/.X0-lock
    Feb 01 13:16:39 vdr vdr[544]: and start again.
    Feb 01 13:16:39 vdr vdr[544]: (EE)
    Feb 01 13:16:39 vdr vdr[544]: Please consult the The X.Org Foundation support
    Feb 01 13:16:39 vdr vdr[544]: at http://wiki.x.org
    Feb 01 13:16:39 vdr vdr[544]: for help.
    Feb 01 13:16:39 vdr vdr[544]: (EE)

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

  • OK mein Fehler, ich muss das -x einfach weglassen :)

    HTPC:
    Softtware: Archlinux mit VDR aus Archvdr repo (1.7.31 mit softhddevice) und xbmc 12.2 Frodo stable
    Hardware: Coolermaster 260 mit Core I3 540, 4 GB Kingst. Ram, GA.H55M-D2H, PCIe 16X RiserCard, NVIDIA 430GT, TT3600USB, TT3650-CI USB, Samsung SSD 640, WD Blue 1TB (WD10TP), IR Einschalter, imon Display, mce FB und 12 Kanal Atmolight (4 Led Streifen) über DFatmo und Boblight

Jetzt mitmachen!

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