Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

dvbapiNET - mdvbapi Nachfolge

t5b6_de

Hacker
Registriert
28. November 2011
Beiträge
362
Reaktionspunkte
219
Punkte
103
Hallo zusammen,

in der letzten Zeit haben sich immer wieder Beiträge gezeigt die aufzeigen, dass mdvbapi wohl noch einige Schwächen und ggf. Bugs hat.
Da auch Schwa sich darauf nicht mehr gemeldet hast und die Entwicklung offiziell eingestellt hat, habe ich selbst begonnen ein Plugin zu entwickeln.

Die Quellcodes sind auf Github zu finden:
Ich habe selbst lokal noch ein ausführliches Git-Repository, bei Github lade ich nur unregelmäßig hoch.
Dadurch kann es vorkommen, dass die DLL hier, und Github abweichend voneinander sind.

In diesem ersten Post hänge ich nun immer die aktuelle Version + Changelog an.

in der Locales.zip sind die Sprachdateien enthalten die ich verwende. Es handelt sich hier um Quellcode-Dateien - die werden vom Plugin nicht geladen!
Wenn jemand etwas übersetzen möchte, kann er es gern machen, und die Dateien hier zum drüberlesen im Forum anhängen, wenn das soweit alles OK ist, füge ich die im Projekt für das nächste Release ein.

Voraussetzungen:
Für das Plugin selbst und reiner Verwendung des DVB-CISSA (verwendet von z.B. BISS2 Cardsystem) Algorithmus wird nur das .NET Framework in der Version von mind. 4.0 benötigt.
Die meisten Anbieter nutzen noch DVB-CSA, da wird für die ffdecsa.dll zusätzlich die aktuelle VC++ Redistributable 2019 (v142) in x86 benötigt, einfach googeln.

DVB-CISSA, AES und DES funktionieren ausschließlich im DVBViewer, DVBViewer Media Server und Recording-Service!

via MDAPI(+) funktioniert nur plain DVB-CSA.
Bezüglich der Verwendung mit MDAPI oder MDAPI+ bitte die entsprechenden Anleitungen für die Verwendete Software beachten.
Konfiguration dieses Plugins ist identisch wie bei DVBViewer.

Es gibt 2 Möglichkeiten zur Installation des Plugins im DVBViewer, oder für MDAPI(+) kompatible Programme.

Die ffdecsa.dll kommt in das Programmverzeichnis vom DVBViewer selbst, also der Ordner in dem sich auch die dvbviewer.exe befindet.
Hier sollte die korrekte Version ausgewählt werden, CPUs mit AVX-Register sollten mit der AVX-Version betrieben werden, da diese die beste Performance bieten. Ältere CPUs sollten SSE aber immer noch unterstützen. Wenn es eine noch ältere CPU ohne SSE2 ist, dann bleibt nur noch die standardversion ohne Optimierung übrig. Ihr findet diese im Ordner "INT". Wenn die CPU z.B. AVX oder SSE nicht unterstützt, dann Crasht der DVBViewer oder der Recording Service weg.
Leider kann ich den Fehler nicht abfangen, da das nativer Code ist, und der stürzt dann gnadenlos ab. Wenn ihr IPTV verwendet oder das Signal via SAT>IP (oder DVB>IP, wie auch immer) dann solltet ihr die ffdecsa aus dem mit "net" gekennzeichnetem Ordner nehmen. Die ist darauf optimiert maximal 7 Packets am Stück zu verarbeiten, das ist etwas effizienter.
Die dvbapiNET.ini Konfigurationsdatei kommt in einen neuen Ordner unterhalb Programdata-Verzeichnis. Ihr könnt es im Windows Explorer durch Eingabe %programdata%
dort erstellt ihr den Ordner dvbapiNET, und packt dann dort die dvbapiNET.ini rein. Falls das Logging aktiviert ist, wird dort auch die Logdatei geschrieben.

Dies ist die einfachste Möglichkeit zur Installation, erlaubt einen einzigen Sender gleichzeitig zu schauen.
Hier kommt die dvbapiNET.dll einfach in das Unterverzeichnis Plugins.
Mit dem DVBViewer Media Server können mehrere Kanäle gleichzeitig entschlüsselt werden.
Hier wird pro Sender ein Plugin benötigt.
Die Plugins für den RecordingService/DVBViewer Media Server kommen in Plugins\PluginsX
Wobeidas X für 1 bis max. 32 steht. begonnen bei Plugins1
Dort nur jeweils einmal die dvbapiNET.dll einkopieren.

Mit einem kleinen Trick ist es möglich mehr als einen Sender pro Tuner zu entschlüsseln.
Kenner werden es bereits wissen, in der Hardware.xml vom Service gibt es die Möglichkeit die Option <MultiPID>1</MultiPID> hinzuzufügen.
Das Verhindert, dass der Service ein weiteres Device öffnet wenn der Sender auf dem Selben Transponder liegt.

Meine Empfehlung bei Verwendung des Service: ALLES über den Service laufen, Timer, Streaming, Etc. Idealerweise sind DVBViewer und Service auf verschiedenen Rechnern.
Ich habe zwar Vorkehrungen getroffen, weiß aber nicht wie gut diese funktionieren, wenn im DVBViewer Sender aufgenommen werden verwendet dieser seinerseits auch die PluginsX-Ordner.
Auf jeden Fall kommt es dann zu doppelten Anfragen in Oscam, weil der Service als auch der DVBViewer den Sender Tunen.
Aufgrund der Vielzahl von verschiednenen Programmen gehe ich nicht weiter auf die Plugin-Installation ein.
Es wird bei MDAPI(+) nur die dvbapiNET.dll benötigt, NICHT die ffdecsa.
Die Entschlüsselung wird von der Host-Anwendung vorgenommen, mein Plugin dient nur als "dumme" Schnittstelle zwischen OScam DVBAPI und der Host-Anwendung.

Das Schränkt auch die Verwendung von anderen Verschlüsselungsalgorithmen ein. Es wird nur DVBCSA unterstützt! Bei Verwendung mehrerer Instanzen für PIP oder Aufnahmen muss darauf geachtet werden, dass alle Instanzen im Speicher verbleiben und nicht entladen werden (einige TV-Programme bieten diese Option in den Plugin-Einstellungen)

Oscam funktioniert ab R11520 (Ab da wird erst der nötige DemuxID Descriptor ausgewertet)
Zwischenzeitlich wurde viel an dem DVBAPI-Protokoll herumgeschraubt.
Daher habe ich eine Option erstellt mit der das alte Protokoll v2 erzwungen werden kann, mehr dazu in den Kommentaren der Konfigrationsdatei.
Mit der Version vom 30.07.2020 habe ich den Support für die neue Protokollversion (v3) vollständig entfernt da sich immer wieder user melden die Verbindungsprobleme hatten.
Das Oscam-Team arbeitet zudem auch nicht am Protokoll weiter, weshalb ich es erst wieder einbauen werde sobald eine stabile Verbindung möglich ist.

Eine Alternative Installation ist über ein Setup möglich, hier nochmals vielen Dank an @clemenss!
Der Thread hierzu kann dort gefunden werden: [SUCHE] OScam Installation mit DVBviewer

INI:
[dvbapi]
# Hostname oder IP-Adresse unter der OSCAM DVBAPI erreichbar ist:
server=127.0.0.1

# Port am OSCAM-Server:
port=633

# Adapter-Offset, Tweak um mehrere Verbidnungen mit oscam zu ermöglichen.
# Wichtig ist, dass der Offset immer größer ist als die schon in anderen Apps konfigurierten gleichzeitigen Instanzen!
# Grundlegend empfehlenswert ist aber die Verwendung von meheren Oscam-Instanzen.
offset=0

[log]
# 65535 sollte alles loggen, läuft über Flags.
# Bedeutungen:
# Fehler = 1,
# Warnungen = 2,
# Info = 4,
# EcmInfo = 8,
# DvbApi = 16,
# Dvbviewer Plugin Event = 32
# InterCom Verbindung Allgemein = 128,
# InterCom Client (Verbindung Seite "Demuxer") = 256
# InterCom Server (Verbindung Seite "DVBApi-Client") = 512
# Kontrollwörter Loggen = 1024
# Hex-Dump aktivieren (nur zusammen mit anderen, nicht alleinig funktional) = 32768
debug=0
# ausführliche hex-dump mit ascii aktivieren, ansonsten einzeiliger dump (ideal für copy paste)
prettyhex=1

[debug]
# zu debug zwecke um genau zu bestimmen was das plugin
# an Daten bekommt, kann mit nachfolgendem Wert (1) ein Streamdump erstellt werden.
# Der Dump wird in diesem Ordner erstellt. Es sollte für ausreichend Platz
# gesorgt werden. Im 184 Byte MDAPI Modus kann hiermit der rekonstruierte Stream überprüft werden.
streamdump=0

Du musst Regestriert sein, um das angehängte Bild zusehen.

Angehängt am Ende ist immer nur die aktuelle Version.
Hier die einzelnen Changelogs:
Try-Fix/Misc:
  • Deadlocks bei AltDVB behoben, statt Sendmessage async Postmessage verwendet..
  • Diverse Interne strukturuelle Anpassungen zwecks einfacherer Verwendung in anderen Projekten.
  • Add: Adaption Field Parser für eigene Projekte.
Misc/Fix:
  • Der Einfachheit halber Unterstützung für dvbapi Protkoll v3 entfernt.
Misc:
  • Logging im Fehlerfall weiter optimiert
  • Schnittstelle für z.B. Konsolenausgabe einer Debug-Anwendung eingefügt.
  • Texte angepasst, Plugin-Version als auch Debuglevel werden nun zur Initialisierung einmal geloggt
Fix:
  • MDAPI+: Hier wurde der 188 Byte-Modus zu früh aktiviert, was dazu führte, dass die falschen PIDs bei MDAPI+ angefordert wurden.
Reines Pflege-Update, keine neuen Features oder Verbesserungen am Plugin selbst.
Misc:
  • Exporte angepasst, Internas des Plugins sind nun internal, nicht mehr public.
  • ffdecsa DLLs ausgetauscht, auch hier unnötige exports entfernt.
  • zusätzliche Funktionen für Nutzung in anderen .NET Anwendungen eingepflegt, ggf. für spätere eigene Tools wertvoll.
Fix:
  • Fehlerhafte INT-Dll von ffdecsa ausgetauscht, funktioniert jetzt auch auf CPUs ohne SSE und AVX
Fix:
  • MDAPI+: Hostversion wurde nicht richtig gelesen, damit wurde der 188 Byte Modus nicht eingeschaltet wenn echtes MDAPI+ genutzt wird.
Misc:
  • Performance-Optimierung bei aktiviertem Logging. Bei Langsamen HDDs konnte es zu Thread-Blockierungen kommen. Das ist behoben.
    Es dürfte von der Performance jetzt keinen Unterschied mehr machen, ob Logging aktiviert oder nicht.
  • Kleinere Anpassungen an den Log-Texten
Add:
  • Multi-Language-Support: Bei PCs mit deutscher Sprache sind die Log-Ausgaben in Deutsch, ansonsten Englisch
Fix:
  • DES Schlüssel konnte aufgrund eines Denkfehlers nicht gesetzt werden. DES war nicht funktionsfähig.
    Falls jemand testen kann, bitte um Rückmeldung.
Fix:
  • Bei Fehlender Port-Option wurde keine Primär-Instanz gestartet, dadurch keine Verbindung zu Oscam und der Instanzen untnereinander
Add:
  • Tweak um mehrere Clients an Oscam anzubinden. Hierzu habe ich eine neue Konfigurationsvariable in die Config eingebaut.
    in der Section [dvbapi] die Variable offset. In der Konfiguration habe ich entsprechende Hinweise gegeben, was zu beachten ist.
    Standardwert für Offset (falls fehlend in der Konfiguration) ist 0
Misc:
  • Optimierungen am Log-System es werden nun die Log-Zeilen erst bei aktiviertem Log zusammengebaut ála sprintf(...);
  • Genauere Differenzierung ob überhaupt Fehler bei Logging bezüglich der Pipe-Server-Instanz, hier war vorher keine Ausgabe.
  • Stabilität bei Fehlern während der Initialisierung oder nach fehlerhafter Initialisierung erhöht.
Fix:
  • DVB-CISSA/AES/DES: Schlüssel wurde nicht korrekt gewählt, Denkfehler bei Implementierung.
    Tests mit Verimatrix und anderen DVB-CISSA Beispielen liefen jetzt fehlerfrei.
    DES weiterhin ungetestet!
Misc:
  • No-Delay-Option bei internen Sockets hinzugefügt um ggf. verzögerter Verarbeitung der Socketdaten vorzubeugen.
  • Weitere Performance-Optimierungen, es läuft nun nur noch die beigefügte ffdecsa Version. Es kann auch eine Eigene verwendet werden, es werden wenn diese die getrennten Controlword-Setter ausführt (set_even_control_word(...) und set_odd_control_word(...) in Cdecl Aufrufkonvention)
    Das gilt nur für DVBV/DMS/RS, MDAPI bringt eigenes ffDeCSA mit!
Fix:
  • MDAPI(+): Löschen des FIlters funktioniert nun, hier waren mehrere Codebeispiele die ich nutzte schon falsch. RunningID wird nun zurückgelesen und für Stoppen genutzt.
  • MDAPI(+): CaPMT-Update funktioniert nun auch bei MDAPI, es wird eine Network-ID über die SDT ermittelt, sofern Transport-Stream-ID korrekt gesetzt.
  • MDAPI(+): 184 Byte-Mode war fehlerhaft, wenn mehr als 1 packet in den Filter kam.
  • Fehler in SDT-Parsing behoben.
Misc:
  • SDT und CAT wurden unnötigerweise vom Plugin angefordert - entfernt
Fix:
  • CaPMT-Update funktioniert nun, sofern die TransportStream ID in den Sendereinstellungen korrekt ist. Oscam holt sich diese selbst über die PAT, Bei einem CaPMT-Update prüft Oscam allerdings den Eigma-Namespace, der nicht vorhanden war, und eigentlich hier nicht existiert. Hier ist jetzt eine Minimalimplementierung mit Network ID und Transportstream ID vorhanden. Benötigt wird das u.A. bei einigen Services mit dynamischer Anzahl Audio-Streams.
Add:
  • Experimenteller Support für DES-Verschlüsselung - UNGETESTET, Warnung wird bei entsprechender Debug-Log auch ausgegeben.
Misc:
  • Kompatibilität mit verschiedenen ffdecsa-Versionen erhöht.
    Wer eigene Version baut, dort müssen die originalen Exports vorhanden sein mit CDECL Aufrufkonvention.
  • Performantere ffDeCSA-Versionen von @schwa226 eingefügt, BIG THX! NUR FÜR DVBVIEWER/DVBV MEDIA SERVER/RECORDING SERVICE!
    Alte Version liegt im Ordner OLD, neue Version liegt je nachdem was verwendet wird (SAT>IP oder normale Hardware) in ffdecsa SATIP oder ffdecsa Ordner. AVX für moderne CPUs, SSE2 für ältere.
    Wenn es nicht läuft kommt es leider zum Teilweise bis kompletten Crash vom DVBViewer/Mediaserver Da der Native-Code knallt, lässt sich das nicht abfangen.
Fix:
  • MDAPI 184 Byte Modus: EMM filter gefixed, alle EMM mit Table-ID 0x8... werden nun erfasst. Erhöht u.U. aber auch die Fehleranfälligkeit, hier sollte dann mit EMM Len Whitelist in oscam gearbeitet werden.
  • Einige Log-Ausgaben im MDAPI-Teil waren noch falsch zugeordnet (Info statt Error oder Warning)
Fix:
  • Videoguard EMM Fix auf alle TS-Packets angewendet; dadurch oft fehlerhafte (unvollständige) Sections und kein Bild bei einigen Sendern.
