[Patch] Aktualisierung der Programme bei fehlerhafter NIT (DVB-T) und nun auch bei DVB-T2 (nit.c)

  • Bei passendem Wetter kann ich noch DVB-T Kanäle aus der Slovakei empfangen. Dabei ist mir aufgefallen, dass die Transponderinfo (Sendername oder neue Sender) von VDR nie aktualisiert wird. Der Grund dafür liegt in falschen Frequenzangaben im DeliverySystemDescriptor. Und da die tatsächliche Frequenz des aktuellen Senders nie aufscheint wird sdtFilter->Trigger(Source) auch nie ausgeführt.

    Der keine Patch behebt das Problem und triggert nun sdtFilter für den aktuellen Sender zumindest ein mal.

    Er behandelt derzeit nur DVB-T und DVB-T2 (das war bisher noch gar nicht implementiert), kann aber auch für Kabel und Sat erweitert werden- ich habe es nur noch nicht getestet.


    Helmut

  • Hier eine neue Version des SDT-Trigger Patch. Damit wird der Trigger immer nach Verarbeitung der letzten NIT-Section durchgeführt (das ist normalerweise dann ein mal pro Kanalwechsel)


    Nun habe ich nach dem Durchlesen der verschiedenen ETSI DVB Dokumente auch ein paar Ideen für Ergänzungen bei der Behandlung der DeliverySystemDescriptorTags. Ich habe sie zu besseren Lesbarkeit in einzelne Patches aufgeteilt.


    DVB-S/S2 - vdr-2.4.0-nit_2-dvb-s2-v1.patch:

    Die Parameter für beide Systeme werden grundsätzlich im SatelliteDeliverySystemDescriptor beschrieben. Für besondere Fälle wie z.B. Multistream kann als Ergänzung der S2SatelliteDeliverySystemDescriptor nötig sein. Da dieser -falls vorhanden - unmittelbar dem SatelliteDeliverySystemDescriptor folgt werden nun beide zugleich eingelesen. Im Fall von Multistream werden außerdem Kanäle mit anderer StreamId nicht modifiert


    DVB-T/T2 - vdr-2.4.0-nit_3-dvb-t2-v4.patch:
    Im Unterschied zu DVB-S2 sind die Parameter für DVB-T2 keine Ergänzung zu DVB-T sondern eigenständig, T und T2 Descriptoren kommen auch nicht gleichzeitig in der NIT vor. Die wenigen Angaben zusammen mit der PLP-Id genügen der T2-Hardware/Firmware um die übrigen Parameter aus dem Signal auszulesen und einzustellen.

    Auch hier werden nun bei Multi-PLP Kanäle mit anderer StreamId nicht modifiziert. Zusätzlich prüfe ich bei Single-PLP die Sinnhaftigkeit der StreamId (das brauche ich für manche ORF Transponder).


    Bei meine Tests habe ich mit diesen Patches keine Auffälligkeiten bemerkt, Was ich aber nicht testen kann ist Multistream (gibt es z.B. auf Eutelsat 5W) oder DVB-T2 Multi-PLP (haben wir in AT nicht).

    Hier sollten - wenn ich es nicht ganz falsch verstanden habe - nun für neue StreamIds oder PLPs auch entsprechende Kanäle in der Channels.conf auftauchen.

    Vielleicht hat ja jemand Interesse und Zeit das zu testen (in DE wird doch Multi-PLP bei DVB-T2 verwendet ?).

    Dazu hätteich noch einen kleinen Patch der das nitdbg aktiviert und die Ausgaben ins syslog schreibt.


    Helmut

  • Ein paar Anmerkungen..


    DVB-S/S2

    >> Da dieser -falls vorhanden - unmittelbar dem SatelliteDeliverySystemDescriptor folgt werden nun beide zugleich eingelesen

    Echt? Das wäre ungewöhnlich. Warum sollte das so sein?

    Es gibt meiner Meinung keinerlei 'Reihenfolge' bei den Descriptoren. Es bedeutet nur, wenn es den S2 descriptor gibt, dann sollte (aber muss nicht) es den anderen auch geben, ob der nun vorher nachher oder zeitweise oder in einem anderen NIT Paket gesendet wird ist etwas anderes.


    DVB-T/T2

    >> T und T2 Descriptoren kommen auch nicht gleichzeitig in der NIT vor.

    Die NIT bezieht sich auf ein Netzwerk. Gibt es in dem Netzwerk T und T2 gemeinsam, werden die natürlich beide gesendet.

    Oft sind nur aus historischen Gründen T und T2 unterschiedliche Netzwerke.

  • Es bedeutet nur, wenn es den S2 descriptor gibt, dann sollte (aber muss nicht) es den anderen auch geben,


    Eigentlich genau umgekehrt - das wirst du aber auch so gemeint haben: den SatelliteDeliverySystemDescriptor gibt es immer (ob für DVB-S oder DVB-S2 sagt das modulation_system Bit), den S2-descriptor nur falls erforderlich und als Ergänzung zu Ersterem.
    Mit dem S2-descriptor alleine fängt man gar nichts an, da man Ihn ja keinem Transponder zuordnen kann. Und die StreamId daraus auf alle Kanäle mit gleicher Nid und Tid zu übertragen wie es jetzt in VDR gemacht wird, stört vermutlich nur deshalb die meisten nicht weil es auf S19.2E und S13.0E keine Transponder mit DVB-S2 Multistream gibt: DVB-S2 Multistream

    Die S2-descriptoren die ich auf S19.2E gesehen habe folgen unmittelbar einem SYSTEM_2-satellite-descriptor (auch in der gleichen NIT-section). Das hat auch auch eine gewisse Logik, da die beiden ja zusammengehören.


    Hier ein Auszug aus den DVB-SI Implementation Guidelines dazu:


    Gibt es in dem Netzwerk T und T2 gemeinsam, werden die natürlich beide gesendet.


    Da hast du vermutlich recht. Aber die Transponder Parameter gelten entweder für DVB-T oder für DVB-T2, und Parameter des anderen Systems aus dem channels.conf Eintrag zu übernehmen bringt keinen Mehrwert.

    Deshalb habe ich diese Code-Zeilen entfernt.


    Helmut

  • >>Eigentlich genau umgekehrt - das wirst du aber auch so gemeint haben

    Wir schreiben hier beide das gleiche ähnliches.Wobei ich niemals schrieb, es müsse den satellite_delivery_descriptor geben.

    Dieser descriptor ist - wie die komplette NIT selbst - komplett optional und kann ersatzlos entfallen oder kann alternativ in NITs auf anderen PIDs gesendet werden, die VDR weder kennt noch liest. VDR kennt z.B. keine Kabel-TV 'Setup-PIDs'.


    Die S2-descriptoren die ich auf S19.2E gesehen habe

    Ja eben. Du hast hier einige wenige funktionierende Beispiele gesehen. Aber die Realität sieht hier anders aus.

    Die wenigsten Betreiber von Satelliten implementieren die Empfehlungen der Specs korrekt.


    An S2 satellite delivery system descriptor may only be present

    'may' ist als eine Empfehlung zu verstehen, so wie 'should' (sollte). Diese Aussage meint etwas anderes als 'An S2 satellite delivery system descriptor is only present'.

    Die Verwendung solcher Schlüsselworte ist jeweils am Beginn des Dokumentes erklärt - Specs verwenden eine Art von 'Beamten-Sprache'

  • Zum SDT-Trigger.

    Es ist mir jetzt erst aufgefallen das im "vdr-2-4-0-nit-1-trigger-sdt-v2-patch" 3 Zeilen stehen die erstens gar nicht dazu gehören und zweitens - viel schlimmer - auch noch Unsinn sind. Bei den 3 Frequency-Loops muß natürlich wie gehabt immer bei Index 0 begonnen werden. Im Anhang jetzt die bereinigte Version 3.


    Mein DVB-T2 Patch ist ohne Berücksichtigung der Transponder für die der T2DeliverySsystemDescriptor gilt auch keine Verbesserung zum Ist-Stand. Ich werde noch versuchen ihn zu vervollständigen.


    wirbel : Ich habe das Internet durchstöbert und auch einiges über S2-Multistream gefunden (z.B. bei Enigma2 und dddvb auf github), aber nichts darüber wie ein S2-Descriptor richtg behandelt wird.
    Und so wie ich die Spezifkation verstehe: es ist richtig - ein S2-Descriptor muß nicht vorhanden sein und er soll sogar nicht vorhanden sein wenn er nicht wirklich erforderlich ist (das wäre: kein Multistream und scrambling_sequence_index=0).

    Aber wenn er doch benötigt wird, dann nur zusätzlich zu einem SatelliteDeliverySystemDescriptor.

    Wie dem auch sei, vielleicht werde ich noch fündig.


    Helmut

  • Mit dem Patch vdr-2.4.0-nit_3-dvb-t2-v4.patch bekomme ich im Log


    T2 (tp 514 Mhz): got invalid SISO stream id: 1

    T2 (tp 690 Mhz): got invalid SISO stream id: 1


    Mit aktiviertem DebugNit wird das ausgegeben:

    Senden die da wirklich etwas Falsches, oder stimmt mit dem Patch etwas noch nicht?


    Was ich auch etwas irritierend finde ist, dass da so viele völlig identische Zeilen daherkommen.

    In irgend einer Eigenschaft sollten die sich doch unterscheiden, oder?


    Klaus

  • Der Patch ist leider fehlerhaft (der SisoMiso-Test des aktuell getunten Senders).

    Ich hatte ihn auch schon korrigiert, aber aus irgendeinem Grund vergessen es dann auch zu posten.


    Ich denke, das damit die Fehlermeldungen nicht mehr auftauchen werden, denn als besonderes "Feature" eine falsche Stream-ID auzusenden ist hoffentlich nur dem ORF eingefallen.


    Hier der Patch p1 zur V4 und der V5-patch dann als Ganzes.


    Helmut


    Edit:

    Ich habe mich erst wieder in meinen eigenen Patch einlesen müssen um mich zu erinnern was ich mir damals gedacht habe.


    Aus den o.a..Logs scheint es so zu sein:

    Die getunten Sender 514 Mhz und 690 Mhz sind Miso (?) Streams mit der PLP-Id 0.

    In der NIT werden auf jedem Transponder mehrere T2DeliverySystemDescriptoren für Siso-Streams mit der PLP-Id 1 bekanntgegeben.


    Jede dieser Zeilen

    T2 (tp 514 Mhz, SISO) stream id = 0

    T2 (tp 514 Mhz, SISO) stream id = 0

    ...

    sollten mit dem V5 patch dann so aussehen

    T2 (tp 514 Mhz, SISO) stream id = 1

    T2 (tp 514 Mhz, SISO) stream id = 1

    ...

    und stehen für einzelne Hbbtv Sender die über einen ISL (internet Service Link) zu erreichen sind.


    Und wenn der V5 Patch richtig funktioniert, müsste es dann dafür auch neue Einträge in der channels.conf geben (was auch immer man dann damit anfängt).

    Es könnten klarerweise aber auch ganz "normale" Sender mit anderer PLP-Id hinzugefügt werden.

  • Ich bekomme immer noch


    T2 (tp 514 Mhz): got invalid SISO stream id: 1 (adjusted to 0)


    Das "(adjusted to 0)" habe ich noch hinzugefügt:


    dsyslog("T2 (tp %d Mhz): got invalid SISO stream id: %d (adjusted to %d)\n", Transponder(), dtp.StreamId(), dtpt.StreamId());


    Und die Debug-Ausgabe sieht immer noch so aus:

    Irgend etwas passt da wohl noch nicht zusammen.


    Ohne das "adjust faulty values" sieht die Debug-Ausgabe übrigens so aus:

    Klaus

  • Weshalb werkelt der Patch mit SISO und MISO?

  • Ok, ich fürchte ich habe das mit Siso/Miso und Single-/Multi-PLP nicht richtig verstanden und der Patch funktioniert daher nicht so wie ich es mir vorgestellt habe.

    Ich empfange leider keine Transponder mit mehreren PLP-Id's, daher ist es mir auch nie aufgefallen.


    Interessant wäre trotzdem die vollständige Information des T2DeliverySystemDescriptors - also auch mit der dtp.T2SystemId.

    Es sollte doch einen Unteschied in den verschiedenen T2DeliverySystemDescriptoren geben (außer mancmal in der PLP-Id).


    Vielleicht kannst du - wenn du einmal Zeit hast - das in der Ausgabe vondbgnit(" T2 (tp %d Mhz,%s) stream id = %d\n", Transponder(), dtp.SisoMiso() ? "MISO" : "SISO", dtp.StreamId());

    eränzen und posten.


    Helmut


    Edit:

    Ich werde die Debugausgabe bei mir auch auch ergänzen, vielleicht liege ich ja komplett falsch und die PLP-Id 0 des ORF zeigt tatsächlich auf einen zusätzlichen Stream oder ein Service.

  • Ich blicke bei diesem ganzen Zeug leider auch nicht wirklich durch.

    Wenn du mir Patches für Versuche schickst, führe ich diese gerne durch (mit DVB-T2 aus München).


    Klaus

  • >> Ich blicke bei diesem ganzen Zeug leider auch nicht wirklich durch.


    SISO -> (Single Input Single Output) ein Transmitter sendet, der Empfänger hat eine Antenne. Klassisches Szenario.


    SIMO -> (Single Input Multiple output) ein Transmitter sendet, der Empfänger hat mehr als eine Antenne. Gibt es auch bei DVB-T, nannte sich damals in den Neunzigern bei UKW auch 'diversity' (Nein, nicht der neue Begriff für das 'dritte' Geschlecht). Da der Transmitter wie bei SISO unverändert sendet, sind Änderungen nur auf Empfängerseite möglich (Umschalten zwischen zwei Antennen nach Signalpegel - oder gar zwei komplette Empfänger, oder beide Signale auf der HF Strecke kombiniert, ...). Meist für mobile Geräte.


    MISO -< (nein, keine japanische Soße, sondern Multiple Input Single Output), mehrere sehr naheliegende Sendestationen senden 'ähnliche' Signale mit gleichem Informationsgehalt, und zwar so angepasst, dass sich am Empfänger mit nur einer Antenne die Signale NICHT auslöschen, d.h es gibt zwar eine feste mathematische Funktion/Korrelation zwischen beiden gesendeten Signalen, aber die HF-Signale sind mit Absicht *unterschiedlich*. Manchmal plus Zeitversatz. Doppelte Anzahl an Sendestationen plus Antennen, hohe Betriebskosten/Aufwand mit geringen Vorteilen in der Praxis. k.A., ob das hier in D für DVB-T2 eingesetzt wird.


    MIMO <- (na was wohl..) MISO plus mehrere Antennen oder gar mehrere Empfänger.


    Die Begriffe werden allerdings auch gleichlautend in der digitalen Signaltheorie verwendet, z.B. digitale Filter für I/Q Signale.

    ----------------


    was SISO/MISO mit den PLPs zu tun haben soll, das war meine Frage weiter oben.


    PLPs definieren eigentlich ein Time-Interleaving mit definierten Zeitrahmen auf einer Frequenz mit unterschiedlichen Sendeparametern (FEC,QAM), wobei wie bei einem virtuellen LAN jede dieser PLPs unterschiedliche Daten führen kann (aber nicht muss). Es gibt allerdings normalerwesie eine common PLP mit SI Tables. Ähnlich zur Idee mit der HIERARCHY bei DVB-T. Im Grunde lässt sich das auch mit MIMO kombinieren - muss man aber nicht.

  • wirbel Danke - jetzt hab ich es auch (fast) verstanden :)

    was SISO/MISO mit den PLPs zu tun haben soll,...

    Nichts - deshalb hier die Variante V6 ohne die Siso/Miso Abhängigkeiten und etwas erweiterter Debug Ausgabe.


    kls - mir ist dabei wieder eingefallen, dass das T2-ExtendedDataFlag ja nie initialisiert wird und nur einen Zufallswert enthält.

    Ich habe dir dazu im schon einmal einen Patch gemailt, sende Ihn aber hier auch noch mit (ist aber nur für den Original vdr-2.4.0).


    Helmut

    kls - hat sich überschnitten -ich habe deine heutige Email für dem ExtendedDataFlag erst jetzt gelesen und werde es morgen testen.

  • Zu dem Problem mit T2-ExtendedDataFlag habe ich dir heute eine Antwort auf deine Mail geschrieben.

    Sorry, dass das so lange liegengeblieben ist...


    Den vdr-2.4.0-nit_3-dvb-t2-v6.patch schau ich mir morgen an.


    Klaus

  • Mit vdr-2.4.0-nit_3-dvb-t2-v6.patch erhalte ich nun solche Debug-Ausgaben:

    Ist das richtig, dass die Zeilen alle gleich sind (bis auf den Unterschied bei zweien in der PLP-Id)?

    Müsste es nicht noch irgend einen Unterschied geben?


    Klaus

  • Ja, ich denke auch das es nur jeweils einen T2DeliverSystemDescriptor für die PLPs 0 und 1 geben sollte.

    Dein channels.conf Eintrag für dem Transponder auf 514 MHz ist nicht ganz vollständig - die T2SystemId ist 0, sollte aber 7766 sein. Das hat aber mit den PLPs nichts zu tun.


    Bei mir sieht die Ausgabe z.B. so aus (es ist immer nur ein T2DeliverSystemDescriptor in der NIT)

    Code
    1. NIT: 40 0 0 0 T 13101 498 'DVB-T2 MUX A WNB'
    2. Frequencies[1] = 722000000
    3. Frequencies[2] = 498000000
    4. ...
    5. T2 (tp 498 Mhz,SISO,T2:8232,PLP-Id:1) td: SISO,T2:8232 PLP-Id:1 (xdflag:1)

    Kann man auf 514Mhz mit PLP0 eigentlich ein Programm empfangen ? Und tut sich irgendetwas wenn du den EPG-scan startest (es sollte ja einen neuen Channels Eintrag für die PLP1 geben) oder im Kanaleditor die PLP manuell auf 1 setzt?


    Helmut

  • Vielleicht noch eine kleine Erklärung: Ich hatte immer dieses Bild vor Augen und dachte, dass man jede PLP eigentlich als eigenen "Transponder" ansehen kann. Und dass es natürlich schön wäre wenn VDR diese neuen "Transponder" selbstständig hinzufügt und nicht auf externe Scan-Programme angewiesen ist.

    Aber wie es aussieht wird sowohl in AT als auch in DE auf den zusätzlichen PLPs für den VDR (derzeit) nichts Brauchbares übertragen und ein neuer Channels-Eintrag hat damit keine praktischen Nutzen.

    Ich hätte daher auch kein Problem, wenn dieser Patch nicht im VDR landet,

    Aber vielleicht gibt es ja in anderen Regionen VDR-Nutzer die mehr Erfolg damit haben.


    Helmut

  • Ich schlage vor wir vertagen dieses Thema bis zur Version 2.5.1, sonst verzögert sich die 2.4.1 nur unnötig.


    Klaus

  • Kein Problem.

    Das hätte ich noch zur PLP1 von Media Broadcast gefunden: /www.rundfunkforum.de

    ----
    Beitrag von Terranus » Mi 9. Mai 2018, 17:53
    Die PLP 1 im ZDF Mux, also der Teil, den Media Broadcast für sich selbst nutzt, und nicht das ZDF, ist nur 500kbit/s breit. Darüber werden wirklich nur die Internet HbbTV Adressen signalisiert, sonst nix. Und es wird das Infostandbild gesendet (was fast 1/3 der gesamten Kapazität einnimmt).

    ----
    Helmut