Giter VIP home page Giter VIP logo

dvbnet-ubuntu-server's Introduction

Bei diesem Projekt handelt es sich um das Gegenstück zu dem DVB.NET Provider, das es erlaubt, über ein einfaches TCP/IP Protokoll auf DVB-S2 Geräte zuzugreifen, die an einen Ubuntu 18.04 System angeschlossen sind. Die Implementierung ist sehr einfach gehalten, aber für die in VCR.NET benötigten Funktionaliäten weitgehend ausreichend - lediglich Entschlüsselung und Signalinformationen werden nicht unterstützt. Getestet wurde bisher auch nur die Verwendung der Technotrend USB Geräte S2-4600 und S2-3600 - mindestens die S2-4600 kann seit dem Update 1809 unter Windows 10 nicht mehr stabil betrieben werden.

Zum Zugriff auf die DVB Geräte wird die Digital TV API von Linux verwendet - verglichen mit Windows BDA eine sehr intuitive und einfach verständliche Schnittstelle, grob äquivalent zur proprieträen TechnoTrend Schnittstelle für die S-2300 Premium Line. Von der Linux Schnittstelle wird allerdings wiederrum nur einige elementare Funktionen genutzt und der Demultiplex nicht verwendet: vielmehr wird über den PID 0x2000 der gesamte Transport Stream ausgelesen und im eigenen Code zerlegt.

Beim Starten der Anwendung (dvb_proxy) ermittelt diese alle verfügbaren DVB Geräten (via /dev/dvb) - zurzeit wird dabei nicht zwischen DVB-S/C/T unterschieden und von DVB-S2 Geräten ausgegangen, das liesse ich bei Bedarf natürlich leicht ergänzen. Die Anwendung geht von einer exklusiven Nutzung der auf dem System verfügbaren Geräten aus.

Zur Anwendung kann eine TCP/IP Verbindung aufgebaut und eine der verfügbaren Karten reserviert werden. Diese Reservierung bleibt bis zum Beenden der Verbindung aufrecht erhalten. Der Aufrufer kann nach dem Tunen des Gerätes auf einen DVB-S2 Transponder auswählen, welche Teildatenströme (PIDs) des Transport Streams über den TCP/IP Kanal an ihn übertragen werden sollen. Unmittelbar nach dem Tunen werden keine Daten gesendet, danach können beliebige Teildatenströme aktiviert und deaktiviert werden. Das Ergebnis ist dann wieder ein Transport Stream.

Die aktuelle Implementierung ist bewußt (größtenteils einem geringen Zeitbudget geschuldet) einfach gehalten. Ein Beispiel ist der Tuning Vorgang: hier wir die Transponderinformation einfach an das Gerät gesendet und dann eine Zwangspause von zwei Sekunden eingelegt - das sollte ein Aufrufer natürlich wissen. Das Signal wird nicht ausgewertet - hier ist also noch gut Luft nach oben. Auch wurde auf ein Request / Response Muster verzichtet: alle Befehle an die Anwendung senden keine Bestätigung. Dadurch konnte in dieser ersten Version der Antwortdatenstrom durch die Reduktion auf einen echten Transport Stream deutlich vereinfacht werden. Hier lassen sich durchaus integrative Ansätze vorstellen - etwa eine reservierte PID für einen Rückkanal mit einem darin gekapselten prorietären Protokoll. Auch Sicherheit ist noch kein Thema, hier wäre es aber vermutlich einfacher auf Firewall Einstellungen zurück zu greifen.

Im Verzeichnis ubuntu1804x64 finden man neben der Anwendung auch einen Vorschlag für ein verzögertes Starten (als Script) beim Hochfahren des System (als /etc/crontab Zeile).

Auch wenn die Anwendung für einen bestimmten Zweck in einem sehr engene Einsatzrahmen entstanden ist könnte ich mir vorstellen, dass durch die Einfachheit des Protokoll auch andere Nutzungsszenarien in Betracht kommen könnten.

dvbnet-ubuntu-server's People

Contributors

jms-1 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.