gelöst [yavdr ansible focal] vdr-plugin-delsys dual Tuner Konfig

  • Moin,

    meine Empfangssituation soll ein Tuner Mischbetrieb (DVB-T2 / DVB-C) werden. Nach Verständnisfrage letztes Jahr, ist mir klar, es geht aktuell nur per vdr-plugin-delsys.

    Die eingesetzten USB Tuner haben jeweils zwei Tuner. Bedeutet, das Plugin braucht eine angepasste Konfiguration -> 2x DVB-T2 und 2x DVB-C

    Wie kann ich in meiner yavdr ansible Installation das Plugin richtig übersetzen? Oder macht es eventl. auch Sinn ein vorkonfiguriertes vdr-plugin-delsys-dualTuner bereitzustellen?

    Danke

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • es geht aktuell nur per vdr-plugin-delsys.

    Alternativ müsste auch das vdr-plugin-dynamite funktionieren, falls sich das mit den anderen Plugins nicht beißt (in den PPAs für focal ist das verfügbar).

    Wie kann ich in meiner yavdr ansible Installation das Plugin richtig übersetzen?

    Für das reguläre VDR-PPA könnte man das z.B. so machen:

    Code: ~/.quiltrc
    # see https://wiki.debian.org/UsingQuilt#Encapsulated
    d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
    if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
            # if in Debian packaging tree with unset $QUILT_PATCHES
            QUILT_PATCHES="debian/patches"
    
            if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
    fi
    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Super, danke für die Hilfe!

    Ist umgesetzt. Man wächst mit seinen Aufgaben.

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Zu dem Zeitpunkt hatte ich noch kein DVB-C Signal, also in der Theorie so konfiguriert:

    Code
    // TODO: configuration
      dvb_c_action[0] = action_deny; // device 0: no DVB-C
      dvb_c_action[1] = action_deny; // device 1: no DVB-C
      dvb_t_action[2] = action_deny; // device 2: no DVB-T
      dvb_t_action[3] = action_deny; // device 3: no DVB-T

    der zweite WinTV dualHD (für DVB-C) war dann aber abgesteckt.

    Jetzt habe ich DVB-C Signal und den zweiten USB dual Tuner dauerhaft angesteckt. Leider startet vdr so nicht.

    Ich glaube die Krux ist die Adapter Reihenfolge?

    Code
    root@vdr2:/home/rossi# dmesg | grep adapter
    [   11.287754] dvbdev: DVB: registering new adapter (1-6:1.0)
    [   11.287757] em28xx 1-6:1.0: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)...
    [   11.308159] dvbdev: DVB: registering new adapter (1-6:1.0)
    [   11.308161] em28xx 1-6:1.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
    [ 1118.929999] dvbdev: DVB: registering new adapter (1-1:1.0)
    [ 1118.930000] em28xx 1-1:1.0: DVB: registering adapter 2 frontend 0 (Silicon Labs Si2168)...
    [ 1118.945457] dvbdev: DVB: registering new adapter (1-1:1.0)
    [ 1118.945458] em28xx 1-1:1.0: DVB: registering adapter 3 frontend 0 (Silicon Labs Si2168)...

    Wenn ich das System nur mit dem DVB-T2 Stick starte, läuft vdr.

    Dann stoppe ich ihn, stecke den zweiten dual Tuner an und vdr startet ohne Probleme.

    Weiter habe ich mit --adapter=0,2,1,3 usw. probiert... ohne Erfolg.

    Wie löse ich dieses Problem?

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Ja, das könnte ein ziemliches Glückspiel werden, welche der beiden Karten da zuerst initialisiert wird - aber wenn da einer der beiden die Initialisierung beim Neustart zuverlässig gewinnt, kannst du ja die Kabel umstecken oder das Plugin mit umgedrehter Konfiguration neu kompilieren.

    Mit dem dynamite-Plugin könnte man auf einzigartige Attribute wie die Seriennummer oder den USB-Port Matchen - der Ansatz dürfte die robustere Lösung sein.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Die dritte Alternative ist das Plugin 'easyvdr'. *anmerk*

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Die Idee mit Antennenleitung (DVB-T2/DVB-C) bzw. Stick umstecken hatte ich auch schon - brachte kein Erfolg.

    Ich vermute eher das beim Adapter anlegen gemischt wird. Deswegen der Ansatz über vdr DVB Adapterreihenfolge.

    Beide Adapter, je USB Device, haben ja das gleiche Eingangssignal. Also Adapter 0 u. 1 DVB-T2 und Adapter 2 u. 3. DVB-C.

    Ich editiere /etc/vdr/conf.d/00-vdr.confund ergänze --device=2,3,0,1?

    Oben habe ich --adapter geschrieben - das ist falsch.

    Ändere ich so die DVB Adapterreihenfolge?

    Code
    ...
    vdr: invalid DVB device number: 2,3,0,1
    ...

    Stehe irgendwie auf dem Schlauch.

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Per udev müsste man Seriennummer vom Tuner an Adapter 0 und 1 bzw. 2 und 3 binden können?

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Die dritte Alternative ist das Plugin 'easyvdr'. *anmerk*

    Wo gibt es da die Möglichkeit einen Tuner auf bestimmte Empfangswege zu beschränken? In README und DeviceManager.cpp habe ich auf die Schnelle nichts gefunden, das das erlaubt...

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Per udev müsste man Seriennummer vom Tuner an Adapter 0 und 1 bzw. 2 und 3 binden können?

    Man kann den Device-Name nicht mehr per udev ändern, das Höchste der Gefühle wäre ein Symlink. Ich weiß aber nicht, ob der VDR das akzeptiert, wenn du ihm Device-Nummern für Symlinks übergibst - Versuch macht klug...

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Und wie ändere ich die DVB Adapter Reihenfolge? per --device=2,3,0,1 geht es nicht...

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • seahawk1986 ab Zeile 200, void cDeviceManager::AddHook(int index)

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Das kann ich in der Version 2021.01.24 von https://www.gen2vdr.de/wirbel/easyvdr/index2.html nicht finden - gibt es da eine aktuellere Quelle?

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Tatsächlich, meine Version ist neuer als die auf der Webseite. Schau ich gelegentlich mal, warum.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Ich hätte hier einen sehr experimentellen Patch, der versucht die Zuordnung von Device und verfügbarem Signal automatisch herauszufinden.

    Dazu werden nach dem Start von VDR bei jedem Programmwechsel zuerst die noch nicht verwendeten Devices auf eine Signal geprüft. Wenn es zu keinem Lock kommt, wird ein Retune ausgelöst und das Gleiche mit dem nächsten ungetesteten Device durchgeführt.

    vdr_rossi : In deinem Fall sollte der VDR damit spätestens nach dem 2. Retune ein passendes Frontend gefunden haben, dass dauert ungefähr 25 Sekunden. Nach einem weiteren Programmwechsel sollte klar sein welche der 2 Devices/4 Frontends DVB-T/C empfangen können - oder im Umkehrschluss eben nicht empfangen können.

    Diese Zuordnung ist unter idealen Bedingungen relativ einfach herauszufinden, schwieriger wird es bei schwankendes oder keinem Signal oder durch fehlerhafte Tuningparameter - daran kann dieser Patch dann möglicherweise scheitern.

    Du kannst ja einmal Testen, ob er für dich brauchbar ist.

    LG Helmut

  • Danke für den Patch.

    Möchte als erstes den delsys.c Ansatz verfolgen. Vermute das bei dual Tunern nicht zwangsläufig die Adapterreihenfolge passt bzw. gemixt wird.

    Ist es möglich von /dev/dvb/adapter0... Rückschlüsse auf Tuner Seriennummer zu schließen?

    Und wo wir gerade bei Workarounds sind, man könnte auch den Treiber modifizieren :) So hätte kls das gerne, dass der Treiber nur die (eine) Empfangsart durchgibt.

    Achja und vdr Device bzw. Adapter Reihenfolge per Config - hab ich auch noch nicht geklickt!?

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Treiber modifizieren ist Problemlösung an der falschen Stelle.

    Die Hardware kann ja nichts dafür, was du gerade für Kabel dran anschließt und meldet was sie kann.


    Die Reihenfolge /dev/dvb/adapter0... wird von udev bestimmt.

    In der Reihenfolge wie der Kernel erfolgreich die Initialiserung von dvb hardware durch den Treiber gemeldet bekommt, ruft der kernel udev auf : 'neue HW gefunden'.

    Wer zuerst kommt, bekommt die kleinste Nummer.

    udev legt dann nach den vom Anwender festgelegten Regeln /etc/udev/rules.d/.. dafür device nodes und evtl zusätzlich symlinks in /dev an.

    Normal ist die aufsteigend nummerierte Reihenfolge, aber du kannst z.B. deine eigene udev Regel schreiben,

    welche auf die Seriennr deiner Hardware schaut und dazu einen festen Dateinamen anlegt.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Normal ist die aufsteigend nummerierte Reihenfolge, aber du kannst z.B. deine eigene udev Regel schreiben,

    welche auf die Seriennr deiner Hardware schaut und dazu einen festen Dateinamen anlegt.

    Das hat früher mal funktioniert, aber mittlerweile darf man den Kernel-Namen nicht mehr ändern - damit bleibt nur noch das Anlegen von Symlinks: https://www.freedesktop.org/software/syste…udev.html#NAME1 bzw. https://git.kernel.org/pub/scm/linux/…c/udev.xml#n316

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Konnte das Problem lösen.

    Seriennummer der USB Tuner lässt sich so herausfinden:

    Code
    root@vdr2:/home/rossi# find /sys/devices -name 'dvb*frontend*'
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/dvb/dvb0.frontend0
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/dvb/dvb1.frontend0
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/dvb/dvb2.frontend0
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/dvb/dvb3.frontend0
    root@vdr2:/home/rossi# dmesg | grep 'usb 1-1' | grep -i serialnumber | tail -1
    [    1.510328] usb 1-1: SerialNumber: 0815471111
    root@vdr2:/home/rossi# dmesg | grep 'usb 1-6' | grep -i serialnumber | tail -1
    [    2.390355] usb 1-6: SerialNumber: 0815471122

    Ok, damit wusste ich dann welcher USB Tuner an welchem Empfangskabel hängt.

    Einfaches tauschen der USB Tuner führte zu keinem Erfog.

    Erst als ich hier drehte:

    Code
    // TODO: configuration
      dvb_t_action[0] = action_deny; // device 0: no DVB-T
      dvb_t_action[1] = action_deny; // device 1: no DVB-T
      dvb_c_action[2] = action_deny; // device 2: no DVB-C
      dvb_c_action[3] = action_deny; // device 3: no DVB-C

    lief es.

    Danke an alle!

    Klick für meine Hardware

    vdr1: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR onboard
    vdr2: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Hast du mal mit udevadm nachgesehen, ob die udev-Regel greift bzw. die Attribute für die Frontend-Geräte auch tatsächlich gesetzt werden? Also z.B.:

    Code
    udevadm info --query=all --attribute-walk --name /dev/dvb/adapter0/frontend0
    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!