TunerSharing über LAN (vTuner)

  • Zitat

    Wie reagiert E² auf einen eingebunden vtuner? (kanns leider nicht testen, hab nur nohc ne DM500 mit E1)


    Die Kanalliste wird ja ausgegraut bei ner Aufname wo nur ein Tuner vorhanden ist, greift da schon vtuner und ist es dann Möglich normal zu Zappen?


    Also Clientseitig klappt das schon ganz gut, Enigma² denkt hier halt wirklich das du einen bzw zwei vollwertige Tuner eingebaut hast. Und auch Kanalliste usw. ist dann nix mehr grau bei einer Aufnahme. Alles so wie ich es von meiner DM7025 TwinTuner Box halt gewohnt bin. Der vTuner kann halt wie ein fest eingebauter Tuner benutzt werden und auch gehen Sachen wie SatFinder, Sendersuchlauf, BER/AGR Werte auslesen und all den Kram. Da wirste halt wie bei der DM7025 auch gefragt beim SatFinder oder Sendersuchlauf welchen Tuner du nun benutzen willst und da ist dann hier auch überall der vTuner drinne. Und ganz normales zappen ist natürlich möglich. Wenn der für die Aufnahme benötigte Tuner nicht zum zappen benutzt werden kann, wird's halt mit dem vTuner probiert. So wie meine DM7025 es auch mit ihrem 2ten Tuner machen würde.


    Also hier müsste man Clientseitig eigentlich nix mehr am Enigma² rumpatchen. Das klappt alles schon so wie es sein soll. Abgesehen natürlich von der bereits erwähnten fehlerhaften TS Wiedergabe, was wohl nur in den Treibern gefixt werden könnte. Da müssen wir aber fleissig betteln für :)


    Problematischer halt wie gesagt auf der Serverbox. Da weiss Enigma nicht wenn z.B. gerade der Tuner von ner anderen Box benutzt wird. Das könnte dann auf der Serverbox beim zappen oder aufnehmen zu problemen führen weil der Tuner halt nicht verfügbar ist. Hier müsste man Enigma² auf der Serverbox halt definitiv mitteilen das der Tuner gerade "belegt" ist und für Aufnahmen oder so wenn möglich dieser Tuner nicht benutzt wird. So wie es halt zum Beispiel beim streamen über's WebIf funktioniert, da weiss Enigma² dann bescheid das der Tuner gerade fürs streamen benutzt wird und nutzt diesen nicht für Aufnahmen usw.


    Damit das serverseitig auch perfekt funktioniert alles, kommen wir wohl nicht um E2 patcherei rum :frowning_face:


    Na gut, bei mir wiederrum nicht wirklich ein Problem. Den 2ten Tuner von meiner DM7025 brauch ich eh nicht (Schlafzimmerbox), daher hab ich dort den Tuner einfach in den Settings auf "nichts angeschlossen" eingestellt. So hab ich halt nur einen Tuner in der DM7025 jetzt, aber dafür 2 in meiner DM800 (wohnzimmer box; da ist das wichtiger) :)

  • Das klingt sehr vielversprechend!
    Bei der Serverbox müßte sich das Verhalten einer Singeltunerbox einstellen, wenn der Tuner benötigt wird.
    "daher hab ich dort den Tuner einfach in den Settings auf "nichts angeschlossen" eingestellt" wird genau das tun...


    Was toll ist, dass der 2te vTuner softwaremäßig voll nutzbar ist.
    Würde man jedesmal Clientseitig irgendwelche .py patchen müssen, wär das mühsam und vermutlich nicht sonderlich stabil.


    Auf den Punkt gebracht, bringt man vtuner dazu, weniger Rechenleistung zu benötigen und ungenutzt die TS-Abspielmöglichkeit freizugeben. Hat man ne vollwertige Twintunerbox.

  • Was mir grade noch einfällt bezüglich der kaputten TS Abspiel funktion.


    Mit ein paar ganz wenig Zeilen im Python-Code könnte man da eventuell einen Dirty Workaround basteln.


    Man könnte es z.B. machen das beim betreten der Movieliste der vTuner beendet wird und beim verlassen der Movieliste der vTuner wieder gestartet wird. Dann sollte die TS Wiedergabe wieder funktionieren, zumindest wenn man es über die Movieliste (Video-Taste) macht.


    Is zwar dirty und auch nicht die perfekte Lösung, aber wir könnten erstmal auch wieder TS Wiedergabe nutzen. Problematisch wird's halt dann wieder wenn z.B. ne TimerAufnahme startet oder man während der TS Wiedergabe nen Sendersuchlauf oder so machen will mit dem Tuner, dann würde Enigma² wieder freezen, aber so als dirty workaround doch sicher eine Option !?


    Das wären nur 3-4 Zeilen Python Code in der Movielist

  • na ja man müsste evt. auch das streaminginterface als hintereingang ins enigma2 benutzen können, um dem enigma2 ordenungsgemäß zu sagen das der tuner gerade benutzt wird


    beim orwell mach ich das ja auch so um den transponderstream in eine aufnahme zu klauen. Musst dir mal das streamprocy.c ansehen wie das dort abläuft, den codeteil kann man auch im vtuner einbauen, das problem ist 'nur' die richtigen parameter zu übergeben.


    LG
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • streamproxy.c is quasi vtunerd :)


    Da hat der tmbinc fürn vtuner server schon fleissig vom streamproxy kopiert. Ein grossteil der Codezeilen sind 100% identisch. Ganze Funktionen sogar :)


    Die Idee hat ich nämlich auch schon :) Bis mich Ghost daran erinnerte das ja streamproxy quasi von enigma aufgerufen wird und enigma² vorher schon den passenden Tuner usw. sucht und damit dann den streamproxy aufruft mit den richtigen parametern. Also zumindest in der streamproxy datei wird man nix finden, enigma² markiert den Tuner irgendwo anders als "busy". Wäre ja auch zu leicht gewesen.

  • ich sagte ja das es mit den parametern im streamproxy ein problem gibt - im Orwell war das aber leicht zu lösen, mit ein bischen wget aufs webif was gerade löuft hast ud alles was du benötigst.


    Und im vtuner eigentlich auch - muss halt in die komische schnittstelle vom stremaproxy umformatiert werden.


    Und ja, mir ist der code auch bekannt vorgekommen :)


    Ganz recht hat Ghost also nicht, sonst würde orwell nicht funktionieren - kann dir gerne den code schicken wenn du vorher handschuhe anziehst - so schmutzig ist der - wobei ich eben auch ganze routinen aus dem screamproxy.c geklaut habe und einfach nur einen rungbuffer thread dem ich aus dem streamfile.c geklaut habe angeflanscht. Wenn man dort übrigens statt einem sharem memory rungbuffer ein file reinmachst kann man auch interessante sachen (wie zeitversetztes fernsehen ohne enigma2) damit machen, ich wollte nicht umsonst orwell mit dem vtuner code noch ein bischen pimpen weil es mir den webif abfrage code teilweise sparen würde.


    LG
    gutemine

    7 Mal editiert, zuletzt von gutemine ()

  • "TimerAufnahme startet oder man während der TS Wiedergabe nen Sendersuchlauf oder so machen will mit dem Tuner, dann würde Enigma² wieder freezen"


    Sendersuchlauf während TS-Wiedergaben, ich würd sagen, da hat derjenige einfach der vtuner will pech gehabt und muss darauf verzichten (was sicher nicht tragisch ist)


    Ne Timeraufnahme während der TS Wiedergabe müßte doch auch gehen, der eingebaute Tuner wäre doch dann frei und kann aufnehmen?


    Testen könnte man das mit der Movielist?
    Oder könnte man in den Client vtuner die Möglichkeit einbauen, das ts durchzuschleusen?

  • wenn du videos ansiehst wird eine spezielle sid verwendet, damit sollte man leicht den vtuner sagen können das er gerade pausiert, beim orwell habe ich das auch gelöst das er wenn du videos ansiehst die nicht nochmals aufnimmt.

    Einmal editiert, zuletzt von gutemine ()

  • im prinzip ja, das timing dürfte uns da aber einen Strich durch die Rechnung machen, denn der vTuner müsste ja beendet werden noch bevor man ne TS-Wiedergabe startet. Wenn die TS Wiedergabe schon läuft ist's schon zu spät, weil Enigma² checked das ja schon alles bevor die Wiedergabe startet :frowning_face:


    PS: Die Idee hat ich auch schon :) Aber wenn man dann wieder drüber nachdenkt, gehts halt wieder nicht ...


    ---------


    Zitat

    Testen könnte man das mit der Movielist?


    Ja aber wie gesagt, mega quick&dirty, aber ich hab's grad mal bei mir gemacht :)


    War'n ja nur 3 Zeilen Code in der MovieSelection.py Datei.


    Code
    # for vTuner
    import os
    
    
    # Stop vTuner Client
    os.system("killall vtunerc")
    
    
    # ReStart vTuner Client
    os.system("/usr/bin/vtunerc 192.168.178.20 &")


    Das mit der IP Adresse ist natürlich problematisch so (für euch) :)


    Ich häng mal einfach meine MovieSelection.py Datei hier an, dann könnt ihr euch die 3 Zeilen ja selber in eure reinbasteln und dabei noch die IP-Adresse ändern. Einfach die 3 "Vtuner"'s suchen ...


    Is halt Bastelstube hier :face_with_rolling_eyes:


    So wird halt beim öffnen der movielist vtuner beendet und beim verlassen wieder neugestartet. Quick & Dirty halt, aber hey ... ich kann wieder TS Filme gucken ohne rebooterei :)


    /usr/lib/enigma2/python/Screens/MovieSelection.py

  • na ja wenn wir gerade codespenden machen, so findet orwell raus ob gerade ein live TV oder eine aufnahme geguckt wird:


    system("wget http://127.0.0.1/web/subservices -O /tmp/services > /dev/null 2>&1");
    if ((webiffile=open("/tmp/services",O_RDONLY)) != -1)
    {
    read(webiffile,webifresp,sizeof(webifresp));
    dprintf("service: %s\n", webifresp);
    if ((srefstart=strstr(webifresp,"<e2servicereference>")) == 0)
    {
    dprintf("no current service reference\n");
    return 1;
    }
    if ((srefend=strstr(webifresp,"</e2servicereference>")) == 0)
    {
    dprintf("no current service reference\n");
    return 1;
    }
    sreflength=srefend-srefstart;
    strncpy(sref, srefstart+20,sreflength-20);
    sref[sreflength-20]='\0';
    dprintf("current servicereference: %s\n", sref);
    if (!strncmp(sref,"1:0:0:0:0:0:0:0:0:0:",20))
    {
    dprintf("no live service\n");
    return 0;
    }


    Insofern ist es nicht schwer auch von ausserhalb vom enigma2 mit c rauszufinden das gerade Tunerpause angesagt ist.


    Wenn in der serviceref 1:0:0:.... steht wird halt gerade eine aufnahme abgespielt - und das geht sogar remote wenn du statt 127:0:0:1 die IP der partnerbox nimmst. In python ist die suche nach dem 1:0:0... strng in der antwort vom webif sogar noch leichter zu machen.


    LG
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • Es bringt aber leider nix vTuner zu beenden wenn der Film schon läuft. Dann ist's schon zu spät! vTuner muss halt schon beendet werden bevor die TS Wiedergabe startet, sonst klappt das mit der TS Wiedergabe gar nicht erst und enigma² findet kein freies device für die wiedergabe.


    So würde sich vTuner halt beenden wenn ne TS Wiedergabe läuft, aber ich krieg ja gar keine ans laufen wenn vTuner läuft.


    Oder versteh ich grad was falsch?? :)

  • bist du sicher, ich muss das mal auf der 7025 ausprobieren, aber mangels 2. box ist das bei mir nur begrenzt möglich ?


    sobald du ein file zum abspielen auswählst sollte die 1:0:0:0... kommen und wenn dann der vtuner das device freigibt sollte doch ein zweites play ausreichen die sache in gang zu bringen. orwell polled ja auch nur alle paar sek das webif, und braucht daher auch seine zeit bis er auf einen sendungswechsel draufkommt und den tuner hergibt.


    Pobiers einfach aus was dir das webif liefert wenn du ein file absipelen willst und der vtuner noch läuft und dann stopp den vtuner und probier es nochmals abspielen, wenn das klappt kannst du meinen C code nehmen und evt sogar übers webif mit wget eine meldung aufs den TV zaubern 'tuner busy, try again' :winking_face:


    LG
    gutemine

    3 Mal editiert, zuletzt von gutemine ()

  • ja mit einem "2ten play" sollte es dann gehen, vorausgesetzt man hat lang genug gewartet bis das vTuner Binary es gechecked hat oder lässt dieses im Sekundentakt das WebIf zuhämmern.


    Fänd ich aber recht "unpraktikabel", da sind mir die 3 Zeilen Python Code in der Movielist lieber :face_with_rolling_eyes:


    Zuviel arbeit will ich da auch gar nicht reinstecken, weil's halt in den Treibern fixbar ist und es vielleicht irgendwann von DMM auch mal gefixt wird :face_with_rolling_eyes:

  • na ja schon, aber dann musst du das enigma2 patchen :)


    Und so schlecht wäre das nicht wenn der vtuner dameon sich dann rührt - du könntest übers webigs sogar fragen ob er exit machen soll (damit du es nochmals probieren kannst und dafür der client rausfliegt) oder ob er weiter laufen soll und du lasst das ts anschauen lieber.


    Eigentlich wäre das so logischer und sauberer zum benutzen als ihn einfach zu killen. Im Moment ist das eh noch egal, ich wollte ja nur drauf hinweise das Ghost zwar recht hat, man das aber nicht so eng sehen muss.


    Aber du hast schon recht, nicht umsonst wollte ich den teil vom vtuner in den orwell klauen und nicht umgekehrt, aber zuerst brauch ich mal eine 2. Dreambox - sonst ist das alles nur Theoretisiererei


    Schauen wir lieber mal ob wir das Permanent timershift noch ein bischen aufbohren können - das ist einfacher - und alles in python :)


    LG
    gutemine

    2 Mal editiert, zuletzt von gutemine ()

  • dann würde ich das aber glaube ich eher in nem python plugin machen was quasi im hintergund läuft und aktiv wird wenn man halt nen Movie schauen will und der vTuner aktiv ist. Da könnte man dann auch nen Popup direkt auf den TV geben oder sogar die TS wiedergabe automatisch neustarten vom plugin raus, nachdem es vtuner beendet hat. Habs halt auch nicht so mit C++ :face_with_rolling_eyes:


    Mir is erstmal wichtig die performanceprobleme und hohe CPU Last in den Griff zu kriegen. Damit bin ich schon mit meinen C++ Kenntnissen überfordert :) Aber das ist erstmal das wichtigste die hohe CPU Last und Ruckler/Aussetzer wegzukriegen.

  • "was quasi im hintergund läuft und aktiv wird wenn man halt nen Movie schauen will und der vTuner aktiv ist"
    Und vTuner erst startet, wenns nötig ist, bei laufender Aufnahme vom eingebauten Tuner oder für die Kanalsuche auf vTuner.

  • Eigentlich genau umgekehrt. Der vTuner muss leider die ganze Zeit laufen. Beim starten von Enigma² schaut die Box halt ob nur 1 oder mehrere Tuner eingebaut sind. Damit die ganzen TwinTuner Features aktiv werden muss halt von Anfang an der vTuner laufen. Und da das ganze in Enigma² nicht Plug'n'Player mässig gecoded ist, darf man den Tuner nicht einfach wegnehmen. Enigma² hat halt beim starten gesehen das 2 Tuner drin sind. Und wenn enigma² dann den vtuner benutzen will, du ihn aber "entfernt" hast, dann crasht enigma2 ganz böse. Es will halt dann den Tuner nutzen, aber der is nich mehr da! Geht halt nicht ohne reboot sonst, denn nur beim starten von enigma² schaut es wieviel Tuner da eingebaut sind. Es gab halt bisher nur steckbare tuner, die konnte man nicht im laufenden Betrieb ein- und ausbauen und es wird von Enigma halt einfach nicht unterstützt da Tuner im laufenden betrieb ein- oder auszubauen.


    Damit das ganze also einigermassen stabil läuft, muss vTuner die ganze Zeit aktiv sein. Ansonsten kommt Enigma² damit nicht klar.


    Natürlich sollte der vtuner client dann optimalerweise 0% CPU Last machen und vor sich hin idlen wenn's nix zu tun gibt. Und auch den Server nicht belästigen ...

  • Erstmal fettes Lob an euch alle. Das Ganze wird echt langsam was... :hurra:


    Kurze Frage:
    Mit diesem Quick&Dirty-Fix - ist es damit überhaupt noch möglich ZWEI Aufnahmen gleichzeitig, also eine über den internen und eine über den vTuner zu machen? Wenn ja, dann wäre es ja auf keinen Fall mehr möglich währendessen eine TS Wiedergabe zu starten, richtig?


    Denn ehrlich gesagt sind mir zwei Aufnahmen machen generell fast wichtiger als TV schauen während eine Aufnahme läuft (ich schau eh kaum LiveTV).


    Danke schonmal!


    Greets
    Zodac

  • im prinzip hast du recht, aktives tunermanagement ist immer besser als passiv was zu pollen. Und im python könnte man tuner die man hergeben mus auch leicht auf nicht angeschlossen ändern so das der server das device hergeben kann ohne die verbindung zu schließen und dem enigma2 wirklich was wegzunehmen was dann unweigerlich zum crash führt.


    Ich muss aber warten bis es bei mir zweite box gibt, vorher macht das keinen spass an sowas zu basteln, du warst ja auch erst motiviert als die 800er ins haus kahm.


    Und aufnehmen kannst du natürlich mit vtuner und dem eingebauten gleichzeitig - fürs enigma2 sieht er ja aus wie lokal, nur die zapping liste ist dann genauso wieder auf den transponder eingeschränkt.


    Und so viel weniger CPU Last wirst du da nicht zusammenbringen, auch bei mehreren streams siehst du ja was die CPU dadurch alles zu tun kriegt, aber da gibt es schon tricks wie mit nice und installieren des binaries im memory zu verhindern das sich die boxen gegenseitig niedermachen, selbst wenn man am code nicht viel optimieren kann.


    Mal sehen, kommt zeit, kommt box, kommt vtuner spielereie - jedenfalls bei mir :winking_face:


    LG
    gutemine

    Einmal editiert, zuletzt von gutemine ()