Video Treiber für Odroid-N2+ (softhdodroid)

  • Dr. Seltsam Ich habe das Problem nun mit der 2.6.0 auch das er nach dem booten kein Bild anzeigt. Das liegt wohl am satip plugin.

    Ich habe mir einfach den vdr gepatcht und in der main funktion erstmal auf einen beliebigen Kanal geschaltet und dann zurück auf den konfigurierten Startkanal. Dann geht es immer. Natürlich ist das ein Hack und nicht für die Distros geeignet.


    Aber du kannst auch mit svdrpsend chan + das Problem lösen.

  • Hallo jojo,


    ich denke es liegt am Netzwerk, das zu spät hochkommt. Bei mir nutze ich das iptv-Plugin in Verbindung mit den freien MagentaTV-Kanälen.

    Ich habe jetzt die runvdr aus den vdr-sourcen im Autostart und darin die vor der Ausführung von vdr ausgeführte Funktion LoadDriver modifiziert:


    Code
    # Load all DVB driver modules needed for your hardware:
    LoadDriver()
    {
    #  while [ ! -e /dev/dvb/adapter1/frontend1 ]; do sleep 1; done
    while ! ping -c 1 -W 1 192.168.178.1; do
    echo "Waiting for Fritzbox - network interface might be down..."
    sleep 1
    done
    return 0
    }


    Die auskommentierte Schleife war meine Lösung auf dem anderen VDR, um vdr erst zu starten, wenn alle 4 DVB devices da sind.

    Jetzt wird im Sekundentakt geprüft, ob meine Fritzbox erreichbar ist. Sobald das der Fall ist, wird vdr gestartet. Seitdem gibt es keine Probleme mehr, das Bild ist immer da.


    Übrigens: Die runvdr verwendet zum restart den killall-Befehl:

    Code
    KILL="/usr/bin/killall -q -TERM"

    Nun habe ich festgestellt, dass killall auf dem Odroud-Ubuntu gar nicht vorhanden ist. kill und pkill sind vorhanden, wollen aber die PID haben und zumindest pkill hat keinen -q Parameter. Vielleicht kann ein Linux-Crack mir sagen, wie man das jetzt am besten löst.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Nun habe ich festgestellt, dass killall auf dem Odroud-Ubuntu gar nicht vorhanden ist.

    Das steckt im Paket psmisc - vermutlich ist das standardmäßig da nicht installiert.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)


  • Habe nun mal rumgespielt und eine Möglichkeit gefunden das Bild zu löschen. Aber wenn ich das bei pmNone einbaue, dann gibt es beim umschalten eine

    (subjektiv unschöne) Schwarzphase. Und dann wird beim Radio Plugin kein Bild mehr angezeigt. :( Das liegt dann wohl daran das diese Bilder keinen Video PTS enthalten. Ich werde es deswegen nicht einbauen zumal es ja eine Lösung mit dem Radioplugin gibt um ein ordentliches Bild bei Radio zu haben das auch Schwarz sein kann.

    ich würde damit auch gerne mal experimentieren. Kannst Du mir den Code mal zur Verfügung stellen? Gibt es irgendwo eigentlich eine Dokumentation zu der API?

    Code
        // set the system blackout_policy to leave the last frame showing
        int blackout_policy;
        amlGetInt("/sys/class/video/blackout_policy", &blackout_policy);
        amlSetInt("/sys/class/video/blackout_policy", 0);

    Mich würde wundern wenn es nicht auch möglich wäre, statt des letzten frames ein Schwarzbild anzuzeigen

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Das steckt im Paket psmisc - vermutlich ist das standardmäßig da nicht installiert.

    Danke, perfekt! Wieder eine Baustelle weniger :)

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • ich würde damit auch gerne mal experimentieren. Kannst Du mir den Code mal zur Verfügung stellen? Gibt es irgendwo eigentlich eine Dokumentation zu der API?

    Setze mal die Blackout Policy auf 1. Ich hatte zum spielen beim setzen des PlayMode auf 0 das Video gelöscht. Dazu gibt es einen Kernel ioctl.

    Zum API gibt es leider keinerlei Doku die mir bekannt ist. Ich habe das meiste durch ausprobieren herausgefunden. Auch die Quellen von c2play waren sehr hilfreich.

  • Setze mal die Blackout Policy auf 1. Ich hatte zum spielen beim setzen des PlayMode auf 0 das Video gelöscht. Dazu gibt es einen Kernel ioctl.

    Zum API gibt es leider keinerlei Doku die mir bekannt ist. Ich habe das meiste durch ausprobieren herausgefunden. Auch die Quellen von c2play waren sehr hilfreich.

    Das schwarzschalten während des Kanalwechsels funktioniert, wenn man in softhddev.c in SetPlayMode hinter dem Kommentar

    Code
    // clear buffers on close configured always or replay only

    ein

    Code
    amlSetInt("/sys/class/video/blackout_policy", 1);

    einfügt. Ob damit auf Radiokanälen eine Wiedergabe erfolgt, konnte ich nicht testen, da ich kein DVB-Gerät habe und über MagentaTV kein Radio kriege.


    Wann und ob jemals der darunter stehende Codeblock

    Code
    if (MyVideoStream->ClearClose) {
    Clear();            // flush all buffers
    MyVideoStream->ClearClose = 0;
    }

    zur Anwendung kommt, konnte ich nicht rauskriegen. Die Bedingung scheint nie true zu werden, zumindest nicht beim Kanalwechsel.

    Beim Kanalwechsel wird Clear() also nicht aufgerufen. Auch amlReset() wird beim Kanalwechsel nach dem was ich mit ein paar Debug-Meldungen geloggt habe nicht aufgerufen. Das sofortige Stoppen des Decoders auf dem letzten frame beim Kanalwechsel muss also aktuell woanders herkommen.

    Clear() ruft vdr eigentlich auch nur beim Wechsel Bildsuchlauf/Wiedergabe, beim Springen während der Wiedergabe und wenn der buffer überzulaufen droht auf. Da wird dann stoppen auf dem letzten frame benötigt. Ein Aufruf von Clear() bei pmNone sollte nicht erfolgen.


    Es gab übrigens schon mal einen Entwurf für ein amlogic-Ausgabeplugin:

    [Prototyp] Ausgabeplugin für Amlogic SoC (z.B. Wetek Play)

    Vielleicht kannst Du da noch Anregungen finden.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Leider bringt deine Änderung für die Radioikanäle keine verbesserung und da bleibt das Bild dann einfach stehen. Wenn es dir nur um das Schwarz schalten beim umschalten geht, dann kannst du an der stelle auch folgendes aufrufen (ist nicht in der Quelle vorhanden:

    Das stört dann aber das Radio Plugin und deswegen werde ich es nicht einbauen. Aber du kannst es ja bei dir patchen.

  • Ich habe unter https://www.github.com/beta68/linux einen neuen Branch mit dem Namen "hardkernel" veröffentlicht.

    Das ist der originale N2+ Hardkernel-Kernel, den ich um amvideocap erweitert habe. Damit funktioniert Hyperion zusammen mit @jojo61's Plugin und zusammen mit PIP. KODI läuft damit nicht in einer chroot-Umgebung, hier müsste man dann z.B. über das externalplayer-Plugin KODI von SD-Karte booten, wenn der VDR von eMMC läuft.


    Bei allen anderen Kerneln habe ich mit Hyperion ein Ruckeln des Bildes alle 10-15 Minuten für den Bruchteil einer Sekunde. Bei dem o.a. Branch habe ich das korrigiert. Nach dem lunar New Year schlage ich Hardkernel einen pull request vor, damit das in den Original 4.9 Hardkernel-Kernel übernommen wird.

  • Hallo beta,
    läuft mit Deinem Kernel auch das normale Grabben, z.B. mit vdradmin?


    Wie hast Du den Kernel installiert? Kann man mit make deb-pkg ein Debian Package bauen, welches dann Kernel, Module und Initrd zusammen installiert?


    Schöne Grüße

    Lothar

  • Das normale Grabben mit vdradmin sollte funktionieren. Du musst nur nach Speichern der Hyperion-DB - falls Du 4K nutzt - das absetzen:


    Code
    sed -i 's/3839/1920/g' /root/.hyperion/db/hyperion.db
    sed -i 's/2159/1080/g' /root/.hyperion/db/hyperion.db


    Der Kernel wird so installiert, wie bei Hardkernel beschrieben, also


    Code
    git clone -b hardkernel https://github.com/beta68/linux linux_ambi
    cd linux_ambi
    make -j6
    sudo make modules_install
    sudo cp arch/arm64/boot/Image.gz /media/boot
    sudo su
    cp arch/arm64/boot/dts/amlogic/*n2*dtb /media/boot/amlogic
    reboot


    Ich kann Dir nicht sagen, ob man ein deb-Paket bauen kann, das habe ich nicht probiert.

  • Hi,

    sorry wenn das OT ist fürs grabben :)


    Ihr habt mich angefixt mit dem Odroid N2+.

    Vielleicht ist jemand an dieser Info interessiert:


    Habe einen N2+ (4GB) schon seit einem Jahr als (Home)Server am Laufen (Armbian Focal).

    11 Dockercontainer (Home Assistant, NextCloud, MariaDB für Digikam, Subversion server, Portainer, und am wichtigsten BackupPC V4).

    Wird nie warm. Meist unter 30°C bei 23.5°C Umgebung. Manchmal Spitzen bis ~38°C. (Kein Lüfter!)


    Bootet von SD, aber fast alles ist auf einer per USB3 angebundenen 2TB SSD.

    Braucht etwa 6..9W (wegen der Platten), sonst wären es nur ~3W.

    1.5 W für SSD, auch schlafende rotierende Platten brauchen etwas Strom.


    Als Vorbereitung habe ich mal den Odroid-Kernel übersetzt mit 4 Cores (make -j4).

    Temperatur läuft langsam hoch bis 51°C. Die anderen Aufgaben liefen parallel.

    Hat etwa 40 Minuten gedauert bis der Kernel fertig war.


    Die N2+ ist gerade schwer zu bekommen, da habe ich eine S905X3 TV Box (Tanix TX3) bestellt. Ist ungefähr ein C4 aber mit 40€ günstiger.

    Die S922X-Boxen sind auch schwer zu bekommen.


    (Danach habe ich zwei Boxen gefunden die einen Sata-Slot haben (vermutlich per USB3) - 75-85€).

    Werde auch auf dem Laufenden halten (Neuer Thread, will ihn hier eintragen).


    Edit: PS: Die N2+ erzeugt einen "schönen" Störteppich. Vermutlich vom USB3.

    Ich musste meine 433/868MHZ Empfänger anderswo unterbringen. Auch WLAN wird bis 0.5..1m gestört.



    Wird spannend.

    Grüße, Dieter :)

    Einmal editiert, zuletzt von Dieter ()

  • Hi,

    welchen CrossCompoiler verwendet Ihr für den Kernel?

    Im Wiki von Odroid steht beim C4 ein Link zum Linaro V6.3.1. Aber es gibt ein Fehler der nach falschem Compilerparameter aussieht.

    Code
    CC [M]  drivers/net/wireless/rtl8812au/core/rtw_cmd.o
    aarch64-linux-gnu-gcc: error: unrecognized command line option '-Wimplicit-fallthrough=0'; did you mean '-Wno-fallthrough'?
    make[4]: *** [scripts/Makefile.build:337: drivers/net/wireless/rtl8812au/core/rtw_cmd.o] Error 1
    make[3]: *** [scripts/Makefile.build:651: drivers/net/wireless/rtl8812au] Error 2

    Native auf dem N2+ wird V9.x verwendet, mit dem läufts ja auch durch.


    Mit den V10.3 (jetzt von der ARM-Seite, nicht mehr von Linaro) läufts auch durch.

    gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

    Grüße, Dieter :)

  • Moin jojo61,


    ich habe die Hoffnung noch nicht aufgegeben, ohne reboot vdr und kodi zusammen benutzen zu können. Sonst funktionieren ja Timer-Aufnahmen nicht, wenn gerade kodi von SD gebootet ist und vdr gar nicht läuft. Für einen reinen Streaming-Client kein Problem, aber dafür ist die Kiste eigentlich zu schade.


    Bei meinen letzten Versuchen mit einem kodi-Kernel hatte ich festgestellt, dass kodi nur dann richtig läuft, wenn vdr zuvor noch nicht lief.

    Die Vorgehensweise

    -vdr starten

    -vdr killen

    -die chroot-Umgebung mit kodi starten

    -einen Film starten

    führte immer wieder zu einem Kernel crash. Ich habe dann festgestellt, dass es an der aktivierten Hardwarebeschleunigung für mpeg2 bzw. h264 liegt. Wenn man die in kodi deaktiviert, läuft es. Lief vdr zuvor noch nicht, konnte kodu auch mit aktivierten codecs abspielen. Das lässt mich vermuten, dass das Plugin beim Beenden die Ressourcen bzw. Codecs nicht richtig freigibt. Vielleicht kannst Du Dir das mal anschauen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Das lässt mich vermuten, dass das Plugin beim Beenden die Ressourcen bzw. Codecs nicht richtig freigibt. Vielleicht kannst Du Dir das mal anschauen?

    Ja ich modifiziere das decoder routing und setze es beim beenden nicht mehr zurück. Ich werde das noch einbauen wenn ich wieder aus dem Urlaub zurück bin :)

  • Dann wäre meine Wunschliste, dass das nicht nur beim Beenden, sondern auch bei suspend und playmode pmExtern_THIS_SHOULD_BE_AVOIDED geschieht. Das sind die beiden Methoden, mit denen man externe Player wie Kodi aus einem laufenden vdr aufrufen könnte. pmExtern verwendet das mplayer-Plugin und das externalplayer-Plugin. Auf meinem nvidia-System mit softhddevice reicht ja auch ein Suspend/resume, um kodi aus dem Befehle-Menü zu starten.

    Schönen Resturlaub!

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Tja, das ist jetzt etwas kurios. Nach dem beenden von vdr habe ich kodi in der chroot-Umgebung, die beta gebaut hat, aufgerufen. Skin lädt erst beim zweiten Start von kodi sauber, aber das war auch vorher schon so. Dann einen Film mit Hardwarebeschleunigung abgespielt. das war der Punkt, wo es vorher einfror.

    Nun startet die Wiedergabe, aber ich sehe nur die Untertitel, der Bildschirm ist schwarz!

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

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