Wie man die SNR-Ausgabe von % in dB umwandelt (26.04.2008: neue Version)

  • Die Anleitung gilt für alle Dreamboxen die einen DVB-S Tuner mit einem STV0299B-Chip (also für die meisten Satelliten-Dreamboxen) haben.
    Teil 1
    Zuerst bauen wir den Satfinder um (geht am schnellsten).
    In der Datei satfind.cpp ist folgendes zu finden


    Für die Ausgabe in dB sieht die Funktion so aus:


    Wozu ist das nun gut?
    Na ganz einfach, die Werte entsprechen jetzt genau dennen die man mit einen Profimessgerät (damit misst man Profis :winking_face: ) zB. MSK33 auch erhält. Mit 0.1dB Auflösung kann man einen Spiegel wirklich genau ausrichten.
    Ausserdem ist die Balkenanzeige jetzt aussagekräftiger. Wer weis den schon wieso man kein Bild bekommt, obwohl "50%" SNR da ist, und überhaupt von was hat man den da 50%.
    So nun noch ein paar Tips zu den dB-Werten:


    <-1dB da ist igendwas oberfaul (!!! Kabel, LNB und Multischalter prüfen !!!), mit angeschlossenem LNB sollten es mindestens 0dB sein, auch wenn der Spiegel noch nicht auf den Satelliten ausgerichtet ist
    -1dB ... 5dB Signal zu schwach
    5... 7dB schwaches Signal, neigt zu Klötzchenbildung
    >7dB sollte ohne Probleme zu empfangen sein.


    Mit meiner Antenne bekomme ich auf Astra ARD 11.836GHz ca. 10.7 dB, den Maximalwert von 19.2dB bekommt man wahrscheinlich nur im Meßlabor zu Weihnachten.


    Wie man die dB-Ausgabe in der den Menüs der Sendersuche ändert folgt morgen in Teil 2.


    Teil 2
    Heute sind die SNR-Werte für manuelle und automatische Sendersuche drann:
    In der Datei enigma_main.cpp ist die Funktion eZapMain::showSNR() wie folgt zu änder:


    Originalcode


    Auf dB umgeschriebener Code


    Bei der Gelegenheit sollte auch gleich die Zeile 4132 geändert werden, weil durch die "hardgecodeten" Umlaute einige Editoren aus dem konzept gebracht werden (z.B KDevelop). Um das zu umgehen werden einfach die ASCII-Codes im Oktalcode als Steuerzeichen an den String übergeben.
    So sollte die Zeile aussehen

    Code
    TextEditWindow wnd(_("Enter new Filename:"),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 -_\344\366\374\304\326\334");


    Originalcode


    Auf dB umgeschriebener Code


    Ebenfalls in der Datei enigma_dyn.cpp in der Funktion eString getBoxStatus(eString format) die Zeile

    Code
    result.strReplace("#SNR#", eString().sprintf("%d", fe->SNR() * 100 / 65535));


    suchen (das ist etwa die 2620. Zeile) und austauschen gegen

    Code
    result.strReplace("#SNR#", eString().sprintf("% 2.1f dB", (fe->SNR()-39075)/1764.7));


    In der Datei enigma_dyn_xml.cpp machen wir das gleiche mit der Zeile 484 nochmal.


    Nun noch in der Datei dvbwidgets.cpp die Funktion FEStatusWidget::update() bearbeiten
    Originalcode


    Auf dB umgeschriebener Code


    Wenn in der Anzeige die Buchstaben von"dB" oben abgeschnitten werden, dann ist in der jewiligen Skin-Datei im Objekt "eFEStatusWidget" die Ausgabehöhe für das eLable "snr_num" um 2 zu erhöhen.
    Für default.esml sieht das so aus (ca. Zeile 671):


    Original

    Code
    <eLabel name="snr_num" position="310:0" size="80:15" font="eFEStatus.values" vcenter="on" align="right" />


    Für dB-Ausgabe

    Code
    <eLabel name="snr_num" position="310:0" size="80:17" font="eFEStatus.values" vcenter="on" align="right" />


    So, das wärs. Wenn ich nichts übersehen habe müsste jetzt überall das SNR in dB ausgegeben werden.


    Und nun noch ein kleiner Bugfix in der Manuellen Sendersuche:
    Wenn man im Menü der Manuellen Sendersuche ist, sich einen Transponder ausgewählt hat und LOCK sowie SYNCK ok sind und nun für ca. 10 Sekunden das Satellitensignal unterbricht (Hand vor's LNB halten oder Kabel abziehen), dann wird in den meisten Fällen, wenn das Signal wieder zu empfangen sein sollte LOCK und SYNC nicht gefunden werden.
    Der eigendliche Grund dafür ist der nicht besonders clever programmierte Tunertreiber (zB. könnte der Fangbereich der AFC +/-6 MHz betragen und nicht nur die jetzigen +/-3MHz,(bitte nicht mit dem Haltebereich verwechseln oder der dynamischen Anpassung der Tunerfrequenz)), besonders die Eigenheiten des Derotators, wenn kein Signal da ist oder [Gottheit ihrer Wahl einsetzen] bewahre, gar die "magische" 3MHz-Grenze überschritten wird.


    Mit viel Aufwand muß ENIGMA abfragen ob mit dem Signal und dem Tuner alles ok ist, das wäre alles Sache des Tunertreibers und würde automatisch erfolgen. Nun dem ist aber nicht so, deswegen gibt es die
    in der Datei frontend.cpp die folgende Funktion (die einen kleinen Fehler hat).
    Original


    So funktioniert die Behandlung der Signalunterbrechungbei "Manueller Sendersuche"


    !!!Auf eigene Gefahr!!! Und NUR für CVS-Image!!!
    Einfachhalber hab ich mal meine enigma Datei hier angehängt. Wenn ihr ein CVS-Image verwendet, sollte ein einfacher Test möglich sein.
    So geht's:
    1. FTP-Verbindung zu Box herstellen
    2. die Datei usr/bin/enigma sichern (das ist euer Original und kann später wieder auf die Box)
    3. Über Telnet init4 und dann killall enigma eingeben (das init4 verhindert, dass enigma nach dem killall-Befehl automatisch neu gestartet wird)
    4. das entpackte enigma nach usr/bin kopieren und s das Original ersetzten (ihr habt doch hoffentlich Punkt 2 ausgefüht => Sicherheitskopie)
    5. Über Telnet enigma starten


    Auf die gleiche Weise kann später das Original zurückkopiert werden.


    (Behauptungen, dass der enthaltene Bundestrojaner mitzählt wie oft und wie lange ihr die feindlichen Teletubbis klotzt sind natürlich vollkommen wahr :smiling_face_with_sunglasses: )


    Ich haben fertig.


    viel Spaß,
    adenin


    PS: alle Dateien befinden sich im Archiv apps.tuxbox.enigma_cvs.tuxbox.org_20070327.tar.gz in eurem CVS sources Verzeichnis


    Ah, und zu guterletzt:
    Dieser Text enthält garantiert irgendwelche Fehler. Wenn es was schwerwiegendes ist, bitte melden.


    Teil 3 (13.05.2007)
    Ich haben doch noch nicht fertig.
    Nun hab ich mein erstes Plugin geschrieben, oder besser gesagt zusammengeklaut. Genaugennommen handelt es sich um den enigma-eigene Satfinder, den ich allerding modifiziert habe.
    1. die SNR-Ausgabe ist in dB (das war ja der Sinn der Sache)
    2. Bug beseitigt: wenn eine Listbox geöffnet wird (Sat- oder Transponder-Auswahl), und der BER-Wert ändert sich, dann wird im Original-Satfinder die Liste gnadenlos überschrieben, so das man deren Einträge nicht mehr lesen kann. Tipp an die Entwickler: macht doch einfach ein updateTimer.stop(), wenn eine Listbox bzw. eComboBox selected ist.


    Einfach die das Plugin adenin-Satfinder.ipk installieren
    viel Spaß.


    [EDIT 20070515]
    adenin_Satfinder_20070515:
    Bug beim reaktivieren der Messung nach verlassen der Satelliten- bzw. Transponderliste über EXIT-Taste beseitigt.
    [EDIT 20070519]
    - Anzeige der tatsächlich im Tuner eingestellten Frequenz
    - Anzeige des LNB-Offset
    - nach verlassen des Plugin wird der vor Benutzung des Satfinder eingestellte Sender wieder hergestellt
    -Install für Gemini (Bug: Deinstallscript deinstaliert (noch) nicht, aber wer will das schon :winking_face: )
    [EDIT 20070609]
    -Soundausgabe

  • big thx :D:D:D


    jetzt muss man nur ein plugin draus machen,
    später dann in gemini integrieren :winking_face:



    Zitat

    Wer weis den schon wieso man kein Bild bekommt, obwohl "50%" SNR da ist, und überhaupt von was hat man den da 50%.


    genau so sehe ich auch, bei billig receivern ist es sogar bei 30-40% bild da.


    mit db kann man schon etwas anfangen.


    nochmal danke :winking_face:

  • Ja, das sollte sich machen lassen.
    Allerdings wird in Teil 2 auch ein kleiner Bug in der Sendersuche von Enigma1 beseitigt werden.

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

  • Wo find denn die Datei satfind.cpp?

    T90 mit 28,2°O; 23,5°O; 19,2°O; 16°O; 13°O; 7°O; 5°O; 1°W; 4°&5°W, 15°W

  • Und wie kann ich das im Gemini ändern?

    T90 mit 28,2°O; 23,5°O; 19,2°O; 16°O; 13°O; 7°O; 5°O; 1°W; 4°&5°W, 15°W

  • Das kann nur das Gemini-Team.
    Vieleicht bauen sie es ja ein, möglichst mit 'ner Umschaltmöglichkeit zwischen alter %-Anzeige und der dB-Anzeige

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

  • Hallo adenin,


    vielen Dank für Deinen Beitrag, funktioniert alles bestens :)
    Welches Register im STV0299B muss ich wie setzen, um den AFC-Fangbereich zu vergrößern?

  • @ Hein Holz
    Tja,
    im Moment kann man den Tuner nur über die Funktionen ansprechen, die die head.ko bereithält, und ein direkter Zugriff auf die Register ist so, wie man ihn benötigt, nicht vorgesehen. Aber ich arbeite daran, mich zwischen head.ko und Tuner dazwischen zu zwängen, um ihn (den Tuner) in meine Gewalt zu bringen. Das dauert aber noch ein bischen.


    @all
    Im ersten Beitrag hab ich ein Satfinder-Plugin angehängt (s. Teil 3)


    beste Grüße
    adenin

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

    Einmal editiert, zuletzt von adenin ()

  • Hallo adenin,


    In der angefügten Datei findest Du ein Beispiel, wie man die Register des STV0299B am Treiber vorbei programmieren kann. Es ist ein verändertes Satfinder-Plugin für das LCD-Display der DM7020.


    Ich habe dieses Plugin mal geschrieben, um die AGC1-Referenz zu verändern. Ich habe nämlich eine DM7020 mit Philips-Tuner. Der ist leider sehr anfällig für Intermodulation.


    Ganz nebenbei konnte ich damit auch die QPSK-Fehlerrate zur Anzeige bringen. Die QPSK-Fehlerrate eignet sich noch besser als die SNR zur Berurteilung der Empfangsqualität. Die Fehlerrate steigt nämlich bei Intermodulation, ungenügender Dämpfung der anderen Polarisation oder Störsignalen vom Nachbarsatelliten stark an. In der SNR macht sich das kaum bemerkbar.

  • Zitat

    Original von adenin
    Das kann nur das Gemini-Team.
    Vieleicht bauen sie es ja ein, möglichst mit 'ner Umschaltmöglichkeit zwischen alter %-Anzeige und der dB-Anzeige


    Das wäre mal wirklich ne feine Sache *schonDraufFreu*

    .:Multytenne Twin & KabelBW | 2xDM500HD - USB - Sundtek DVB-C:.


    $ mount /dev/brain /head
    mount: mounting /dev/brain on /head failed: /dev/brain not found

  • Hein Holz
    Wow, danke, ich werde mir die Sache sofort ansehen.
    Allerdings sind da immernoch mindestens zwei Probleme:
    1. daß die AFC der head.ko dazwischen funkt, weil die auch den Derotator im Auge behält, aber leider nicht alles kann
    2. die Ersatz-AFC-Routine immer aktiv sein muss (zumindest, wenn kein Lock da ist), um dem Derotator unter die Arme zu greifen (oder genauer: in den Ar*** zu treten), sobald es nötig ist. Herzschrittmacher wäre ein 100%ig guter Vergleich dazu.


    Zitat

    Ganz nebenbei konnte ich damit auch die QPSK-Fehlerrate zur Anzeige bringen. Die QPSK-Fehlerrate eignet sich noch besser als die SNR zur Berurteilung der Empfangsqualität. Die Fehlerrate steigt nämlich bei Intermodulation, ungenügender Dämpfung der anderen Polarisation oder Störsignalen vom Nachbarsatelliten stark an. In der SNR macht sich das kaum bemerkbar.

    Das kann ich nicht glauben. Sobald irgendwas die Signale stört, merkt man das eindeutig am SNR.


    Aaaaha, soso, ähnliche Umrechnungsformel für dB. :respekt:
    Die folgende Zeile ist allerdings ist nich das gelbe von der Zitrone

    Code
    if((signal_data->status&FE_HAS_LOCK) == 0) signal_data->snr = 0;

    weil Du ein Lock erst ab ca. 5dB erwarten kannst (zumindest bei Alps-BSBE1-7xx). Streich sie am besten. Außerdem sind auch negative dB-Werte sinnvoll (nur nicht für die Balkenanzeige).

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

  • adenin


    Zitat:
    "Wow, danke, ich werde mir die Sache sofort ansehen.
    Allerdings sind da immernoch mindestens zwei Probleme:
    1. daß die AFC der head.ko dazwischen funkt, weil die auch den Derotator im Auge behält, aber leider nicht alles kann
    2. die Ersatz-AFC-Routine immer aktiv sein muss (zumindest, wenn kein Lock da ist), um dem Derotator unter die Arme zu greifen (oder genauer: in den Ar*** zu treten), sobald es nötig ist. Herzschrittmacher wäre ein 100%ig guter Vergleich dazu."


    Probieren geht über Studieren!


    Zitat:
    "Ganz nebenbei konnte ich damit auch die QPSK-Fehlerrate zur Anzeige bringen. Die QPSK-Fehlerrate eignet sich noch besser als die SNR zur Berurteilung der Empfangsqualität. Die Fehlerrate steigt nämlich bei Intermodulation, ungenügender Dämpfung der anderen Polarisation oder Störsignalen vom Nachbarsatelliten stark an. In der SNR macht sich das kaum bemerkbar.
    Das kann ich nicht glauben. Sobald irgendwas die Signale stört, merkt man das eindeutig am SNR."


    Theoretisch ja, praktisch kann der Chip Interferenzen nicht vom Nutzsignal unterscheiden. Die SNR-Anzeige ist nur dann zuverlässig, wenn das Wärmerauschen das einzige Störsignal ist.


    Zitat:
    "Die folgende Zeile ist allerdings ist nich das gelbe von der Zitrone
    if((signal_data->status&FE_HAS_LOCK) == 0) signal_data->snr = 0;"


    Die meisten Sat-Receiver, die ich kenne, schalten ihre Qualitäts- oder SNR-Anzeige auf 0, sobald kein Empfang mehr möglich ist.
    Nur bei der Dreambox bleibt die Anzeige dann bei etwa 50% stehen.


    Zitat:
    "Außerdem sind auch negative dB-Werte sinnvoll (nur nicht für die Balkenanzeige)."


    Welchen Sinn hat ein negativer dB-Wert ?

  • Hein Holz

    Zitat

    Welchen Sinn hat ein negativer dB-Wert ?


    SNR heist auf deutsch Signal-Rausch-Verhältnis, also das Verhätnis der Signalleistung zur Rauschleistung. Sind beide gleich groß, so entspricht das 0dB. Eine Verdopplung der Signalleistung bei gleich bleibender Rauschleistung erhöht das SNR um 3dB (man kann auch die Rauschleisung halbieren und Signalleisung beibehalten, das sind logischerweise auch 3dB mehr), eine Halbierung der Signalleistung vermindertes das SNR um 3dB. Wenn der Tuner dir meldet -6dB dann ist die Signalleisung 4 mal kleiner als die Rauschleistung.
    Bei wikipedia wird das näher erklärt:
    Wikipedia SNR
    Wenn du tatsächlich einen Wert kleiner -1dB erhälst, dann ist was nicht ok. Entweder liefert der Receiver keine Spannung zum LNB, oder das Kabel ist defekt oä. Mach einfach mal das Satkabel ab, und schau dir das SNR an.


    Ich hab heute mit der Oszilatorfrequenz vom LNB gespielt und mir das Verhalten meiner 600er angeschaut
    Ergebnis:
    Sie fäng mit +/- 6MHz, wieso das so gut geht weiss ich noch nicht, in der head.ko hab ich bis jetzt nichts finden können, das sie das dazu befähigt (vieleicht wird die TunerPLL um ein paar MHz variiert?). Und warum wird sie, wenn sie so gut ist, nur mit +/-3MHz spezifiziert?

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

  • Super Sache..


    kann das nich einer mal als Plugin fürs Gemini coden... ??


    wär ich sehr dankbar!!

    "Nichts ist so blöd wie es gekocht wird :) "

  • Du kanst dieses Plugin auch in Gemini benutzen. Einbindung erfolgt unter "Plugins (Tools)".

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook

  • also nach temp kopieren und installen?? oder wie...
    sorry für meine Unwissenheit :winking_face:

    "Nichts ist so blöd wie es gekocht wird :) "

  • Ok, hier für Anfänger
    1. Plugin nach tmp (auf der Box) kopieren
    2. blaue Taste einmal drücken
    3. ganz unten "Plugins (Tools)" auswählen
    und dann weiter wie bei Enigma
    4. "Itsy Package Management System" anwählen
    5. "available Packages [Feed: TEMP]"
    6. das "adenin-satfinder...blabla" anwählen und mit OK bestätigen
    es erscheint vor dem Namen ein Häckchen
    7. mit grüner Taste installieren
    8. mit EXIT aus allen Menüs rausgehen
    9. mit blauer Taste unter "Plugins (Tools)" wieder zu den Enigma-Plugins

    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorials sind für den Einstieg sehr empfehlenswert


    Nur wer die Weisheit mit Löffeln gefressen hat, kann auch klugscheißen. :klugscheiss:
    Alte asiatische Weisheit (wahrscheinlich Plagiat): Ohne Fleiß kein Scheiß. (Ich übernehme keine Garantie für Fehlerfreiheit der Übersetzung)
    "Alle großen Männer sind bescheiden." Gotthold Ephraim Lessing
    "Ich bin nur einsvierundsechzig"adenin
    "Es reicht nicht, Sachen falsch zu verstehen. Man muss sie richtig falsch verstehen."adenin
    "Friends: You Have 0 Friends"facebook



  • Enigma-Restart nicht vergessen :winking_face: