Posts by HelmutB

    Macht es nicht Sinn so etwas bei vdr-developer zu posten zum übernehmen?

    Hallo Stefan,

    was meinst du mit "posten" ? Das femon-plugin habe ich auf https://projects.vdr-developer.org/git/ nicht gefunden.


    Das Repository vom Entwickler Rolf Ahrenberg ist hier: https://github.com/rofafor/vdr-plugin-femon

    Er ist ja als User "rofafor" gelegentlich auch hier im Forum unterwegs, vielleicht findet er den Patch brauchbar und übernimmt Ihn.


    Schönen Abend noch, Helmut

    Hier ein kleiner Patch für das femon-plugin, das bei DVB-T/T2/C die dazugehörige Kanalnummer neben der Frequenz anzeigt.

    Es geht den umgekehrten Weg wie w_scan und ermittelt aus Source, Frequenz und Bandbreite das Frequenzband und dann aus den daraus möglichen Basisfrequenzen die Nummer.

    Es sollte für alle Frequenzen und Regionen funktionieren, die w_scan (mit Stand 2016) verwendet.

    Dieser Patch war für femon-2.2.1 geschrieben, lässt sich aber auch auf femon-2.3.0 (femon-master) anwenden.


    femon-2.2.1_02_TC_ChannelNumbers.patch

    Hier in Österreich werden bei einigen Transponder in der NIT falsche Angaben zur PLP-Id geliefert (0 statt 1).

    Da VDR die Stream-Id anhand dieser Info in der Kanalparameter aktualisiert, kann derSender danach nicht mehr empfangen werden.


    Hier ein Patch mit dem VDR nur eine Meldung ausgibt, die aktuell verwendete Stream-Id aber unverändert lässt.

    Betrifft (natürlich) DVB-T2 - ich habe es im Titel ergänzt.

    Hier nun der aktualisierten Patch nach.

    Funktioniert bei mir nun auch mit Update der channels.conf (wird nach 10 Minuten geschrieben).


    wirbel - bei SETCMD() und dem ioctl FE_GET_PROPERTY genügt 0 als Parameter. Der Treiber überschreibt diesen wert immer mit dem Wert aus seinem dtv_property_cache.

    Auf die Kanalliste greife ich mit GetChannelsWrite() zu - so wie es z.B. auch in nit.c geschieht.


    Auch wird nur die Kopie im aktuellen Device aktualisiert da das erste Device, das den Lock auf einen Tranponder bekommt sofort die Parameter aktualisiert. Eigentlcih kann dann kein ein weiteres Device alte Werte haben (Ok - theoretisch schon, nämllich wenn das als erstes auf den Tranponder zugreifende Device den Lock erst nach einem zweiten bekommt - eher unwahrscheinlich aber auch kein wirkliches Problem).


    Ein zweiter Patch ist für den Kerneltreiber des si2168 damit die Paramerter dort auch wirklich aktualisiert werden.

    Den brauche ich für meinen August T230 Stick.

    Hallo wirbel,

    danke fürs drüberschauen.


    Einen verständlicheren Funktionsnamen kann man sicher wählen.

    Das mit der lokale Kopie habe ich auch vermutet, nur - wie bekommt man das dann in die aktuelle (interne?) Kanalliste?

    Ich habe es gestern Abend nicht mehr durchschaut, wahrscheinlich war es schon zu spät.


    Die Stelle des Aufrufs sollte schon passen - es gibt hier ja den FE_HAS_LOCK. Was ich hier vor dem Aufruf prüfe ist, ob ich vom tunerStatus 'tsTuned' durchgefallen bin oder ob er vorher schon 'tsLocked' war. Nur beim Übergang von Tuned zu Locked werden die Frontend-Parameter abgefragt. Also genau einmal entweder nach einem Kanalwechsel oder wenn ein verlorengengener Lock wieder hergestellt wurde.

    In meiner channels.conf sind bei den DVB-T2 Sendern die Transponderdaten z.B. für Modulation, Inversion und Coderate(FEC) immer noch so eingetragen wie sie von w_scan beim Sendersuchlauf als default verwendet wurden, also QPSK, INVERSION_AUTO oder FEC_AUTO.

    Wenn ich es richtig sehe, werden diese Werte von vdr nicht aktualisiert, weil sie in der NIT für DVB-T2 einfach nicht vorhanden sind.


    Meine Idee ist nun, sich diese fehlenden Angaben nach einem erfolgreichen LOCK direkt vom Frontend zu holen.


    Dazu habe ich in dvbdevice.c eine Funktion GetFrontend erstellt in der diese Daten mit FE_GET_PROPERTIES abgefragt werden und dann mit channel.SetTransponderData übernommen werden sollten.


    Dem ist aber leider nicht so. im Log sehe ich zwar die Aktualisierungsmeldung mit Alt-Neu, aber im Kanal-Editor oder vdr-femon sind die Werte unverändert, in der channels.conf sowieso.

    Meine C++ Kenntnisse sind eher bescheiden, und vielleicht bin ja auch ganz auf dem Holzweg.

    Hier der Code als Patch:

    Falls jemand dazu eine Idee oder bessere Lösung hat wäre ich dankbar!


    Helmut

    So, hier nun der Quellen für den Kerneltreiber.

    Es ist der Stand von Vorgestern, ich habe nur ein paar nicht verwendete Codeblöcke entfernt.

    Ich habe es auch noch einmal kurz getestet - das Umschalten von FTA zu verschlüsselt funktioniert eigentlich zuverlässig, aber genau so zuverlässig kommt es beim Zurückschalten im Control-Interface (ca) zu einem USB Timeout - immer beim Versuch von VDR die entsprechende CA_PMT Nachricht zu senden.

    Der Treiber ist noch sehr unfertig und hat sicher noch mehr Fehler als den oben beschriebenen.

    Er loggt auch relativ viel mit - das kann man derzeit nicht global ausschalten, nur an den entsprechenden Stelen auskommentieren.

    Mir ist eigentlich auch nicht ganz klar wo und wie ich die verschieden „locks“ und „waits“ richtig verwende. Vielleicht liegt es auch daran.

    Auf jeden Fall war aber selbst überrasche als ich plötzlich ein klares Bild bekommen habe.


    Vielleicht hat dazu irgendjemand eine Idee oder Anregungen.

    LG

    Files

    Nach den Anfängen mit Perl-Scripten habe ich Sommer begonnen daraus einem Kernel Treiber zu basteln.

    Mit Hilfe des vdr-plugin-ddci2 ist es mit heute tatsächlich gelungen die HD-Programme des ORF über DVB-T2 auf meinem alten Notebook unverschlüsselt wiederzugeben.

    Der Treiber ist noch ziemlich instabil, z.B. beim Senderwechsel kommen unkorrigierbare USB-timeouts beim ca-device, aber grundsätzlich scheint es zu funktionieren.


    Ich habe jetzt nur ein paar screenshots, den Code werde ich morgen oder übermorgen hochladen.


    Die verwendete Hardware:

    Sony Vaio-SZ 1,6 Ghz, August T230 DVB-T2 USB-Stick mit Miniantenne, Wintv-USB-CI Adapter und ein SimpliTV CA-Modul.


    Falls jemand den USB-Ci Adapter nicht kennt - hier ein alter Artikel aus 2007

    https://www.pcwelt.de/news/Pay…-von-Hauppauge-80727.html

    oder hier (PDF)

    http://terratec.ultron.info/Re…_USB_TechnicalData_DE.pdf


    Vielleicht wäre dieses Thema nun in VDR-HArdware/Allgemein besser aufgehoben.

    Hallo Karl,


    die beiden sripte WintvCI_load_firmware.pl und WintvCI.pl kennen nur die USB Product:Vendor IDs für die Hauppauge WIntv-ci mit 2040:1100 und für Terratec Cinergy CI mit 1BOD;5F0F.
    Wenn keine der beiden gefunden wird beenden sich die Programme.

    Wenn sich der Mascom Programmer mit anderer USB ID meldet (lsusb) ersetze probeweise die Werte.von Hauppauge mit deinen Werten (kommt in jedem script jeweisl nur einmal vor).


    LG
    Helmut

    An alle die diesen USB-CI Adapter noch irgendwo herumliegen haben:


    Ich habe im Jänner ein gebrauchtes Gerät in die Hände bekommen und mich gefragt ob es auch unter Linux verwendbar ist.
    Leider nicht - wie bald festgestellt habe.
    Es hat mich aber doch interessiert wie das Ding funktioniert da es ja nicht nur unter Windows sondern auch mit EyeTV unter OSX laufen soll
    .
    Nach den Informationen und USB-Logs von hier "http://www.bsc-bvba.be/linux/dvb/", den guten Programmbeispielen von Cypress für den USB-Controller von hier "http://www.cypress.com/products/ez-usb-fx2lp" und der etwas genaueren Betrachtung der vefügbaren Windows-Treiber von Hauppauge und Terratec habe doch einiges herausgefunden und nun ein Perl-Script erstellt, das mit einen CA-Modul kommunizieren kann und am Ende das CAM-Menü darstellt.


    Wer es ausprobieren möchte, hier eine kurze Anleitung:
    ( alles läuft bei mir in einem Terminal-Fenster, vermutlich nur als root. Ich benutze Gentoo, 32-bit,
    ich habe noch kurz ein paar Kommentare in die Scripts eingefügt - leider mit einigen Schreibfehlern wie ich gerade sehe )


    1) WintvCI.tar.gz in beliebiges Verzeichis entpacken
    2) im Unterordner "firmware" das Perl-script "WintvCI_extract_firmware.pl" ausführen
    es werden insgesamt 9 firmware-files erstellt - 5 aus wintvci, 4 aus USB2CI - jeweils eine EZ-USB Code-Banker firmware
    und 3 bzw. 4 CI-firmwares für die jeweilige Hardware Revisionen
    3) In das Hauptverzeichnis "WintvCI" wechseln
    3) Wintv-CI an den USB-port anschließen und CA-Module einstecken
    4) das Script "WintvCI_load_firmware.pl" aus führen - die passende Firmware wird nun geladen
    5) nun dass Hauptprogramm "WintvCI.pl" starten


    Es laufen nun ca. 10 Sekunden die Ausgaben der REQUESTS und REPLYS zwischen CAM und Hostprogramm,
    danach sollte das CAM-Hauptmenü (MMI) aufgelistet sein.
    Nun kann mit den Tasten 0-9 ausgwählt werden,"0" bzw. alle anderen Eingaben gehen wieder eine Ebene höher bzw. beenden schliesslich das Programm.Es kann auch jederzeit mit "Ctrl-C" abgebrochen werden,
    Ich habe es mit 3 verschiedenen CAMs getestet und es lief soweit korrekt, ich habe nur einmal eine Sprache eingestellt die ich dann nicht mehr lesen konnte - also hier vielleicht nichts ändern und im Zweifelsfall mit "0" aussteigen.


    Für das tatschlche Dekodieren fehlt dem Script natürlich der echten TS-Stream der - soweit ich es verstehe - über die beiden verfügbaren Isochronen USB-Interface Endpunkte 3 und 4 geschrieben bzw. gelesen wird, sowie die entsprechenden CA_PMT Nachrichten an das CAM.
    Dazu fehlt mir aber im Augenblick das entsprechende Know-How.


    Das ganze sollte natürlich auch in einen Kenel Treiber verwandelt werden, die Funktionen der Firmware wären alle in den Perl-Scripten enthalten.
    Aber auch hier fehlt mir noch der Durchblick wie ich es richtig angehen soll.
    Vielleicht hat hier im Forum ja jemand Anregungen oder besseres Fachwissen.


    Schöne Grüße
    Helmut

    Files

    • WintvCI.tar.gz

      (100.41 kB, downloaded 389 times, last: )