[vtuner-ng] Aktualisierter vtuner für kernel >= 4.16

  • >> Da ich keine Ahnung habe wie sich das berechnet mappe ich ss einfach von satip-ss 0-255 auf dvb-ss 0-65025 und bei satip-ber 0-15 auf dvb-ber 0-3825

    Bei SatIP hat die ja IMHO nicht so 'ne dolle Aussagekraft... Bei mir bekomme ich da immer 255 für SignalStrength und 15 für die Quality.

    satip spec Seite 39.


    Signal strength

    0 -> kein Empfang und keine Information zur Signalstärke verfügbar: "No signal corresponds to 0"

    1..255 -> sind umzurechnen in dBm: "-25dBm corresponds to 224 und -65dBm corresponds to 32"


    Signal quality

    "Lowest value corresponds to highest error rate

    The value 15 shall correspond to

    -a BER lower than 2x10 -4 after Viterbi for DVB-S

    -a PER lower than 10 -7 for DVB-S2"



    Code
    sig.strength.stat[1].u.svalue = (signallevel >= 0) ? 40.0 * (signallevel - 32)/ 192 - 65 : 0;

    signallevel ist *immer* größer gleich Null, da 0..255. Das sollte wohl mal (signallevel > 0) heißen.

    Aber selbst dann ist die Zuweisung fragwürdig, da '0' bedeutet, dass der Server keine Signal sieht und keine Information zur Signalstärke hat. Auf der anderen Seite sind 0 dBm ein RIESIGER Wert, der jeden tuner überfordern würde und in der Praxis nicht auftritt.


    Die Division mit 192 als Integer schneidet die Nachkomma Stellen ab, das sollte wohl eher 192.0 (double) werden und 65.0 anstelle von 65 erspart einen impliziten type cast.

  • Code
    -       sig.strength.stat[0].u.svalue = (signallevel >= 0) ? 40.0 * (signallevel - 32)/ 192 - 65 : 0;
    +       sig.strength.stat[1].u.svalue = (signallevel >= 0) ? 40.0 * (signallevel - 32)/ 192 - 65 : 0;
            // signallevel 0-255, range 0-65535     
    -       sig.strength.stat[1].u.uvalue = signallevel * 257;
    +       sig.strength.stat[0].u.uvalue = signallevel * 257;

    so nur mit diesen Änderungen sieht es hier jetzt im femon-Plugin richtig aus (STR - dBm)

    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • "Super Plugin, das femon" ;( - Ist also irgendwie nicht in der Lage SCALE_RELATIVE auf Position 1 zu nehmen und SCALE_DECIBEL auf Position 0??

    Oder verstehe ich da was falsch?


    Also ich habs mal so geändert: RELATIVE auf 0, sowohl für strength und cnr und bei strength DECIBEL auf 1...

  • satip_rtp.c


    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • sig.strength.stat[0].scale = VT_SCALE_DECIBEL;
    sig.strength.stat[1].u.svalue = (signallevel >= 0) ? 40.0 * (signallevel - 32)/ 192 - 65 : 0;
    sig.strength.stat[1].scale = VT_SCALE_RELATIVE;
    // signallevel 0-255, range 0-65535
    sig.strength.stat[0].u.uvalue = signallevel * 257;

    Echt? Das kann doch nicht passen? Dieses Signalstärken-Vodoo macht mich noch ganz fertig! :/


    Laut DVB-API wird svalue für DECIBEL verwendet für alles andere der uvalue:

  • The value 15 shall correspond to

    -a BER lower than 2x10 -4 after Viterbi for DVB-S

    -a PER lower than 10 -7 for DVB-S2"

    Quality sollwohl cnr/snr sein? Wie kriege ich das z.B. in dB?

    signallevel ist *immer* größer gleich Null, da 0..255. Das sollte wohl mal (signallevel > 0) heißen.

    Aber selbst dann ist die Zuweisung fragwürdig, da '0' bedeutet, dass der Server keine Signal sieht und keine Information zur Signalstärke hat. Auf der anderen Seite sind 0 dBm ein RIESIGER Wert, der jeden tuner überfordern würde und in der Praxis nicht auftritt.

    Aha, und besser wäre?

    Die Division mit 192 als Integer schneidet die Nachkomma Stellen ab, das sollte wohl eher 192.0 (double) werden und 65.0 anstelle von 65 erspart einen impliziten type cast.

    Äh, svalue ist ein s64 und kein double... ... aber mir ist gerade folgendes aufgefallen:

    Code
     * @svalue:
     *    integer value of the measure, for %FE_SCALE_DECIBEL,
     *    used for dB measures. The unit is 0.001 dB.

    Da fehlt bei mir noch ein *1000

  • Oha, das femon-Plugin ist ja ganz unschuldig :saint:


    Der gute vdr erwartet tatsächlich für Strength und CNR an Stelle "0" (stat[0]) einen Decibel-Wert:

    Code
          switch (Props[i].u.st.stat[0].scale) {
              case FE_SCALE_DECIBEL:  *Strength = double(Props[i].u.st.stat[0].svalue) / 1000;
                                      Valid |= DTV_STAT_VALID_STRENGTH;
                                      break;
              default: ;
              }
            }

    Obwohl ich in der DVB-API keinen Hinweis gefunden habe das das so sein muss....


    Fehlt mir noch die Umrechung von 0-15 auf Dezibel-Werte...

  • Also ich hab' was gepushed ... sieht nun so aus:

    Code
    220 server SVDRP VideoDiskRecorder 2.6.4; Sat Dec 30 12:29:31 2023; UTF-8
    900-CARD:0
    900-STRG:100
    900-QUAL:100
    900-TYPE:DVB-S
    900-NAME:vTuner proxyFE DVB-Multi
    900-STAT:001F
    900-SGNL:-18.54
    900 CHAN:RTL Television;RTL Deutschland:12188:HC34M2S0:S19.2E:27500:163=2:104=deu@3;106=deu@106:105;110=deu:0:12003:1:1089:0
    221 server closing connection

    Wenn ich einen Platzhalter für den cnr-Decibelwert anlege und den Relativwert auf stat[1] lege dann wird Quality plötzlich 0 :huh:

  • Ok habe ich mal so übernommen


    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • Aha, und besser wäre?

    FE_SCALE_NOT_AVAILABLE - The parameter is supported by the
    frontend, but it was not possible to collect it (could be a
    transitory
    or permanent condition)

  • Verständnisfrage: adapter0 und adapter1 werden bei mir von Sundtek Sticks erzeugt.

    Ein modprobe vtunerc devices=6 füllt das auf insgesamt 6 adapter auf. Die ersten beiden werden also "überschrieben" oder übersprungen. Ich würde vermuten, dass eigentlich adapter2 bis adapter7 angelegt werden sollten, bei Nr. 5 ist aber Schluss. Übersehe ich was?

  • Ich schau dann nochmal, meine aber, dass der VDR im log frontend0 und frontend1 den Sundteks zugeordnet hat und 2-5 dem vtuner. Ich habe ja nur 6 frontends trotz devices=6. So stands zumindest im log.

    Bei den sundteks bin ich mir nicht mehr sicher, wie das ganze läuft, aber an ein LD_PRELOAD kann ich micht nicht erinnern. Da läuft die media...irgendwas im Hintergrund.

  • Also, egal wen ich vorher starte... Sundtek schnappt sich die beiden ersten frontends...


    vdr startet mit dem LD_PRELOAD für die sundteks. vtunerc ist mit 6 devices geladen und mit satip sind die 6 devices zugewiesen. Am Ende hätte ich gerne 8 tuner ;)

  • Danke, so klappts. Top wärs, wenn jeder Treiber, der adapter erzeugt, auf die bereits vorhandenen automatisch Rücksicht nimmt. Ein ganz kurzer Blick führt micht zu https://github.com/joed74/vtun…kernel/vtunerc_main.c#L37 bzw. zu https://elixir.bootlin.com/lin…nclude/media/dvbdev.h#L70 und ich weiß nicht, ob das so einfach gemacht werden kann.

    Jedenfalls sind jetzt 8 Tuner da. Auch wenn ich die nicht brauche ;)

  • Top wärs, wenn jeder Treiber, der adapter erzeugt, auf die bereits vorhandenen automatisch Rücksicht nimmt

    Also im vtuner ist das so, entweder immer nächsten freien im dvbcore (!) oder mit adapter_nr explizit was vorgeben. Mir scheint das der Sundtek-Treiber schon belegte Slots ignoriert…

  • Müsste vtunerc bei devices=4 die adapter2-5 anlegen, wenn 0 und 1 schon vorhanden sind? Das macht es nämlich nicht. Mit adapter_nr=2,3,4,5 dann schon.

  • OK, verstanden.


    Ich habe vtuner jetzt auf meinem Server und auf den VDRSternELEC Clients drauf. Kein streamdev mehr und kein satip-Plugin.

    Installation war problemlos bis auf den o.g. Punkt. Zabrimus Das wäre auch die Rückmeldung an dich, dass die Integration in VDRSternELEC funktioniert, zumindest was LE betrifft ;)

    Gefühlt ist das Umschalten der Clients merklich schneller, würde ich sagen. Das wollte ich wissen. Der Praxistest wird zeigen, ob Probleme kommen, aber das sieht schon mal alles sehr gut aus. Danke!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!