Posts by SHF

    Bei einem Überlauf im Ringbuffer würde ich vom VDR eine Fehlermeldung (im syslog) erwarten.

    Ja, da war was im Log, darum bin ich überhaupt drauf gekommen.
    Die Meldung kam aber eher selten, wenn ich das recht erinnere.

    Irgendwie bin ich dann auch irgendwie an Füllstand vor Ringbuffer gekommen. (Ist jetzt ein halbes Jahr her, Details erinner nicht mehr.)
    Der Füllstand war für meinen Geschmack jedenfalls immer verdächtig niedrig. Was aber mangels Vergleich auch eine Fehleinschätzung sein kann.

    Wobei, ein leer gelaufener Ringbuffer ja auch Folge eines massiven (evtl. aber nur kurzen) Überlaufs im UDP-Socketbuffer sein, wenn man genau überlegt.

    Vielleicht teste ich mal bei Gelegenheit die von Dir vorgeschlagenen größeren Werte.

    Das wäre echt hilfreich!
    Wenn ich das recht erinnere, hattest Du damals die meisten Probleme.

    Bei mir geht es mit den Grundeinstellungen eigentlich.
    Zumindest meist ein paar Minuten lang, bis es dann irgendwann zu mehr oder weniger schweren Fehlern kommt.
    Das ist zum Testen nicht so wirklich ideal, da man nie weiß, ob die Einstellung was brachte, oder ob man einfach nur Glück hatte.

    Dann scheint es tatsächlich an den Buffern zu liegen und ist eher eine Systemkonfiguration.

    Die Voreinstellung ist AFAIK immer gleich niedrig :(.

    Die 10ms im Code kann ich auch reduzieren, aber ich will die Systemlast nicht hochtreiben.

    Das mögliche Minimum ist 3ms.
    Ich denke nicht, das man das groß merkt.

    Problematisch ist in dem Zusammenhang, das einem da auch der Scheduler einen Streich spielen kann und die Zeiten u.U. länger werden als gewünscht.

    Bei Xine scheint man da einige Klimmzüge gemacht zu haben, das macht man nicht ohne Grund.
    (Auch wenn das ganze Konstrukt bei mir momentan mehr Fragen aufwirft als zu beantworten.)

    C++
        /* System calls are not a thread cancellation point in Linux
         * pthreads.  However, the RT signal sent to cancel the thread
         * will cause recv() to return with EINTR, and we can manually
         * check cancellation.
         */

    https://sourceforge.net/p/xine/xine-lib/ci/default/tree/src/input/input_rtp.c#

    zu einem anderen Extrem (viel zu hoch, die Beispielwerte)

    Viel zu hoch würde ich bei 25MiB nicht sagen.
    Bei den Datenraten und wenn man ~1s puffern will wären 5-10MiB angemessen. (ffmpeg puffert auch 1 oder 2 Sekunden und die Daten sollten schon rein passen.)

    Bei net.core.?mem_max=26214400 hätte ich keine Bedenken. net.core.?mem_default würde ich aber ungern auf 25MiB hoch jagen, das beeinflusst ja alle Puffer.

    C++
      #define BUFFER_SIZE (1024*1024)
      
      /* Try to increase receive buffer to 1MB to avoid dropping packets */
      optval = BUFFER_SIZE;
      if ((setsockopt(s, SOL_SOCKET, SO_RCVBUF,
    		  &optval, sizeof(optval))) < 0) {
        LOG_MSG(xine, _("setsockopt(SO_RCVBUF): %s.\n"), strerror(errno));
        return -1;
      }

    Xine scheint zu versuchen den Puffer zu erhöhen (was bei mir natürlich dank niedrigem net.core.rmem_max normalerweise nicht funktioniert hat).

    Evtl. sollte man das so ähnlich auch rein nehmen, dann reicht net.core.rmem_max zu setzen?
    Für TCP schadet ein größerer Puffer sicher auch nicht.

    Ich wüsste nicht, wo ich da ansetzen sollte.

    Schade, ich hatte die Hoffnung, dass irgendjemand, der das Plugin besser kennt wenigstens sowas wie eine vage Idee hat.

    Die Hauptschleife in streamer.cpp liest die Daten und füllt den internen Buffer (Default size 2 MB).

    Könnte man in den 10ms sleep den UDP-Socketbuffer voll schreiben?
    Der ist nicht groß (~200kiB) und ohne physikalisches Netzwerk gibt ja eigentlich keine Begrenzung in der Schreibgeschwindigkeit.

    Der Überlauf wäre mir dann zwar entgangen, aber das muss ja nicht permanent auftreten und man kann die Augen auch nicht überall haben.


    Immerhin ein Ansatz, denke ich.
    Wenn ich mal wieder etwas mehr Zeit habe, werde ich das noch mal ansehen.

    Wenn bei dir ffmpeg die Daten liefert und die Puffer langsam leer laufen, dann ist entweder ffmpeg nicht schnell genug oder die Daten kommen im Download nicht schnell genug an.

    Das Kuriose ist aber, dass es zu funktionieren scheint, wenn ich den UDP-Stream mit dem Xine-Player öffne.

    Für mich sieht es daher noch immer so aus, als ob das IPTV-Plugin da zumindest mit Schuld hat.

    Der lose Stecker war wohl wirklich die Ursache, emergency exits sind nicht mehr aufgetreten.
    Weder mit noch ohne Aufhänger.

    Wenn man richtig sucht findet sich natürlich doch einiges zu dem Thema.
    Exemplarisch mal ein Link:https://stackoverflow.com/questions/65034403/force-program-termination-if-threads-block-in-c#

    Prinzipiell scheint das beim VDR auch alles umgesetzt zu sein.
    Nur wird eigentlich immer std::terminate() im Watchdog verwendet und nicht exit().
    Keine Ahnung, ob das jetzt einen Unterschied bzgl. des Hängers macht.

    Im Link gibt es aber ein Beispiel-Programm.
    Bei Gelegenheit muss ich mal versuchen, ob ich damit das Verhalten reproduziert bekomme.

    Ich bin mir nicht ganz sicher ob wir hier nicht aneinander vorbei reden. Hier wird kein ffmpeg genutzt, sondern die Daten kommen vom inputstream-adaptive plugin.

    Ich denke es ist irgendwie nicht klar geworden, worauf ich hinaus will.
    Wir verwenden unterschiedliche Zuspieler, haben aber den gleichen Fehler.

    Bei mir gibt es aber keine Möglichkeit die Datenrate zu beeinflussen, da es sich um einen Live-Stream handelt.
    (ffmpeg packt den Datenstrom nur in .ts um, das ist aber eigentlich unerheblich und das scheint auch einwandfrei zu funktionieren.)

    Der Knackpunkt ist, dass sich jetzt das IPTV-Plugin an den Datenstrom anpassen muss, sonst wird Live-TV nie funktionieren. (zumindest wüsste ich nicht wie)

    Ich denke, die eigentliche Ursache liegt irgendwo beim Ringbuffer im IPTV-Plugin, überblicke das Konstrukt aber nicht.
    Wenn ich aber nicht völlig daneben liege, läuft der Ringbuffer leer, obwohl kontinuierlich Daten zugeführt werden!
    Der Füllstand des internen Ringbuffers sollte dem Plugin bekannt sein, es müsste also entsprechend regeln können, tut es aber wohl nicht.
    Bei den DVB-Karten klappt das doch auch irgendwie, die liefern die Daten ja auch in der Geschwindigkeit in der sie wollen.
    An dem Punkt bin ich dann aber raus gekommen ....

    Im Anhang meine Skripte für das "alte" IPTV-Plugin, die im Zuge dieses Themas entstanden sind:

    don-baba
    February 14, 2024 at 2:25 PM

    Der Stand ist auch etwa Sommer '24, seit damals bin ich aus Zeitgründen leider überhaupt nicht mehr zu dem Projekt (und zum VDR-Hobby allgemein) gekommen.
    Viel weiter entwickeln werde ich die Skripte aus Zeitgründen (und da sie dank der unermüdlichen Arbeit von Zabrimus :tup vermutlich obsolet sind,) also eher nicht mehr.
    Aber ehe das Zeug bei mir nutzlos auf der Festplatte verrottet, stelle ich es mal hier rein, vielleicht hilft es ja jemandem.

    Ich habe heute eigentlich nur ein bisschen aufgeräumt und die Pfade angepasst.
    Vermutlich wird das mit den Pfaden aber nicht für jeden passen, da muss evtl. nachjustiert werden.

    Die Grund-Idee war, zu versuchen möglichst viel über Skripte zu realisieren, um ein Update im Falle von Änderungen zu vereinfachen.
    Die Skipte sind noch nicht fertig, funktionieren grundsätzlich aber. Details wie eine Konfigurationsdatei für die einzelnen Kanäle fehlt aber noch.

    Der Ablauf ist zweistufig, das Skript m3u2channel scannt die ankommenden Streams, wählt die passenden aus und erstellt dann einen passenden channels.conf-Eintrag. Die Stream-Nummer für ffmpeg wird codiert in der PID gespeichet. (Für vlc geht das noch nicht.)
    Die Idee hier war, auf einen Scan beim Umschalten verzichten zu können und so die die Umschaltzeiten möglichst zu minimieren.
    Auch wenn einigen Stellen noch nicht so ganz funktioniert wie ich das gerne hätte (liegt nicht nur am Skript), geht es aber prinzipiell.
    Man kann damit die .m3u-Files scannen und daraus channels.conf-Einträge erstellen und auch bei laufendem VDR aktualisieren lassen und natürlich auch IPTV schauen. (Allerdings mit üblichen Einschränkungen, die das Plugin in Verbindung mit ffmpeg immer hatte.)


    Die Erkennung der Streams klappt an sich recht gut, das IPTV-Plugin macht aber teilweise sein eigenes Ding mit den Tonspuren.
    Mehrkanalton geht vermutlich noch nicht, da ich keine Quelle zum testen gefunden habe.
    Wenn wenn mir jemand den ffprobe_out.txt von so einem Kanal zur Verfügung stellt, kann ich mir das aber noch mal anschauen. Das sollte nicht viel Arbeit machen.


    Im Prinzip ist das wohl so, aber nur bei Livestreams.

    Ich hatte immer mit den Live-Streams der Öffentlich-Rechtlichen getestet, daher beziehen sich meine Aussagen auch nur darauf.

    Da gibt es keine konstante Datenrate.

    Die Frame-Rate sollte aber normalerweise konstant sein.
    Damit sollten die Daten auch zeitnah in brauchbaren Häppchen eintrudeln.
    Im Prinzip wie bei DVB, unter Umständen aber in anderen Blockgrößen.

    Bis ffmpeg klappte es bei meinen Tests auch einwandfrei.
    Und was bei ffmpeg als UDP-Strom raus kam, spielte xine direkt auch einwandfrei ab.
    Daher mein Schluss, dass es nicht an ffmpeg und auch nicht an der UDP-Schnittstelle liegt.

    Das einzige was hier wirklich hilft ist ein durchgängiger Puffer bis ins Ausgabeplugin der einfach blockiert wenn er vollgelaufen ist.

    Bei mir sind die Puffer immer leer gelaufen und mir ist völlig unklar, warum das passiert.
    Zu Übertragungsverlusten sollte es nicht kommen, die Pakete verlassen den Computer ja nie. Von daher sollte auch UDP zuverlässig funktionieren.


    Was an Daten kommt bestimmt ffmpeg, da muss sich das Plugin halt anpassen.
    Das Plugin sollten den (recht kleinen) Empfangspuffer der Schnittstelle schnellst möglich leeren und die Daten intern puffern. (Und soweit ich das beurteilen kann wird das auch so gemacht.) Dass der Empfangspuffer der Schnittstelle leer läuft ist also normal und gewollt.
    Für mich sieht es daher danach aus, als ob das Plugin zu wenig puffert oder zu schnell lesen will.

    Sofern ich das richtig interpretiert habe, bin ich auch nie über ein paar wenige Prozent (<5%) Füllstand im Ringbuffer im Plugin gekommen. Irgendwie erscheint mir das doch recht knapp.
    Ein Ziel-Füllstand von 20-30% würde mir sinnvoll erscheinen.
    Beim Ringbuffer gibt es noch Einstellmöglichkeiten, die habe ich mir aber noch nicht näher angesehen.
    Wie die ganze Regelung abläuft überblicke ich aber noch nicht. Bei dem Thema habe ich bislang auch nur eher nur an der Oberfläche gekratzt.


    Unter Umständen läuft dadurch auch nur der Audio oder Video-Puffer leer, wenn die Blockgröße zu groß ist.
    Die Blockgröße kann man bei ffmpeg auch beeinflussen, das ist auch in einigen der Skripte drin. Da ist die Blockgröße eher groß eingestellt.
    Die Blockgröße testweise mal zu verringern, habe ich aus Zeitgründen aber noch nicht versucht.

    Mit dem Plugin sollte es eigentlich funktionieren, obwohl ich das automatische löschen nie getestet habe.

    Mir dem Plugin sollte der VDR dann auch die korrekte Größe anzeigen.
    Ohne sieht er nur die Größe der SSD.


    Ganz korrekt wäre nur die Video-Dateien auf der HDD zu haben und den Rest auf der SSD.
    Die Verzeichnisstruktur ist dann auf der SSD und HDD identisch, nur sind die Video-Dateien auf der SSD Symlinks auf die eigentliche Datei auf der HDD.

    Das ist das Verhalten, wie der VDR dann Aufnahmen anlegt.
    Eine bestehende HDD entsprechend um zu kopieren ist aber nicht trivial.

    Von mir wurde der Fall zwar nicht getestet, aber ich sehe momentan keinen Grund, warum das vdr-plugin-distributedvideodir nicht auch mit der anderen Art der Verlinkung klar kommen sollte.

    Egal was ich tue ich bekomme es nicht hin den Stream konstant zu halten. Entweder die Puffer im IPTV Plugin incl. der Puffer im Ausgabeplugin laufen langsam voll oder sie laufen langsam leer.

    Das hatte ich bei meinen Versuchen im letzten Sommer auch bemerkt. Bei mir war es typischer weise ein Buffer-Underrun.

    Das erhöhen der Empfangspuffer auf der Schnittstelle brachte etwas Besserung.
    Ein größerer Sendepuffer brachte aber wenig bis nichts.

    Der Logik nach, sollte der Fall aber eigentlich gar nicht auftreten können.
    Da der Sender die Datenrate vorgibt, muss der Empfänger sich zwangsläufig darauf synchronisieren. (Nicht anders als bei Empfang via DVB generell.)
    Meine Vermutung ist, dass da irgendwas im Plugin nicht passt, was mal mehr und mal weniger auffällt.
    Unter Umständen ist es lediglich eine zu große Blockgröße, mit der die Daten auf die Schnittstelle geschrieben werden, was das Plugin außer tritt bringt.

    Das Faszinierende bei meinen Tests war, dass es mit ffmpeg als Quelle und xine als Client fehlerfrei über Stunden lief.

    Mein letzter Verdacht lag beim Ringbuffer vom VDR, den das Plugin auch verwendet.
    Da einige Timing Einstellungen, die ich mir mal ansehen wollte.
    Bei dem Stand musste ich aber leider abbrechen, da kamen dann andere Baustellen, die Vorrang haben. Seit dem ist meine Zeit für Hobbys leider erst mal extrem begrenzt.


    Die Parameter wären 1 Video-URL (samt VPID), 3 Audio-URL (samt 3 APID), die TSID, SID, Name des Kanals. Es kann aber auch nur eine URL sein, oder eine Video- und 1 oder 2 Audio-URL.

    Das alles als Parameter in einem Script, das die verschiedenen Möglichkeiten berücksichtigen muss, halte ich für nur schwer lesbar.

    Ich weiß nicht, ob die Fragestellung noch relevant ist, bin nur zufällig beim Überfliegen darüber gestolpert. Ggf. die Antwort einfach ignorieren.

    Für ein Bash-Skript würde ich das als eine Wortliste übergeben, getrennt mit einem Zeichen, was in einer URL nicht vorkommen darf (zB.";"). (Das spart einem das Quoting.)
    Die Wortliste ist nur ein Parameter und lässt sich im Skript elegant mit einer for-Schleife abarbeiten.

    Da es nur eine Video-URL gibt, ist die Zuordnung auch Problemlos, wenn man sich an eine Reihenfolge hält.

    Die PIDs muss man eigentlich gar nicht übertragen, da man sie frei wählen kann.
    Wenn man immer das gleiche Schema verwendet (zB. ab 100 hoch zählen) sollte das klappen.

    Oder man übergibt die Zeile aus der channels.conf als Parameter.
    Bei meinen Skripten hatte ich mir die Zeile via svdrp geholt, das hat auch geklappt.

    Ich hatte leider nicht die Zeit das hier detaillierter zu verfolgen und dachte die UDP-Schnittstelle und externe Skripte wären dank dieser Entwicklung obsolet. Da das aber anscheinend nicht der Fall ist, werde ich mal schauen, ob ich meine Basteleien soweit sortiert bekomme, dass ich sie im anderen Thread anhängen mag.

    Ich bezog mich auf das 12:05 Event, was im OSD (Bild) als NEXT angezeigt wird, aber via svdrp nicht existiert. Das Foto war von 20:11, da verwirrt einen so eine Anzeige schon etwas.

    Da das EPG aber o.k scheint, würde ich es darauf bewenden lassen.
    Ich habe es leider erst heute geschafft mich rechtzeitig einzuloggen, bevor ominöse Anzeige verschwunden ist.


    if (Duration > 10 * 3600) continue;

    Das sollte das 12-Uhr-Event weg hauen.
    Wenn ich es möglich teste ich das nochmal, aber versprechen, dass ich das rechtzeitig schaffe kann ich nicht.

    Aus der Aussage schließe ich, dass Du es für möglich hältst, dass ein hängender Thread das Beenden blockiert.

    Debuggen wird aber schwierig, allein schon weil es normalerweise nicht auftritt.
    Es wird deutlich unter 10% der emergency exits betreffen und die sind eh schon selten, sonst wäre es mir schon viel früher aufgefallen.
    Endgültiger Auslöser war dann ein lockerer F-Stecker, der vorher jahrelang funktioniert hat.
    Da die Ursache schlechtes Signal war, könnte dümmsten Falls sogar eine der DVB-Karten gehangen haben.
    Ich bezweifele, dass ich das so jemals wieder reproduziert bekomme.
    Außerdem steht schon der Nachfolger in den Startlöchern, der das aktuelle System hoffentlich bald ablöst.

    Das irgendwas gehangen hat ist aber klar, sonst hätte der Watchdog ja nicht ausgelöst. In dem Moment ist es dann eigentlich eh schon zu spät um was zu retten.
    Wenn man das so herum betrachtet, ist es also normal, dass irgend etwas hängen geblieben ist, wenn der Watchdog ausgelöst.

    Gibt es eine Möglichkeit den emergency exit so zu gestalten, dass er auch mit hängenden Threads zuverlässig aufräumt?
    Ich denke es macht mehr Sinn in die Richtung zu denken, von einem verlässlichen emergency exit würden Alle profitieren.

    Ob an der evtl. ein abort() besser funktionieren würde? Oder ist das zu brutal?
    Ehrlich gesagt überschreitet diese Fragestellung sowohl meine Kompetenz als auch die meiner Fachliteratur. Sein laufendes Programm von innen heraus zu "killen" ist vermutlich auch eher unüblich.
    Keine Ahnung, warum immer ausgerechnet ich an den Weihnachtstagen auf so Dinger stoßen muss ... :rolleyes:

    Workaround wäre für mich von außen, zB. via svdrp zu schauen, ob der VDR noch reagiert und ihn Notfalls zu beenden.
    Wirklich schön ist so eine Lösung aber nicht und könnte dümmsten Falls auch nach hinten los gehen.

    Den "running status" wird man nicht beeinflussen können.

    Wenn das mit den überlagernden Events kein Problem ist, soll's mir recht sein.
    Ich wollte es halt nur mal erwähnt haben, weil auf die klasse Idee vermutlich bald auch noch andere aufspringen werde ...

    Die EPG-Search-Testaufnahme der "Sendung mit der Maus" hat übrigens auch geklappt.
    Ich hätte zum Test aber besser was nehmen sollen, was um 12:00 beginnt, fällt mir gerade auf.
    Vielleicht mache ich das dann nochmal...


    Der Vollständigkeit halber noch der Next-Anzeigefehler.

    Das war jetzt das erste mal, dass ich es geschafft habe den zu erwischen, der bleibt meist nur ein paar Minuten.
    Da das EPG o.k. ist, ist das also ein reiner Anzeigefehler, der eventuell sogar schon behoben ist.

    Den kann man wohl einfach ignorieren. Aber komisch sieht es schon irgendwie aus ... :schiel

    Bei "alt_Das Erste" sieht es bei mir so aus:

    Bei mir aktuell auch.
    (Klassischer Vorführeffekt sozusagen :gap.)

    Ich hatte die letzten Tage aber auch schon den Fall, dass zu alte, abgelaufene Events angezeigt wurden. Oder es fehlten noch kommende Sendungen.

    Die Anzeige ist mir eigentlich ziemlich egal, da ist es allenfalls lästig, wenn die Info zur aktuellen Sendung fehlt.
    Etwas Bedenken habe ich eher wegen der Timer, besonders Serientimer und EPG-Search.

    Vor ein paar Jahren gab es ja mal so einen ähnlichen Fall, wo ein überlanges Event aus einer anderen Quelle das EPG überlagert hat. Das hat hatte Aufnahmen mittels EPG-Search verhindert. Arte EPG verhindert Suchtimeraufnahmen

    In diesem Fall scheint das zumindest nicht ganz so schlimm zu sein, ich hatte in den letzten eine Hand voll erfolgreichen Aufnahmen auf den Kanälen.
    Da ich momentan ziemlich eingebunden bin, und ich auf den Kanälen eher wenig Suchtimer habe, kann es gut sein, dass mir die eine oder andere missglückte Aufnahme durch gerutscht ist.

    Daher wohl der erste Event, der alle weiteren dieses Tagen "überlagert".

    Ist das denn zulässig, dass sich Events überlagern?
    Ich bin auf dem Gebiet nicht der Experte, habe aber in Erinnerung, dass das eigentlich nicht der Fall sein darf.

    Wie sollte sich denn VDR deiner Meinung nach hier verhalten?

    Gute Frage, deshalb hab ich das hier ja auch gepostet.

    Evtl. sollte man Events, die x andere Überlagern einfach einkürzen oder raus schmeißen?
    Hängt natürlich davon ab, ob überlappende Events zulässig sind.

    Kaum will man ins Bett gehen, fehlt wieder die aktuelle Sendung im EPG:


    Code
    215-C S19.2E-1-1101-28106 alt_Das Erste 
    215-E 1 1735426800 43200 4E 7 
    215-D Die ARD beendet am 07. Januar 2025 die SD-Ausstrahlung ihrer Programme. Bitte steigen Sie frühzeitig auf HD-Empfang um. Mehr Informationen auf VTX-Tafel 499 oder bei ard-digital.de. 
    215-e 
    215-E 55739 1735438200 5580 50 1 
    215-T Anna und ihr Untermieter: Dicke Luft 
    215-S Spielfilm Deutschland 2022
    ...

    Keiner eine Idee, warum das exit(1) nicht funktioniert haben könnte?

    Bislang war ich auf dem Stand, dass nach einem exit(x) das Programm sicher beendet ist.
    Nach etwas suchen finden sich aber derartige Hinweise:

    Quote

    Note that objects with automatic storage are not destroyed by calling exit (C++).

    Könnte da was dran sein?
    Dann würde das Problem aktuell noch immer bestehen.

    Das richtig blöde an dem eingetretenen Zustand ist, dass mein Hardware-Watchdog den nicht abdeckt.
    Bislang habe ich mich auf den Watchdog im VDR verlassen und prüfe ich lediglich, ob die runvdr noch läuft.


    Der Zustand, in dem ich den VDR wieder gefunden habe war etwa:
    - CPU-Load und RAM-Auslastung waren normal.
    - Ein oder mehrere VDR-Prozesse liefen noch.
    - runvdr lief auch.
    - Der VDR war nicht bedienbar und hat nicht auf svdrp reagiert und ließ sich auch nicht mit killall -TERM vdr beenden.
    - Ein Neustart des VDR-Service hat aber funktioniert.

    (Leider teilweise etwas ungenau, aber es war halt schon spät am Feiertag, als mir das aufgefallen ist. Da war ich nicht mehr so ganz frisch :prost2 :sleep.)

    Die beiden letzten beiden Beobachtungen kann ich aber inzwischen erklären:
    Der Neustart des VDR-Service führt ein kill-TERM $runvdr_pid aus.
    Der VDR reagierte also anscheinend auf nichts mehr, das Beenden der runvdr hat ihn dann aber doch mit erwischt.

    Der alte LNB hatte 55 dB Verstärung, wie der Neue auch. Daran liegt es also nicht.

    Man könnte mal versuchen den Multischalter zu umgehen und testweise einen der Ausgänge vom LNB direkt anschließen. (zB. mit einem F-Verbinder anstelle des MS)
    Dann hat man zwar nur das eine Band zur Verfügung, aber normalerweise funktioniert das grundsätzlich.

    Wenn die empfangbaren Kanäle dann besser sind liegt es an Multischalter.
    Nach Jahren auf dem heißen Dachboden können da schon mal ELKOs austrocknen oder so...

    Das sieht so aus als würde der Sender hier fehlerhafte EPG Daten senden.

    Das sehe ich auch so, die folgenden Events sehen mir irgendwie suspekt aus:

    Now:

    Code
    215-C S19.2E-1-1101-28106 alt_Das Erste 
    215-E 6002 1735383600 43200 4E 6 
    215-T Achtung: Sie schauen Fernsehen in SD 
    215-D Die ARD beendet am 07. Januar 2025 die SD-Ausstrahlung ihrer Programme. Bitte steigen Sie frühzeitig auf HD-Empfang um. Mehr Informationen auf VTX-Tafel 499 oder bei ard-digital.de. 
    215-G 20 
    215-V 1735383600
    215-e
    215-c

    Next:

    Code
    215-C S19.2E-1-1101-28106 alt_Das Erste 
    215-c

    Und das EPG beginnt jetzt immer hiermit.

    Code
    215-C S19.2E-1-1101-28106 alt_Das Erste 
    215-E 6002 1735383600 43200 4E 6 
    215-T Achtung: Sie schauen Fernsehen in SD 
    215-D Die ARD beendet am 07. Januar 2025 die SD-Ausstrahlung ihrer Programme. Bitte steigen Sie frühzeitig auf HD-Empfang um. Mehr Informationen auf VTX-Tafel 499 oder bei ard-digital.de. 
    215-G 20 
    215-V 1735383600 
    215-e

    Wenn ich das richtig interpretiere, überlappt der Eintrag mit dem Rest vom EPG, was das Chaos auslöst.

    Ich würde da keine Zeit mehr investieren.

    Für den Kanal lohnt sich das nicht, der wird bald abgeschaltet.
    Ich dachte aber, das könnte als Testcase interessant sein. Derartige Fehler werden ja gerne immer mal wieder eingebaut und hier ist er so schön reproduzierbar.

    Ich hätte es ja schnell selber getestet, aber dummerweise ist auch mein Test-System nicht mehr aktuell, ich habe es im letzten halben Jahr nicht einmal an geschaltet. (Es gibt hier leider aktuell einige Baustellen mit deutlich höherer Priorität, u.a. einen Wasserschaden.) Und in der Zeit hat sich im EPG-Fehlerbereinigung einiges getan, wie man so liest. Unter Umständen wird dieser Fehler inzwischen also schon bereinigt.

    Falls es um diesen Kanal geht:

    Nein, es scheint nur die mit "alt_" beginnenden Kanäle der ARD zu betreffen (Beispiel s.o.).

    Da die eingesetzte VDR-Version schon älter ist, ist das hier primär mal eine Verständnisfrage.
    Ich versuche zu verstehen, wie das hier auftreten kann und wie man es ggf. reproduzieren kann.
    Gitlog habe ich natürlich auch schon nach emergency exit, watchdog, shutdown, ... durchsucht und nichts gefunden, was in diese Richtung geht.


    Hier ist über die Feiertage etwas merkwürdiges passiert, der VDR ist augenscheinlich im Emergency exit hängen geblieben:

    Eine gewisse Restaktivität scheint also weiterhin bestanden zu haben.

    Dann ist das nochmal bei laufender Aufnahme passiert, da fehlten die frontend timed out Meldungen. Sonst aber identisch.
    Das Blöde da war, dass die Aufnahme weiter gelaufen ist, bis ich den VDR-Service neu gestartet habe.
    Der Fall ist natürlich ziemlich ungünstig, falls das im Urlaub passiert.

    Ursache war wohl beides mal ein lockeres Kabel an der einen DVB-Karte. (Wie es aussieht, hatte ich den F-Stecker wohl nie richtig angezogen :whistling:.)
    Es sind sind dann auch noch eine Hand voll emergency exits wegen video data stream broken aufgetreten, die haben aber alle, korrekt funktioniert.

    Generell funktionieren der Neustart aus dem Menü heraus, der Emergency exit und auch der Watchdog-Timer (wenn zB. EPG-Search im Menü hängt, was hier schon mal passiert ist) aber.

    Mein Produktiv-VDR ist schon eher antiquiert, was den Software-Stand angeht, aber die entsprechende Stelle hat sich nicht wirklich verändert:

    Code
    static void Watchdog(int signum)
    {
      // Something terrible must have happened that prevented the 'alarm()' from
      // being called in time, so let's get out of here:
      esyslog("PANIC: watchdog timer expired - exiting!");
      exit(1);
    }

    Da die Logmeldung kommt, nehme ich stark an, dass exit(1) ausgeführt wird.
    Aber was zum Geier, kann dann noch schief laufen???

    Das einzige, was bei beiden Fällen identisch war, war das das "recordingaction-Skript" ( -r Option) gerade gelaufen ist.
    Kann da der Fehler liegen?

    Ich schreibe das hier nur, da ich keinen entsprechenden Beitrag gefunden habe und die Kanäle in ein paar Tagen abgeschaltet werden.
    Das ist also nur zur Information, falls es sich noch jemand mal ansehen will:

    Mir ist aufgefallen, dass das EPG auf den mit "alt" markierten SD-Kanälen einige Merkwürdigkeiten zeigt:

    Bei Now/Next tritt meist folgendes auf:
    Statt der aktuellen Sendung wird immer die "sie sehen diesen Kanal noch in SD ..." Meldung angezeigt. (Das wird wohl sogar beabsichtigt sein ??)
    Die nächste Sendung ist dann entweder korrekt oder es wird etwas um kurz nach 12 mittags angezeigt.

    Im EPG-Menü ist immer als erstes dieser "sie sehen diesen Kanal noch in SD ..." Eintrag.
    Dann kommt meist schon die nächste Sendung. Die aktuelle Sendung fehlt aber.
    Dann gibt es, eher selten, auch den Fall, dass das EPG völlig durcheinander ist. Viel zu alte sind noch vorhanden oder es fehlt wo anders was ...

    Die Ursache wird wohl das "sie sehen diesen Kanal noch in SD ..." Event sein. Das erstreckt sich anscheinend von 12:00 bis 0:00, überlappt also mit den anderen, sinnvollen Einträgen.
    Ich denke, das ist so nicht wirklich Standard konform, zumindest ist es nicht logisch.

    Laut GIT und überfliegen der entsprechen Threads hier, gab es kürzlich genau in dem Bereich einige Änderungen im VDR.
    Eventuell ist das Thema also schon erledigt?
    Ich wollte das hier nur mal erwähnt haben, da die Kanäle ja in gut einer Woche abgeschaltet werden sollen und dann keine Möglichkeit zum Testen mehr besteht.
    Ich bin momentan leider anderweitig ziemlich beschäftigt und werde es wohl leider nicht rechtzeitig schaffen mein Testsystem zu aktualisieren und wieder an den Start zu bringen.

    Ja die MPO-Kabel scheinen mir hier auch ein ziemlicher overkill zu sein. Die haben meist 12 oder 24 Fasern verbaut (zumindest nach dem, was man so bei den üblichen Shops findet) und für die HDMI-Kabel braucht man nur 4 (zumindest für die Hybrid-Version). Das treibt den Preis dann zusätzlich unnötig in die Höhe.


    Hat denn hier überhaupt jemand so ein optisches HDMI-Kabel in der Hand gehalten???