[ANNOUNCE] runvdr extreme 0.4

  • Hallo,
    ich nutze auch das xine-plugin nach der tollen Anleitung von wbreu. xine wird da mit folgender Anpassung direkt aus dem xine-plugin heraus gestartet.
    Den X-Server starte ich über runvdr-extreme.


    Zitat

    Original von wbreu
    Zudem muß dass xine-plugin-0.9.3 ein wenig angepasst werden, um das Plugin inkl. Forntend automatisch zu starten. Die Anpassung erfolgt in der Datei xine.c, Zeile 233:



    Hier wurde ja jetzt diese Variante vorgestellt.


    Zitat

    Original von tomas


    Wo liegt denn der Vorteil xine aus der runvdr-extreme heraus zu starten?


    Wenn ich das richtig verstehe startet xine in einer Endlosschleife alle 5 Sekunden. Warum eigentlich?

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Wenn xine abraucht, dann kommt er gleich wieder.


    Vorteil des xine-Starts aus der runvdr-extreme ist zudem, dass die Parameter für xine angepasst werden können, ohne das Plugin neu zu bauen.


    Nachteil des xine-Starts aus runvdr-extreme ist, dass xine dann erstmal als root gestartet wird. Das kann man ändern, wenn man xine so aufruft:


    su - vdr -c xine

  • Zitat

    Original von Mreimer
    Wenn xine abraucht, dann kommt er gleich wieder.

    Ja, aber wenn xine noch läuft, wird es doch auch alle 5 Sekunden neu gestartet, oder verstehe ich das falsch. Macht der ewige Start denn keine Probleme?


    Zitat

    Vorteil des xine-Starts aus der runvdr-extreme ist zudem, dass die Parameter für xine angepasst werden können, ohne das Plugin neu zu bauen.

    O.k. das leuchtet ein


    Zitat

    Nachteil des xine-Starts aus runvdr-extreme ist, dass xine dann erstmal als root gestartet wird.

    Ist für mich egal, da der VDR sowieso als root läuft.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Zitat

    Original von goldbär

    Ja, aber wenn xine noch läuft, wird es doch auch alle 5 Sekunden neu gestartet, oder verstehe ich das falsch. Macht der ewige Start denn keine Probleme?


    hallo goldbär,


    Code
    while [ ! -e /tmp/vdr-xine/stream ] ; do ....


    so wie ich das sehe, wird xine nur dann gestartet, wenn die "pipe" (/tmp/vdr-xine/stream) des xine-plugin vorhanden ist ...


    gruß, ciax

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • Zitat

    Original von ciax
    so wie ich das sehe, wird xine nur dann gestartet, wenn die "pipe" (/tmp/vdr-xine/stream) des xine-plugin nicht vorhanden ist ...


    Das ist doch eine eigene Schleife, die in der selben Zeile mit "done" abgeschlossen ist. Da wird gewartet bis /tmp/vdr-xine/stream vorhanden ist.
    xine wird, wenn ich es richtig verstehe, in der zweiten Schleife ohne Abbruchbedingung alle 5 Sekunden gestartet.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

    Einmal editiert, zuletzt von goldbär ()

  • Zitat

    Original von goldbär


    Das ist doch eine eigene Schleife, die in der selben Zeile mit "done" abgeschlossen ist. Da wird gewartet bis /tmp/vdr-xine/stream vorhanden ist.
    xine wird, wenn ich es richtig verstehe, in der zweiten Schleife ohne Abbruchbedingung alle 5 Sekunden gestartet.


    hmm, stimmt auch :)


    Code
    xine --bug-report -A alsa:default -V vdpau -f -g --no-splash  --post vdr_video --post vdr_audio --post vdr vdr://tmp/vdr-xine/stream#demux:mpeg_pes

    in der zweiten schleife müßte aber "blocken". also läuft die schleife eigentlich nur weiter, wenn xine "abstürzt".

  • Zitat

    Original von ciax
    in der zweiten schleife müßte aber "blocken". also läuft die schleife eigentlich nur weiter, wenn xine "abstürzt".


    Das verstehe ich nicht. Was müsste "blocken"?

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Zitat

    Original von goldbär


    Das verstehe ich nicht. Was müsste "blocken"?


    ist auch quatsch .. ist bei mir schon vieeel zu lange her. wenn der xine-aufruf die weitere ausführung der schleife "blocken" würde, könnte XINEPID nicht gesetzt werden. dann wäre "function XSHUTDOWN()" in dem fall sinnlos. ich kapier's also auch nicht ... :monster2


    gruß, ciax

  • also, für mich wird

    PHP
    {
         while [ ! -e /tmp/vdr-xine/stream ] ; do sleep 1 ; done
         while true ; do        
                  xine --bug-report -A alsa:default -V vdpau -f -g --no-splash  --post vdr_video --post vdr_audio --post vdr vdr://tmp/vdr-xine/stream#demux:mpeg_pes
                  sleep 5
        done
    } &


    als separater Prozess im Hintergrund (am Ende &) gestartet. Die PID wird XINEPID zugewiesen. Diese Prozess wartet bis die /tmp/vdr-xine/stream existiert (erste Schleife), dann wird xine gestartet, allerdings nicht abgekoppelt. Wenn xine abstürzt wird 5 Sekunden gewartet und dann wieder neugestartet. Diese zweite Schleife läuft solange bis der Process via XSHUTDOWN (kill $XINEPID) gekillt wird.

  • Zitat

    Original von NemoN
    also, für mich wird

    PHP
    {
         while [ ! -e /tmp/vdr-xine/stream ] ; do sleep 1 ; done
         while true ; do        
                  xine --bug-report -A alsa:default -V vdpau -f -g --no-splash  --post vdr_video --post vdr_audio --post vdr vdr://tmp/vdr-xine/stream#demux:mpeg_pes
                  sleep 5
        done
    } &


    als separater Prozess im Hintergrund (am Ende &) gestartet. Die PID wird XINEPID zugewiesen. Diese Prozess wartet bis die /tmp/vdr-xine/stream existiert (erste Schleife), dann wird xine gestartet, allerdings nicht abgekoppelt. Wenn xine abstürzt wird 5 Sekunden gewartet und dann wieder neugestartet. Diese zweite Schleife läuft solange bis der Process via XSHUTDOWN (kill $XINEPID) gekillt wird.


    hi NemoN,


    du sagst es! das "&" ist entscheidend. damit bekommt auch XINEPID die prozess-ID mit. der xine-aufruf selbst wird nicht abgekoppelt ("blockiert" also die schleife bis zu einem "absturz"). so halb habe ich es dann vorher doch verstanden ;)


    gruß, ciax

  • Zitat

    Original von NemoN
    Wenn xine abstürzt wird 5 Sekunden gewartet und dann wieder neugestartet.


    Und genau das verstehe ich nicht. Die Schleife läuft doch immer im Hintergrund. Wie wird denn erkannt, dass xine abgestürzt ist.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Zitat

    Original von goldbär


    Und genau das verstehe ich nicht. Die Schleife läuft doch immer im Hintergrund. Wie wird denn erkannt, dass xine abgestürzt ist.


    .. die schleife läuft nicht, sondern "steht" im hintergrund, da der xine-aufruf in der schleife verhindert, daß "überhaupt bis zum "sleep 5" gekommen wird. erst wenn xine "rausfliegt", geht's weiter ...

  • Zitat

    Original von ciax
    .. die schleife läuft nicht, sondern "steht" im hintergrund, da der xine-aufruf in der schleife verhindert, daß "überhaupt bis zum "sleep 5" gekommen wird. erst wenn xine "rausfliegt", geht's weiter ...


    Ah, jetzt, ja...
    Ich hatte irgendwie immer an sowas gedacht: xine ... & :versteck

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Zitat

    Originally posted by Urig
    Für die nächste Version habe ich schon folgende Änderung vorgemerkt:


    Udo


    udo, du bist mein held :) funktioniert endlich einwandfrei. dein script ist einfach der HAMMER! danke!


    servus izeman

    produktiv: intel dh67bl, sat>ip, octopusnet, 16gig boot-ssd, yavdr 0.6.1, cir lirc
    testing: zotac ion-f itx, 1x tt s2-3600 usb, 8gig boot-ssd, yavdr 0.5 testing
    tv: samsung 75" amp:denon avr-x1300

  • @udo: noch ein kleine frage:


    wo wuerde ich


    export DISPLAY=:0.1 /usr/bin/graphtft-fe -h localhost -e 2 -n -W 800 -H 600 -f -r


    einfügen, damit es beim start gestartet wird, und auch wieder beendet wird wenn runvdr den vdr neu startet?


    danke!

    produktiv: intel dh67bl, sat>ip, octopusnet, 16gig boot-ssd, yavdr 0.6.1, cir lirc
    testing: zotac ion-f itx, 1x tt s2-3600 usb, 8gig boot-ssd, yavdr 0.5 testing
    tv: samsung 75" amp:denon avr-x1300

  • Hallo Udo,


    ich habe da einen Treiber (pvrusb2), der braucht sehr lange, bis das dvb frontend angelegt wird. (Liegt wohl daran, dass es ein Hybridgerät ist, das erst seinen analogen Teil initialisiert)


    Es passiert regelmäßig, dass beim vdr-Start das /dev/dvb/frontendX noch nicht existiert, so dass vdr das Gerät nicht findet.


    Kannst du mir helfen, die runvdr so zu modifizieren, dass zwischen Do_DVBLOAD und Starten von vdr eine konfigurierbare Zeit gewartet wird?


    Noch genialer wäre es, wenn man konfigurieren könnte, wieviele frontends mindestens vorhanden sein müssen, ehe vdr gestartet wird. (Das Script müsste dann nach dem DoDVBLOAD kontinuierlich nachzählen, wieviele frontends schon da sind)


    Auf diese Weise könnte man sichergehen, dass alle Geräte fertig initialisiert sind.


    Mal so als Anregung :)


    Gruß
    Dr. Seltsam

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • ich denke vielleicht zu kompliziert


    ein abschließendes "sleep 10" in der runvdr.conf im Abschnitt "#function DVBLOAD() " tut es auch.


    ist schon irre, dass ein Treiber so lange braucht. Liegt wohl auch daran, dass 2 x Firmwaredateien geladen werden.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Zitat

    Originally posted by Mreimer
    Warum das LANG nicht einfach via runvdr.conf setzen?


    Kann man auch machen, allerdings darf man dann auch das export nicht vergessen. Insgesamt finde ich es aber schöner, wenn standardmäßig die Systemsprache als Default automatisch da ist.


    Zitat

    Originally posted by izeman
    wo wuerde ich


    export DISPLAY=:0.1 /usr/bin/graphtft-fe -h localhost -e 2 -n -W 800 -H 600 -f -r


    einfügen, damit es beim start gestartet wird, und auch wieder beendet wird wenn runvdr den vdr neu startet?


    Wenn du den X-Server mit startest, kann es in die XSTARTUP/XSHUTDOWN mit rein. Alternativ könnte es zusammen mit DVBLOAD/DVBUNLOAD ge- und entladen werden. Dann würde es aber bei nur-VDR-Neustart nicht extra gestartet werden.
    Der sonstige Start wäre vergleichbar mit den verschiedenen Lösungen, die hier schon diskutiert werden.


    Eventuell könnte man in zukünftigen Versionen aber auch noch einen VDRSTARTUP/VDRSHUTDOWN Hook einbauen.


    Zitat

    Originally posted by Dr. Seltsam
    ich habe da einen Treiber (pvrusb2), der braucht sehr lange, bis das dvb frontend angelegt wird. (Liegt wohl daran, dass es ein Hybridgerät ist, das erst seinen analogen Teil initialisiert)


    Folgender Code ist seit längerem Teil meines DVBLOAD-Skripts:


    Der Code stammt noch aus Zeiten, als udev allgemein etwas träge beim Anlegen der Device-Nodes war, und wartet brav, bis alle Devices aufgetaucht sind. Und im Falle eines fatalen Device-Problems versucht er auch noch einen Reboot.



    Gruß,


    Udo

  • Zitat

    Originally posted by Urig
    Wenn du den X-Server mit startest, kann es in die XSTARTUP/XSHUTDOWN mit rein. Alternativ könnte es zusammen mit DVBLOAD/DVBUNLOAD ge- und entladen werden. Dann würde es aber bei nur-VDR-Neustart nicht extra gestartet werden.


    ist es so richtig?


    # X startup commands, called within the X server
    function XSTARTUP() {
    while true ;do 'DISPLAY=:0.1 /usr/bin/graphtft-fe -h localhost -e 2 -n -W 800 -H 600 -f -r &'; done &
    SXFEPID=$!
    }


    funktionieren tut's. aber ich frag lieber zur sicherheit, bzw hab ich jetzt das problem, dass die cpu auf 100% geht, und runvdr alleine 30% cpu auf meinem 2gig dualcore braucht.
    danke!

    produktiv: intel dh67bl, sat>ip, octopusnet, 16gig boot-ssd, yavdr 0.6.1, cir lirc
    testing: zotac ion-f itx, 1x tt s2-3600 usb, 8gig boot-ssd, yavdr 0.5 testing
    tv: samsung 75" amp:denon avr-x1300

    Einmal editiert, zuletzt von izeman ()

  • Zitat

    Original von Urig


    Kann man auch machen, allerdings darf man dann auch das export nicht vergessen. Insgesamt finde ich es aber schöner, wenn standardmäßig die Systemsprache als Default automatisch da ist.


    Volle Zustimmung. Habe das jetzt auch für mein Slackware-Init so gemacht. Ist definitiv der bessere Weg. Danke für die Anregung!

Jetzt mitmachen!

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