Bekannte mögliche Probleme:
  • MDAPI 184 Byte Modus: EMM für bestimmte viaccess Karten gehen möglicherweise nicht an Oscam.
    Grund ist dass ich nur bestimmte Table IDs zulasse, 0x80, 0x81 für even und odd ecm, 0x82 und 0x83 für emm. viaaccess scheint hier noch weitere zu nutzen, von 0x84 bis 0x8e
    Dann steigt allerdings die Fehlerquote für EMM/ECM.
Fix:
  • MDAPI: Videoguard-EMM wurden im 184 Byte Mode zu oft an Oscam übertragen, je nachdem wie viele EMM pro TS-Packet waren, teilweise 6-7 mal. Ursache: statt nur die betreffende Section in den Buffer zu kopieren wurde das gesamte TS-Packet kopiert.
  • Änderungen bzgl. AES Cissa im ECB-Modus (stammt aus Test für einen User im SB) rückgängig gemacht. Falls jemand AES ECB kodiertes Material hat, bitte testen.
Add & Fix:
  • MDAPI 184 Byte Modus - von nun an funktioniert auch der 184 Byte Modus, also alte MDAPI+ oder MDAPI-Versionen sollten nun auch funktionieren.
    Test war mir leider bisher nur mit ProgDVB Möglich. Realisierung läuft über Rekonstruktion der TS-Packets aus den 184 Bytes Packets ermittelten DVB-Sections.
  • Mittels Stream-Dump über die Konfiguration kann der rekonstrukierte TS-Datenstrom in eine Datei geschrieben werden.
Misc:
  • Code Cleanup
  • ProgDVB löscht die Filter für die einzelnen Streams unter Umständen nicht oder nicht sofort. Das hat bei aktiviertem Warning-Logging zur Folge, dass die Logdatei extrem aufgebläht wird. In dem Fall wird pro empfangenen Packet was nicht mehr zugeordnet werden kann eine Zeile in die Logdatei geschrieben.
Fix:
  • Ausnahmen beim beenden bezüglich geschlossener Streams und Sockets beseitigt.
Add:
  • MDAPI+ Schnittstelle hinzugefügt. BIG THX to schwa226! Der 184 Byte-Modus ohne TS-Header funktioniert noch nicht, wenn die angeforderte Section mehr als 181 Byte einnimmt.
    Hier muss noch gearbeitet werden. In ProgDVB funktioniert das Plugin. Ausführlich testen konnte ich nicht, da meine ProgDVB-Installation äußerst instabil läuft und immer wieder die Senderliste beim Einschalten eines Senders zerstört. Fehler sind daher auch hier nicht gänzlich auszuschließen.
    Aufgrund der Struktur von MDAPI funktionieren nur Sender mit DVB-CSA Verschlüsselung.
Fix:
  • Wenn im Puffer der TV-Karte noch alte Daten vom vorherigen Transponder enthalten sind, kam es dazu, dass diese Daten immer wieder herangezogen wurden.
Add:
  • Für Debugzwecke Funktion zum Stream-Dump eingebaut, TS-Dateien werden im selben Verzeichnis wie auch die Logfile angelegt. Nähere Infos in den Kommentaren der Konfigurationsdatei.
Misc:
  • Verhalten bei falschem Stream angepasst, Log-Ausgaben sollten nun besser funktionieren.
Bekannte Probleme (schon immer vorhanden gewesen):
  • Bei CAPMT-Update schlägt dieses fehl. Ursache ist, dass oscam Daten vergleicht, die auf PC-Systemen nicht zur Verfügung stehen, z.B. Enigma Namespace oder Ca-Mask-Descriptor (veraltet, wurde durch andere Descriptor ersetzt).
    Diese Daten gibt es nur auf einem E2 Receiver, und nicht am PC. Möglichkeit wäre hier die Informationen vorzugaukeln, jedoch muss das mit Bedacht geschehen.
Fix:
  • Bei Senderwechsel wurde der Descrambler nicht aufgeräumt, das führt zwar zu kürzeren Umschaltzeiten (im <5ms Bereich) aber führt dazu, dass neue PIDs mit dem falschen CW descrambled werden. Empfindliche Video und Audiodecoder haben damit Probleme und können u.U. abstürzen.
  • Wenn lediglich DVBCISSA/AES128 verwendet wurde kann die ffdecsa. entfallen. Bei Fehlen dieser DLL gibt es nun keine Probleme mehr.
    CSA steht in dem Fall nicht zur Verfügung, führt aber dennoch zu Fehler-Ausgaben im Logfile.
Add:
  • CW-Logging aktiviert. Bezug auf ECM ist nicht mögilch, da ich nicht weiß was das ECM ist was an Oscam gesendet wird.
    Hier hilft es weiteres Logging + Hex-Dump zu aktivieren.
Misc:
  • Vereinfachung der internen Descrambler Schnittstelle und Fehleranfälligkeit reduziert.
Tryfix:
  • Unter bestimmten Umständen kam es vor, dass der Dvbapi-Client die Verbindung zu Oscam nicht neu aufgebaut hat.
    Ich habe den Teil hier etwas umstrukturiert, dass ein separater Thread sich ausschließlich um den Verbindungsaufbau
    und die Überwachung dessen kümmert. Vorher lief das über den Funktion zum Senden der Nachrichten.
Fix:
  • ECM-Info kam bereits bei Loglevel 2 (Warning)
  • Log-Ausgabe angepasst bei Stop-Filter, u.U. kommt es beim Umschalten zu einer Warnung,
    dass der übermittelte Filter/Demuxer nicht gefunden werden kann. Das hat den Hintergrund dass oscam etwas spät, bzw. das Plugin etwas früh alles abräumt.
Misc:
  • Kleinere Umstrukturierungen.
Fix/Workaround:
  • Nochmal zum Fehler aus der Vorherigen Version mit dem Falschen Stream-Inhalten:
    Alle Packets werden nun über den RawTransponder Callback abgewickelt, hier scheinen bisher die Packets korrekt reinzukommen.
    Es kam sogar oft zu keinem Bild, da ausschließlichüber den PidCallback nur noch Packets eines anderen Transponders rein kamen.
Add:
  • Abwicklung nun nur noch über den Main TS-Callback damit einfachere Implementierung neuer Plugin-Schnittstellen.
  • eigenen Packetfilter eingebaut
  • Logging ergänzt
Misc:
  • Code etwas aufgeräumt.
TryFix:
  • Unter bestimmten Umständen kommt es vor, dass der DvbviewerMediaServer die Streams vermischt. z.B. erhält plugin1 dann die PMT-Daten vom anderen Tuner, falls ein 2. Sender eingeschaltet ist. Ich habe hier nun einen Filtermechanismus eingebaut, der wenigstens die PMT-Daten filtert. Bei den ECM-Streams ist das nicht möglich. Daher kann es u.U. zu Fehlern kommen, z.B. Sender werden nicht hell wenn auf beiden Transpondern die ECMs in den selben PIDs liegen.
    In dem Fall wird das PMT-Tracking abgeschaltet, heißt falls Audiochannels weg und zugeschaltet werden bekommt Oscam das nicht mit.
    Den "Fehler" habe ich bereits beim Dvbviewer-Team gemeldet.
Add
  • ECM-Info, wenn im Log eingeschaltet werden ECM-Zeiten usw. geloggt.
  • DVB-CISSA/AES128 ECB/CBC Unterstützung z.B. bei BISS2
  • Default-Config, Es besteht die Möglichkeit das Plugin ohne Konfiguration laufen zu lassen, altes Protokoll wird erzwungen und Logfile ist deaktiviert, Voraussetzungen sind:
    Server: 127.0.0.1 (localhost)
    Port: 633
Remove:
  • Plugin-Vorbereitung für Mediaportal
    Ich war bisher nicht in der Lage Mediaportal mit dem Recording-Service als SatIP-Server laufen zu lassen.
Fix:
  • Bei Videoguard/NDS EMM kommt es im Filter zu einer unendlichen Rekursion sobald mehr als 2 EMM pro TS-Packet übertragen werden.

Wenn ihr meint, dass es Fehler oder Fehlfunktionen gibt, dann benötige ich möglichst ausführliche Informationen:
  • Sender der Entschlüsselt werden soll
  • Satellitenposition und Frequenz
  • Logdatei vom dvbapiNET (Debug in Konfiguration auf 32767 stellen, Binary Dumps brauche ich erstmal nicht
    Fordere ich bei bedarf aber an.
  • Oscam-Log, vollständig vom Start bis zum Fehlerzeitpunkt, Hier Debug auf 128 stellen
  • Genaue Beschreibung des Fehlers, wann tritt der auf, bzw was ist zu tun bis der Fehler
  • Versionsstände der Software die Verwendet wurde.
Entweder schreibt hier einen Post und hängt die Dateien an (bitte keine Spoiler oder ähnliches) oder schreibt mir das per DM, dann aber auch als Dateien anhängen.

Manchmal scheint es mit dem DVBViewer Probleme mit dem Decoding zu geben, ich selbst habe das z.B. auf meinem Standrechner bemerkt, wo ich von einer alten Version auf eine neuere aktualisiert habe. In älteren Versionen scheint die Einstellungen für Max Queued Audio für Probleme zu sorgen. Hier ist manchmal ein Wert größer als Null eingetragen.
Idealerweise steht da 0 drin, denn dann puffert der DVBViewer so viel wie er benötigt. Dazu bei (1) klicken, dann bei (2) und (3) den wert auf 0 setzen und mit Übernehmen + OK speichern.
Du musst Regestriert sein, um das angehängte Bild zusehen.

Misc:
  • Überlegung im Bereich alternativer Verzeichnisse in dem die Konfiguration abgelegt sein kann.
  • weitere Plugin-Schnittstellen? Vorschläge?
  • Angabe mehrer dvbapi-Fallbacks, vorschlag aus dem Streamboard.
Idee:
  • DVB-IP (Sat>IP) Proxy zum zwischenschalten an z.B. Fernsehgeräte oder Software ohne Plugin-Support
  • Webinterface für das Plugin um Status, offene sender, CWs usw. abzurufen.
  • Für MDAPI-Clients, die einzelne Instanzen wieder entladen: Hostanwendung für die Verbindung zu Oscam
    bzw. um die Master-Instanz aktiv zu halten.

PS:
Aufgrund der häufigen Nachfragen, bzgl. Spenden:
Auf meiner Website (verlinkt im Profil) befindet sich unten ein Spenden-Button.

Hallo Leute,

Angefangen habe ich im alten mdvbapi-Thread, und dort bereits angekündigt, dass ich ein neues Projekt erstellen werde.

der Erste Versuch ist leider gescheitert, aufgrund der schlechten Dokumentation von Visual C++ Klassen usw.
Und wenn etwas zu finden war, bin ich irgendwie von einem Fettnapf in den nächsten getapst.

Ich habe nun eine Möglichkeit (zuverlässig) gefunden mit der ich C# .NET Module mit herkömmlichen stdcall/cdecl Exports aufbauen kann:
Dieses NuGet Paket nutze ich in dem Projekt - und es funktioniert.
Da ich bereits einiges an C# Entwicklung durch habe, ist das ganze für mich wesentlich leichter. Ich schaffe pro Zeit doppelt so viel.
Seit gestern Abend deutlich mehr geschafft:
(Screenshot entfernt)

Nun benötige ich aber so langsam eure Hilfe, denn das was ich an Infos benötige bekomme ich nicht mehr vom DVBViewer Forum, da dieses in den Forenregeln dort verboten ist: Softwareseitiges Descrambling.

Ich fange mal etwas weiter vorn an:
Pro TS-Packet wird die PidCallback(IntPtr tsPacket){...} einmal aufgerufen.

Wie kann ich nun mehr als 1 Paket gleichzeitig durch ffdesca jagen?
Einzelne Pakete zu descramblen ist äußerst ineffizient und selbst mit aktuellen CPUs steigt die Last erheblich an.

Da ich nun auch mit dem Debugger in das Modul während des Betriebs reinschauen kann habe ich festgestellt dass mehrere Threads gleichzeitig laufen, entsprechend wird die PidCallback auch mehrfach parallel aufgerufen. Singlethreaded - da hat mir der debugger einen streich gespielt.
Das ändert aber nichts daran, dass ich keine 200 Pakete gleichzeitig durch den desccrambler jagen kann.
Selbst wenn ich es Asynchron mache, können die Pakete bereits weiterverarbeitet oder die Pointer auf die Pakete bereits ungültig sein.

Ich hoffe mein Problem verständlich genug rüber gebracht zu haben - und jemand liest es der eine Lösung kennt

AddRawTsCall bringt mir da auch nicht viel, da dort ebenfalls nur 188byte Packets reinkommen.
Zumindest mit meiner Hardware (tt-connect s2-3600 und dd cine s2)

Nachtrag 8.10.

CaPMT kann ich nun mittlerweile passend zusammenbauen.

Bin gerade bei der implementierung der Oscam DVBAPI. Muss noch herausfinden wie das ding im Detail funktioniert und wie ich die ECM/EMM aus den Pids herausfiltern muss.

Nachtrag 13.10.
Ich werde wohl die gesamte Pipe-Kommunikation über den Haufen schmeißen.
Pipes sind nicht Threadsafe. Weiterhin gibt es das Problem, dass wenn Prozess A in die Pipe schreibt, Prozess B das ausliest, aber prozess A
dann direkt nochmal was schreibt, Prozess B weiter liest, dann die Daten vom 2. Write von Prozess A bekommt.
Da scheint sich dann die Pipe zu "verschlucken"

ich lass mir da eine Lösung einfallen.

Nachtrag 23.10.
Ich habe das über einen Netzwerksocket eingerichtet, der auf eine zufällige localhost-ip (im bereich 127.0.0.0/8) auf einem zufälligen Port horcht.
per Pipe übertrage ich dann die genauen daten und ein kleines authentifizierungs-token.

Bin nun soweit, dass ich oscam mit den gefilterten Daten entsprechend versorgen kann.
ECMs werden bereits übermittelt, CWs kommen zurück.

ein paar dvbapi-befehle muss ich noch implementieren und eine Sache mit der Capmt direkt mit den oscam devs klären.
danach kommt der csa kram dran.

Nachtrag 30.10.
Mein Rechner hat gestern die Grätsche gemacht, friert dauernd ein, als notlösung hab ich das OS neu installiert.
Ich muss den jetzt erstmal neu einrichten - das wird eine Weile dauern.

Nachtrag 1.11.:
Rechner läuft wieder, malschauen wie lange. Nicht dass ich noch reklamieren muss.

Habe das Plugin nun soweit, dass ich oscam mit emm versorgen kann. mehrfache sender gleichzeitig gehen auch schonmal. Anders als im originalen mdvbapi werden die demuxer in oscam nicht bei jedem senderwechsel eines einzelnen Senders neu gestaret. das ganze verhält sich schlicht so wie auf einem e2 receiver. Dadurch gibt es keine discontinuities bei den anderen Sendern, Aufzeichnungen z.B. sollten so fehlerfrei bleiben.

im dvbviewer scheint das plugin gut zu funktionieren, Tests im Recording-Service waren eine komplette Nullnummer, keine Ahnung was da schief geht.

Als nächstes kommt nun die Einbindung vom ffdecsa.



Grüße
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Nachtrag heute:
CSA implementiert, Sender laufen jetzt.
Nun kommt bugfixing und stabilität erhöhen. das ganze ding ist reines proof of concept.
Wenn oscam wegrauscht rauscht das plugin auch weg.

weitehrin muss ich noch rausfinden, warum oscam die setpid erst nach teilweise 5-6 Sekunden sendet (erst dann bekomme ich bild). das ergibt keinen Sinn. Normalerweise muss das direkt nach parsen des capmt kommen.

bin bei multipacket-decrypting bei etwa 1% CPU-Last auf nem Intel Core i9
CPU läuft locker auf 800Mhz taktet nicht hoch, dürfte aber auch auf langsameren CPUs gehen.
Optimierungen stehen aber wie gesagt noch aus!

Nachtrag:
Komme der Sache näher. Descrambling mit mehreren Sendern parallel läuft stabil. habe nur hd+ zum testen. Wäre schön wenn jemand andere Pakete auf 19.2 zur verüfgung stellen kann.
Weiterhin ist derezeit nur DVBCSA implementiert. AES und DES sind bisher nicht implementiert.

Es hakt derzeit noch bei der Verbindung mit Oscam. Manchmal schmeißt dieser nach einem Reconnect immer malformed packet usw. usf.
Auch setzt das Descrambling nach dem Disconnect nooch nicht automatisch fort, das muss noch implementiert werden.

Ich denke dass ich ggf. diese oder nächste woche eine kleine Test-Release bereitstelle.

Konfiguration und Verwendung ist identisch zum bekanntem mdvbapi plugin.
Von einem User wurde ich zudem angeschrieben eine Umsetzung für Mediaportal zu schreiben. Hier benötige ich ggf. unterstützung.
Implementierung ist geplant. Wenn der Oscam-Teil perfekt läuft, sollte mediaportal nicht weiter problematisch sein.

Achja: der Recording-Service bzw DVBViewer media server scheint den Sender anders zu stoppen. Mit einem anderen Event (id 1001)
Weiß jemand da mehr?
 
Zuletzt bearbeitet:
Alles klar,

Logging funktioniert noch nicht ganz richtig, es wird noch nicht alles geschrieben, was geschrieben werden soll.
Bisher nur plain old DVB-CSA; bei Sendern mit anderen Algos wo Oscam ein Set Ca Descr Data sendet usw. kommt es zu abstürzen - das ist bekannt und ich arbeite dran.

Erste Testversion findet ihr im Anhang.

Im Grunde ist alles so wie bei mdvbapi, nur dass es anders heißt und bisher ausschließlich der DVBViewer läuft oder programme die eben die selbe API verwenden und sich identisch verhalten.
Mein Test-Setup war wie folgt:
DVBViewer Pro V6.1.5.2 Bei verwendung einzelner Sender und einer einzelnen Plugin Instanz.
Bei Verwendung mehrfacher Plugins über den DVBViewer Media Server 2.1.5.2 (empfehlung: 1 pro Tuner wenn nur ein Sender pro Tuner entschlüsselt werden soll, habe hier bis zu 8 Sender bereits erfolgreich getestet)

Installiert sein muss das aktuelle .NET Framework 4 sowie für ffdecsa die aktuelle VC Redist 2019 (v142).
Einfach nach Googeln.

Oscam funktioniert ab R11520 (Ab da wird erst der nötige DemuxID Descriptor ausgewertet)
Womit wir bei der Konfiguration wären:
Zwischenzeitlich wurde viel an dem DVBAPI-Protokoll herumgeschraubt.
Daher habe ich eine Option erstellt mit der das alte Protokoll v2 erzwungen werden kann, mehr dazu in den Kommentaren der Konfigrationsdatei.
Damit komme ich zur einrichtung:

die ffdecsa.dll kommt in das DVBViewer-Verzeichnis, in der auch die DVBViewer.exe liegt.
Das Plugin für den DVBViewer kommt in "Plugins\" unterhalb des DVBViewer Verzeichnisses.
Die Plugins für den RecordingService/DVBViewer Media Server kommen in Plugins\PluginsX
Wobeidas X für 1 bis max. 32 steht. begonnen bei Plugins1
Dort nur jeweils einmal die dvbapiNET.dll einkopieren.

Die Konfigurationsdatei kommt in das Programdata-Verzeichnis. Aufrufen lässt es sich im Windows Explorer z.B. durch %programdata%

Dort den Ordner dvbapiNET erstellen und die dvbapiNET.ini reinkopieren.
In der Konfigurationsdatei habe ich ein paar Kommentare eingefügt. Jeder der etwas Ahnung von Oscam und der Einrichtung von mdvbapi hat, wird das verstehen.

wenn alles korrekt gemacht wurde, sollten die Sender hell werden.
Wenn nicht, oder es gibt andere Probleme, wie abstürze etc. bitte folgende Logfiles zusenden, ggf. an Post anhängen oder per PN

Oscam Debug Log mit Debuglevel 128
dvbapiNET logfile, die wird im gleichen Verzeichnis erstellt wie die Konfigurationsdatei.

wenn es bei besitmmten Sendern Probleme gibt dann entsprechend mit dabei schreiben, welcher Sender, was habt ihr gemacht, z.B. sehr schnell zwischen vielen Sendern gewechselt, etc.
So genau wie möglich beschreiben, sonst kann ich keine bugs fixen.

Auch bitte erwähnen welche Versionen von DVBViewer, RecordingService/DMS, Oscam, etc.

ich hoffe ich habe nichts vergessen.

Nachtrag: Ich habe etwas vergessen zu erwähnen: die FFdecsa ist für CPUs mit SSE2 Befehlssatz kompiliert, hat eure CPU das nicht, gibt es kein oder ein fehlerhaftes Bild.
Nachtrag: Ergänzung zu der Konfiguration hinzugefügt.

Nahtrag: 16.11. neue Datei hochgeladen.
Bitte ALLE Versionen die noch in anderen plugin1, plugin2 usw. gespeichert sind löschen, die Verschiedenen Versionen werden sich nicht untereinander verbinden, da die Version einen Hash-Wert enthält der an den Pipe-Namen herangefügt wird.

Nachtrag: 18.11. neue Datei hochgeladen, DVB-Filter angepasst, funktionierte nicht in jedem Fall. Sollte nun auch mit SECA funktionieren.
Nachtrag2 18.11.: neue Datei hochgeladen, Changes: ExtendedCW Api Eingebaut, Plugin verarbeitet nun extCW, allerdings erfolgt noch kein Descrambling.
Algorithmen sind zwar vorbereitet und angelegt, aber noch ohne funktion.
Logging erweitert und etwas umgebaut. läuft nun über alle Plugins parallel. Bisheriges System führte zu deadlocks, da ich das über die Verbindung zwischen den Plugins gemacht habe.
Entsprechend habe ich die dvbapinet.ini um Kommentare ergänzt welches Flag welche Auswirkung hat. Es sind stand jetzt nur ein kleiner Teil eingebracht, eben das was ich bisher benötigte.

changelog 20.11.:
Log-Spam etwas reduziert, nur noch eine seite der Intercom-Verbindung wird geloggt.
Weiter Log-Spam und CPU-Last reduziert: PMT wurde generell bei jedem vollständigem empfang an die hauptinstanz übermittelt, das ist nur notwendig, wenn sich etwas ändert.
Hier wird nun Version-Feld in der Section verglichen.
Aufräumen beim beenden weiter vervollständigt, durchaus möglich, dass noch etwas fehlt. Generell sollte der .NET Garbage Collector aber alles aufräumen - ist so aber sauberer.
Standardmäßig ist nun das Logging deaktiviert, sont entstehen bei einem Fernsehabend leider schon etliche MB an Logdatei.
Bei Fehler bitte Debug auf 65535 stellen.
 
Zuletzt bearbeitet:
Danke funktioniert,habe aber erst mal nur mit DVBViewer only und HD01 getestet.
Werde es demnächst auf dem HTPC mit DMS und 4 Sattunern testen.
Viel kann ich halt noch nicht sagen aber es entschlüsselt :smiley: mit alten und auch neuem Protokoll mit entsprechender Oscam.
Toll wie man das so schnell auf die Beine stellen kann gerade im Hinblick da mdvbapi scheinbar nicht mehr mit updates versorgt wird.
Bild in Bild funktioniert auch.
 
Zuletzt bearbeitet:
Nunja, ich habe etliches an Zeit da investiert. Perfekt ist es noch nicht, aber es funktioniert erstmal. theoretisch dürfte auch sky laufen aber die karten sind jetzt ja komplett dicht.
 
Hallo,

Erstmal vielen Dank für die Arbeit! Wirklich stark auf so einer kurzen Zeit ein funktionierendes Plugin zu erstellen...

Habe heute getestet (mit TV Vlaanderen Seca3 Karte) lüppt, leider aber erst nach ein weilchen (aber soweit ich verstehe ist das bei dir genau so)...im Anhang findest du die logs, wenn debug wert bei Oscam erhöht werden soll bitte Fragen...

Habe geloggt bis Bild da ist...

2019/11/13 22:25:45 1744FEF0 c (dvbapi) Client connected: 'dvbapiNET v1.0 (#1c586b86)' (protocol version = 3)
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 0 CAID: 1817 ECM_PID: 07D5 PROVID: 00006A
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 1 CAID: 1818 ECM_PID: 0721 PROVID: 00006C
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 2 CAID: 1819 ECM_PID: 0735 PROVID: 00006D
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 found 3 ECM pids and 0 STREAM pids in CA PMT
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 no suitable readers found that can be used for decoding!
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 trying to descramble PID 0 CAID 1817 PROVID 00006A ECMPID 07D5 ANY CHID PMTPID 0AAA VPID 0AAA
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 3 CAID: 0100 ECM_PID: 07D5 PROVID: 00006A PBM: FFE000000000000 DATE: 13-11-2019
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 4 CAID: 0100 ECM_PID: 0721 PROVID: 00006C PBM: FFE000000000000 DATE: 13-11-2019
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 5 CAID: 0100 ECM_PID: 0735 PROVID: 00006D PBM: FFE000000000000 DATE: 13-11-2019
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 ecmpid 6 CAID: 0500 ECM_PID: 0C35 PROVID: 051900
2019/11/13 22:25:48 1744FEF0 c (dvbapi) Demuxer 0 found 7 ECM pids and 3 STREAM pids in PMT
2019/11/13 22:25:48 6B6C90D2 p (reader) 192.168.1.10: resolved ip=192.168.1.10
2019/11/13 22:25:48 6B6C90D2 p (reader) raspberry [cs378x] connecting to 192.168.1.10:23501
2019/11/13 22:25:48 3F9479EA p (reader) 192.168.1.102: resolved ip=192.168.1.102
2019/11/13 22:25:48 3F9479EA p (reader) home [cs378x] connecting to 192.168.1.102:23501
2019/11/13 22:25:49 3F9479EA p (camd35) packet is too small (received 0 bytes, expected 1024 bytes)
2019/11/13 22:25:49 3F9479EA p (reader) home [cs378x] disconnected: reason disconnect on receive
2019/11/13 22:25:49 3F9479EA p (reader) home [cs378x] connecting to 192.168.1.102:23501
2019/11/13 22:25:50 3F9479EA p (camd35) packet is too small (received 0 bytes, expected 1024 bytes)
2019/11/13 22:25:50 3F9479EA p (reader) home [cs378x] disconnected: reason disconnect on receive
2019/11/13 22:25:53 1744FEF0 c (ecm) dvbviewer (1817@00006A/0000/5226/64:021B15BB8FB8D9BEB4744054B8672C4D): timeout (5001 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:25:54 1744FEF0 c (ecm) dvbviewer (1817@00006A/0000/5226/64:82AB929FDE5339213B34A8200518FF79): timeout (5001 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:25:54 1744FEF0 c (ecm) dvbviewer (1817@00006A/0000/5226/64:82AB929FDE5339213B34A8200518FF79): not found (997 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:25:54 1744FEF0 c (dvbapi) Demuxer 0 trying to descramble PID 3 CAID 0100 PROVID 00006A ECMPID 07D5 ANY CHID PMTPID 0AAA VPID 0204
2019/11/13 22:25:55 3F9479EA p (reader) home [cs378x] connecting to 192.168.1.102:23501
2019/11/13 22:25:56 3F9479EA p (camd35) packet is too small (received 0 bytes, expected 1024 bytes)
2019/11/13 22:25:56 3F9479EA p (reader) home [cs378x] disconnected: reason disconnect on receive
2019/11/13 22:25:59 3F9479EA p (reader) home [cs378x] connecting to 192.168.1.102:23501
2019/11/13 22:26:00 1744FEF0 c (ecm) dvbviewer (0100@00006A/5C00/5226/64:82AB929FDE5339213B34A8200518FF79): timeout (5001 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:26:00 3F9479EA p (camd35) packet is too small (received 0 bytes, expected 1024 bytes)
2019/11/13 22:26:00 3F9479EA p (reader) home [cs378x] disconnected: reason disconnect on receive
2019/11/13 22:26:04 1744FEF0 c (ecm) dvbviewer (0100@00006A/5C00/5226/64:3C0A5851B4E3CBC958E94E18422F0F6B): timeout (5001 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:26:04 1744FEF0 c (ecm) dvbviewer (0100@00006A/5C00/5226/64:3C0A5851B4E3CBC958E94E18422F0F6B): not found (4404 ms) by home (F/2/2/2) - Canvas HD
2019/11/13 22:26:04 1744FEF0 c (dvbapi) Demuxer 0 trying to descramble PID 4 CAID 0100 PROVID 00006C ECMPID 0721 ANY CHID PMTPID 0AAA VPID 0204
2019/11/13 22:26:05 6B6C90D2 p (camd35) raspberry CMD05 AU request for caid: 0100 auprovid: 000000
2019/11/13 22:26:05 1744FEF0 c (ecm) dvbviewer (0100@00006C/5C00/5226/64:BF4A2447676AF6B739D27AA97BD0E6B4): found (355 ms) by raspberry (P/1/2/2) - Canvas HD
2019/11/13 22:26:09 1744FEF0 c (ecm) dvbviewer (0100@00006C/5C00/5226/64:CB297C471075126ED15197E4547C8530): found (354 ms) by raspberry (P/1/2/2) - Canvas HD
2019/11/13 22:26:13 1744FEF0 c (dvbapi) Demuxer 0 stopped descrambling for program 5226 (Canvas HD)

[2019-11-13T22:25:45 PL --] Verbinde zu dvbapi server...
[2019-11-13T22:25:45 PL 00] Verbindung aufgebaut
[2019-11-13T22:25:45 PL 00] Got InterCom Command SetInstanceNumber
[2019-11-13T22:25:45 PL 00] DVBAPI Command: ServerInfo
[2019-11-13T22:25:45 PL 00] Server: OSCam v1.20_svn, build r11569-798 (x86_64-pc-cygwin-ssl-libusb); , Protocol: 3
[2019-11-13T22:25:45 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: evInitComplete
[2019-11-13T22:25:46 PL 00] Execute called
[2019-11-13T22:25:46 PL 00] Event fired: evUnknown
[2019-11-13T22:25:46 PL 00] Event fired: evTuneChannel
[2019-11-13T22:25:46 PL 00] Tune, SID: 21030, PMT: 2730
[2019-11-13T22:25:46 PL 00] Event fired: evFinishSetChannel
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:46 PL 00] Event fired: 11
[2019-11-13T22:25:47 PL 00] Event fired: 11
[2019-11-13T22:25:47 PL 00] Event fired: 11
[2019-11-13T22:25:47 PL 00] Event fired: 11
[2019-11-13T22:25:48 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:48 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:48 PL 00] Event fired: 11
[2019-11-13T22:25:48 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:48 PL 00] add filter 0, pid 2730
[2019-11-13T22:25:48 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:48 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:48 PL 00] add filter 1, pid 17
[2019-11-13T22:25:48 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:48 PL 00] add filter 2, pid 2005
[2019-11-13T22:25:48 PL 00] Event fired: 11
[2019-11-13T22:25:48 PL 00] DVBAPI Command: DmxStop
[2019-11-13T22:25:48 PL 00] Got InterCom Command DelFilter
[2019-11-13T22:25:48 PL 00] Delete filter 0, pid 2730
[2019-11-13T22:25:48 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:48 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:48 PL 00] add filter 2, pid 2005
[2019-11-13T22:25:48 PL 00] Event fired: 11
[2019-11-13T22:25:48 PL 00] Event fired: 11
[2019-11-13T22:25:48 PL 00] Event fired: 11
[2019-11-13T22:25:49 PL 00] DVBAPI Command: DmxStop
[2019-11-13T22:25:49 PL 00] Got InterCom Command DelFilter
[2019-11-13T22:25:49 PL 00] Delete filter 1, pid 17
[2019-11-13T22:25:49 PL 00] Event fired: 11
[2019-11-13T22:25:49 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:49 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:49 PL 00] add filter 2, pid 2005
[2019-11-13T22:25:49 PL 00] Event fired: 11
[2019-11-13T22:25:49 PL 00] Event fired: 11
[2019-11-13T22:25:49 PL 00] Event fired: 11
[2019-11-13T22:25:50 PL 00] Event fired: 11
[2019-11-13T22:25:50 PL 00] Event fired: 11
[2019-11-13T22:25:50 PL 00] Event fired: 11
[2019-11-13T22:25:51 PL 00] Event fired: 11
[2019-11-13T22:25:51 PL 00] Event fired: 11
[2019-11-13T22:25:51 PL 00] Event fired: 11
[2019-11-13T22:25:52 PL 00] Event fired: 11
[2019-11-13T22:25:52 PL 00] Event fired: 11
[2019-11-13T22:25:52 PL 00] Event fired: 11
[2019-11-13T22:25:53 PL 00] Event fired: 11
[2019-11-13T22:25:53 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:53 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:53 PL 00] add filter 2, pid 2005
[2019-11-13T22:25:53 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:53 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:53 PL 00] add filter 2, pid 2005
[2019-11-13T22:25:53 PL 00] Event fired: 11
[2019-11-13T22:25:53 PL 00] Event fired: 11
[2019-11-13T22:25:54 PL 00] Event fired: 11
[2019-11-13T22:25:54 PL 00] DVBAPI Command: DmxStop
[2019-11-13T22:25:54 PL 00] Got InterCom Command DelFilter
[2019-11-13T22:25:54 PL 00] Delete filter 2, pid 2005
[2019-11-13T22:25:54 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:54 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:54 PL 00] add filter 0, pid 2005
[2019-11-13T22:25:54 PL 00] Event fired: 11
[2019-11-13T22:25:54 PL 00] Event fired: 11
[2019-11-13T22:25:55 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:55 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:55 PL 00] add filter 0, pid 2005
[2019-11-13T22:25:55 PL 00] Event fired: 11
[2019-11-13T22:25:55 PL 00] Event fired: 11
[2019-11-13T22:25:55 PL 00] Event fired: 11
[2019-11-13T22:25:56 PL 00] Event fired: 11
[2019-11-13T22:25:56 PL 00] Event fired: 11
[2019-11-13T22:25:56 PL 00] Event fired: 11
[2019-11-13T22:25:57 PL 00] Event fired: 11
[2019-11-13T22:25:57 PL 00] Event fired: 11
[2019-11-13T22:25:57 PL 00] Event fired: 11
[2019-11-13T22:25:58 PL 00] Event fired: 11
[2019-11-13T22:25:58 PL 00] Event fired: 11
[2019-11-13T22:25:58 PL 00] Event fired: 11
[2019-11-13T22:25:59 PL 00] Event fired: 11
[2019-11-13T22:25:59 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:25:59 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:25:59 PL 00] add filter 0, pid 2005
[2019-11-13T22:25:59 PL 00] Event fired: 11
[2019-11-13T22:25:59 PL 00] Event fired: 11
[2019-11-13T22:26:00 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:26:00 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:26:00 PL 00] add filter 0, pid 2005
[2019-11-13T22:26:00 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:26:00 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:26:00 PL 00] add filter 0, pid 2005
[2019-11-13T22:26:00 PL 00] Event fired: 11
[2019-11-13T22:26:00 PL 00] Event fired: 11
[2019-11-13T22:26:00 PL 00] Event fired: 11
[2019-11-13T22:26:01 PL 00] Event fired: 11
[2019-11-13T22:26:01 PL 00] Event fired: 11
[2019-11-13T22:26:01 PL 00] Event fired: 11
[2019-11-13T22:26:02 PL 00] Event fired: 11
[2019-11-13T22:26:02 PL 00] Event fired: 11
[2019-11-13T22:26:02 PL 00] Event fired: 11
[2019-11-13T22:26:03 PL 00] Event fired: 11
[2019-11-13T22:26:03 PL 00] Event fired: 11
[2019-11-13T22:26:03 PL 00] Event fired: 11
[2019-11-13T22:26:04 PL 00] Event fired: 11
[2019-11-13T22:26:04 PL 00] DVBAPI Command: DmxStop
[2019-11-13T22:26:04 PL 00] Got InterCom Command DelFilter
[2019-11-13T22:26:04 PL 00] Delete filter 0, pid 2005
[2019-11-13T22:26:04 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:26:04 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:26:04 PL 00] add filter 0, pid 1825
[2019-11-13T22:26:04 PL 00] Event fired: 11
[2019-11-13T22:26:04 PL 00] Event fired: 11
[2019-11-13T22:26:05 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:26:05 PL 00] add filter 0, pid 1825
[2019-11-13T22:26:05 PL 00] Event fired: 11
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 516, idx: -1
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 516, idx: 0
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 104, idx: -1
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 104, idx: 0
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 36, idx: -1
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:05 PL 00] Adapter: 0, pid: 36, idx: 0
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetDescr
[2019-11-13T22:26:05 PL 00] Adapter: 0, index: 0, parity: 0, CW:
[2019-11-13T22:26:05 PL 00] 3c 94 e2 b2 ed 0d 9a 94
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetCw
[2019-11-13T22:26:05 PL 00] DVBAPI Command: CaSetDescr
[2019-11-13T22:26:05 PL 00] Adapter: 0, index: 0, parity: 1, CW:
[2019-11-13T22:26:05 PL 00] cf c9 e8 80 b4 55 2a 33
[2019-11-13T22:26:05 PL 00] DVBAPI Command: EcmInfo
[2019-11-13T22:26:05 PL 00] Got InterCom Command SetCw
[2019-11-13T22:26:05 PL 00] Event fired: 11
[2019-11-13T22:26:05 PL 00] Event fired: 11
[2019-11-13T22:26:06 PL 00] Event fired: 11
[2019-11-13T22:26:06 PL 00] Event fired: 11
[2019-11-13T22:26:06 PL 00] Event fired: 11
[2019-11-13T22:26:07 PL 00] Event fired: 11
[2019-11-13T22:26:07 PL 00] Event fired: 11
[2019-11-13T22:26:07 PL 00] Event fired: 11
[2019-11-13T22:26:08 PL 00] Event fired: 11
[2019-11-13T22:26:08 PL 00] Event fired: 11
[2019-11-13T22:26:08 PL 00] Event fired: 11
[2019-11-13T22:26:09 PL 00] Event fired: 11
[2019-11-13T22:26:09 PL 00] DVBAPI Command: DmxSetFilter
[2019-11-13T22:26:09 PL 00] Got InterCom Command SetFilter
[2019-11-13T22:26:09 PL 00] add filter 0, pid 1825
[2019-11-13T22:26:09 PL 00] Event fired: 11
[2019-11-13T22:26:09 PL 00] Event fired: 11
[2019-11-13T22:26:09 PL 00] DVBAPI Command: CaSetDescr
[2019-11-13T22:26:09 PL 00] Adapter: 0, index: 0, parity: 1, CW:
[2019-11-13T22:26:09 PL 00] ac 4f 84 7f c1 69 b6 e0
[2019-11-13T22:26:09 PL 00] DVBAPI Command: EcmInfo
[2019-11-13T22:26:09 PL 00] Got InterCom Command SetCw
[2019-11-13T22:26:10 PL 00] Event fired: 11
[2019-11-13T22:26:10 PL 00] Event fired: 11
[2019-11-13T22:26:10 PL 00] Event fired: 11
[2019-11-13T22:26:11 PL 00] Event fired: 11
[2019-11-13T22:26:11 PL 00] Event fired: 11
[2019-11-13T22:26:11 PL 00] Event fired: 11
[2019-11-13T22:26:12 PL 00] Event fired: 11
[2019-11-13T22:26:12 PL 00] Event fired: 11
[2019-11-13T22:26:12 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: evUnknown
[2019-11-13T22:26:13 PL 00] Event fired: evRemoveChannel
[2019-11-13T22:26:13 PL 00] Tune, SID: -1, PMT: -1
[2019-11-13T22:26:13 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:13 PL 00] Adapter: 0, pid: 516, idx: -1
[2019-11-13T22:26:13 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:13 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:13 PL 00] Adapter: 0, pid: 104, idx: -1
[2019-11-13T22:26:13 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:13 PL 00] DVBAPI Command: CaSetPid
[2019-11-13T22:26:13 PL 00] Adapter: 0, pid: 36, idx: -1
[2019-11-13T22:26:13 PL 00] Got InterCom Command SetPid
[2019-11-13T22:26:13 PL 00] DVBAPI Command: DmxStop
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:13 PL 00] Event fired: 11
[2019-11-13T22:26:14 PL 00] Event fired: evUnload
[2019-11-13T22:26:14 PL 00] Verbindung zu DVBAPI getrennt.
[2019-11-13T22:26:14 PL 00] Fehler DVBAPI Client:
[2019-11-13T22:26:14 PL 00] System.ObjectDisposedException: Auf das verworfene Objekt kann nicht zugegriffen werden.
[2019-11-13T22:26:14 PL 00]
[2019-11-13T22:26:14 PL 00] Objektname: "System.Net.Sockets.Socket".
[2019-11-13T22:26:14 PL 00]
[2019-11-13T22:26:14 PL 00] bei System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult, SocketError& errorCode)
[2019-11-13T22:26:14 PL 00]
[2019-11-13T22:26:14 PL 00] bei System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
[2019-11-13T22:26:14 PL 00]
[2019-11-13T22:26:14 PL 00] bei dvbapiNet.Oscam.DvbApiClient.Receive(IAsyncResult iar)
[2019-11-13T22:26:14 PL 00] Verbindung zu DVBAPI getrennt.

Viel Spaß beim debuggen/optimalisieren!
 
@clemenss
kenne mich mit den Karten nicht aus scheint aber nur bei 0100:00006c decodiert zu werden das eventuell in der dvbapi priorisieren
 
Also funzt ja mit mdvbapi ohne prios...Die Karte soll auch nur 0100:00006c dekodieren...funzt ja auch nur eben dauerts nach jedem Umschalten ein weilchen vor es hell wird...Aber das wird schon noch werden :)
 
@clemenss

die Ursache dass es so lange daueret liegt hier nicht am plugin, du siehst in der Oscam-Log dass dort viele timeouts drin sind. Außerdem hätte mir die Log nicht viel genützt, da kein DEBUG=128.
Das was du meinst und was ich auch Anfangs beschrieben habe, ist was anders und sollte behoben sein, ggf. kann ich da aber noch optimieren.
Die Ursache war, dass Oscam die PMT nochmals angefordert hatte, da ich die nicht gecached hatte musste ich wieder warten bis die durchkam, das dauert teilweise je nach Sender mehrere Sekunden.
Dann kam die bei oscam erst an und der setzte dann entsprechend die Descramble-Filter.
 
Also diese timeouts habe ich nur mit deinem Plugin...und nicht mit mdvbapi...
Ist auch einfach lokale Karte im raspi...

Meinst debug = 128 bei Oscam? Kann ich mal machen wenn du möchtest...

Ich schicke dich per PN ein Link zum Video wo es demonstriert wird (erst mit mdvbapi danach mit dein Plugin)...Ist ja auch nicht schlimm ich möchte ja nur helfen :smile: Lass dich ruhig Zeit mit dem ganzen ;)
Oscam Log werde ich auch per PN schicken (128)
 
Zuletzt bearbeitet:
Nachtrag:
Fehler für Seca (und andere) behoben dass der Sender nicht oder spät descrambled wurde, falscher Datentyp bei schreiben der Länge für CApmt-Daten. int32, statt int16 verwendet.
Neue Datei im Post zu finden:

Noch ein Hinweis;
es gibt mit Version3 manchmal den Log-Eintrag "Malformed Packet received (no start)"
Das ist darin begründet, das oscam manchmal das Disconnect vom plugin nicht mitbekommt, warum auch immer.
Wenn das nervt und zu oft passiert, dann oldproto=1 setzen in der Config-Datei.
 
Version von heute ist hochgeladen.
Rückmeldungen sind gern gewünscht.
Ich weise noch mal darauf hin, wenn es fehler gibt:
  • Oscam-Debug-Log Mit Loglevel = 128 Vollständig, vom Start des Servers bis Beenden.
  • dvbapiNET Logfile Vollständig vom Start bis ende.
  • Sender welchen ihr probiert habt, Sat-Position, Frequenz wäre auch von Vorteil.
    Idealerweise Transponderdump von dem Sender über mind 45 Sekunden.
 
Neue Version auf HTPC installiert funktioniert bis jetzt tadellos mit HD+(1830) Sky(09c4,098c) ORF(0d95) und SRF(0500).
Problemlos 4 Sender gleichzeitig entschlüsselt(4 Tuner von Digital Devices mit DVBV und DMS, OS Win7 32bit).
EMM kommen auf lokalen Karten auch an.

auch mal mit 10 Aufnahmen getestet

[/SPOILER
Du musst Regestriert sein, um das angehängte Bild zusehen.

]
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Siehe Bild, mit 12 Plugins geht auch das, mehr kann ich mangels Satleitungen hier nicht testen

.
Du musst angemeldet sein, um Bilder zu sehen.

Nachtrag 19.11.
Die AES / Cissa Implementierung macht mir leider zu schaffen.
Entweder sind meine Dokumentationen die ich hier habe unvollständig oder fehlerhaft/veraltet.
Grundsätzlich bekomme ich teilweise fehlerfreie pakete raus, zmd. erlaubt mir mein Tool das ergebnis fehlerfrei zu parsen.
Es wird aber wohl noch etwas dauern bis das funktioniert.

Nachtrag: 20.11.
siehe oben, neue Datei angefügt. Überlege gerade kleines webinterface zwecks einfacherem Debugging einzubauen - ist aber glaube ich etwas overkill.
DVBCissa habe ich erstmal auf Eis gelegt. Es wird eine Logwarnung ausgegeben falls Sender entschlüsselt werden sollen, AES oder DES verwenden.

Nachtrag 22.11.
Hatte eine kleine Eingebung beim DVB AES128, hier hatte ich tatsächlich einen kleinen Denkfehler.
Descrambling mit AES128 CBC funktioniert nun auf TS-Level soweit, dürfte aber eher inperformant sein, da ich die Packets hin und zurückkopieren muss.
Native-Methoden dürften effizienter sein.
Für PES Level Scrambling weiß ich noch nicht wie das genau realisiert wird, da fehlen mir auch die Beispiele. wäre schön wenn mir da jemand weiterhelfen könnte.
Allerdings sollte das im normalen TV nicht vorkommen, da es nicht für "Consumer Electronic applications" vorgesehen ist.

Mediaportal wäre nun das nächste Projekt, da muss ich mich aber erstmal einlesen. Puh.

Nachtrag 27.11.
Mediaportal ist ein Ding der Unmöglichkeit. Erstmal auf Eis gelegt, da ich das nicht testen kann.
Außerdem habe ich nach einiger Recherche aufgegeben Infos zu finden, wie ich den Stream manipulieren kann, was beim descrambling ja nun mal erforderlich ist.
Satip RTSP bleibt mir da als einzige Möglichkeit den Empfang hinzubekommen.
Habe verschiedene Media-Player getestet, überall funktionieren die RTSP-Links, in Mediaportal passiert hingegen nur eins: "No Signal" bei der IPTV einrichtung.
Verschiedenste Variationen durchprobiert, MP1 als auch MP2. Nach 6! Stunden habe ich dann aufgegeben.

Ich werde nun alle weiteren Edits und Releases im 1. Post anhängen.
Falls ein Mod dies liest: Bitte gern den 1. Post des Threads auf jeder Seite oben anpinnen, sollte das ding hier über die Zeit länger werden, ist man stets sauber informiert. Danke.
 
Zuletzt bearbeitet:
Zurück
Oben