[VDR*ELEC] LibreELEC/AMLGX (arm) Probleme/Diskussion

  • Der Wunsch kam auf, Probleme, die explizit LE/AMLGX betreffen aus dem anderen Thread rauszuhalten.

    Wobei ich sagen muss, der andere Thread ist mir schon zu unübersichtlich geworden.


    Erstmal der Stand:

    Ich teste mit Odroid N2+ und LE mit AMLGX startet soweit und kann benutzt werden. Als Ausgabedevice habe ich softhddevice-drm-gles gewählt.


    Meine aktuellen Probleme:

    - Plugins, die nicht funktionieren: skindesigner, live.

    - Das Ausgabedevice softhddevice-drm-gles

    - Beim Kanalwechsel sehe ich erst ein sehr buntes Bild mit sehr viele Farben statt einem Schwarzbild.

    - Das bunte Bild kommt auch, bevor ich im Web ein Video öffne und dieses abgespielt wird.

    - Beim Kanalwechsel sieht das Bild erst blass aus, dunkelt aber kurze Zeit später noch nach bevor das Kanalinfo-OSD verschwindet.

    - Der Deinterlacer funktioniert gar nicht. Das liegt wohl an den Treibern/Kernel/o.ä.


    Für skindesigner hat rell etwas an libsrvg und rust gebastelt. Das muss ich noch testen, das dauert aber etwas, da ich ein Neubuild machen muss. Ich denke meine eigenen Versuche haben die Toolchain geröstet.


    Für den Kanalwechsel hoffe ich bald ein Video aufnehmen zu können, wenn der HDMI Grabber da ist, funktioniert und ich ihn zum laufen bringen kann.

  • Noch nicht getestet, aber vielleicht löst es das Problem. Das Problem liegt an librsvg, wenn ich mich richtig erinnere. Mit dem Patch oben wird die Version gepusht und nutzt das onboard rust.

    Ich habe deinen Patch eingespielt. Allerdings baut es nicht mehr:

    Code
    checking for cos in -lm... yes
    checking for dlopen... yes
    checking for armv8a-libreelec-linux-gnueabihf-cargo... no
    checking for cargo... no
    configure: error: cargo is required.  Please install the Rust toolchain from https://www.rust-lang.org/
    FAILURE: scripts/build _librsvg during configure_target (default)
    *********** FAILED COMMAND ***********
    ${PKG_CONFIGURE_SCRIPT} ${TARGET_CONFIGURE_OPTS} ${PKG_CONFIGURE_OPTS_TARGET}

    Das war - glaube ich der Grund - warum ich rustup mit reingenommen habe.

    Meine Versuche mit cargo, cargo-snapshot in der package.mk waren bisher erfolglos.

  • Hm, ich meine, das ging hier schonmal... Muss uch nochmal schauen.

  • Probier mal ein cargo:host bei den depends.

    Hier hat ein AMLGX build mit diesem branch funktioniert, allerdings habe ich vorher das system-tools addon gebaut und da ist cargo auch in den Abhängigkeiten.

  • Probier mal ein cargo:host bei den depends.

    Hier hat ein AMLGX build mit diesem branch funktioniert, allerdings habe ich vorher das system-tools addon gebaut und da ist cargo auch in den Abhängigkeiten.

    cargo:host habe ich eingetragen und nun wird ein Build von llvm:host versucht und der geht auch schief. Allerdings finde ich die Kommandos, die ausgeführt werden sollen, sehr seltsam und auch irgendwie falsch.

    Code
    /usr/bin/ccache: invalid option -- 'D'
    [4/3211] Building ASM object lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_avx512_x86-64_unix.S.o
    FAILED: lib/Support/BLAKE3/CMakeFiles/LLVMSupportBlake3.dir/blake3_avx512_x86-64_unix.S.o 
    /usr/bin/ccache -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS <viel mehr Kommandozeile>

    Direkt hinter dem /usr/bin/ccache fehlt doch das eigentliche Kommando: Compiler, Assembler, was auch immer.

  • Hm, weiß ich aktuell nicht weiter. Jedenfalls lief der build damit für AMLGX1 und o.g. Branch vorhin durch...

    Versuch mal mit -addon system-tools zu bauen bzw. cargo:host einzeln.

  • Endlich habe ich es geschafft. Es musste "nur" die Build-Konfiguration von llvm geändert werden.


    Der Build hat 2 extreme Nachteile:

    1. Er löst das Problem mit librsvg nicht. Der Fehler taucht immer noch auf :(

    2. Die Build-Zeit verlängert sich geschmeidig um 2 Stunden und das ist etwas sehr viel.


    So langsam denke ich, es liegt an den Compile-Flags von rustc für librsvg.

  • Keine Ahnung, was da ist, aber bei mir läuft der Build ohne patches durch. Kannst du mir deinen build cmd sagen, dann teste ich das bei mir nochmal "frisch"?


    Ich habe mir ein Image für die WetekPlay2 gemacht und das bootet, alles lässt sich installieren, VDR läuft, aber auf dem Schirm kommt nichts :) Das ging schonmal... Suche geht weiter. Bis auf dass kein Bild kommt, ging jedenfalls das install skript fast :) Wenn läuft stelle ich einen MR. Das verkürzt eine frische Installation auf 4 Kommandos :p

  • Keine Ahnung, was da ist, aber bei mir läuft der Build ohne patches durch. Kannst du mir deinen build cmd sagen, dann teste ich das bei mir nochmal "frisch"?

    Das Hauptproblem liegt wohl an dem Host bzw. dem Host-Compiler und den installierten Bibliotheken. Hier habe ich Debian 12 laufen und readline und ncurses und wie, bzw. ob die überhaupt gelinkt sind.

    Ich habe mir ein Image für die WetekPlay2 gemacht und das bootet, alles lässt sich installieren, VDR läuft, aber auf dem Schirm kommt nichts :) Das ging schonmal... Suche geht weiter. Bis auf dass kein Bild kommt, ging jedenfalls das install skript fast :) Wenn läuft stelle ich einen MR. Das verkürzt eine frische Installation auf 4 Kommandos :p

    Perfekt :) Das aktuelle Install-Script läuft schon ziemlich gut.

  • Hier ist der Host ein natives Debian 11 system...

  • So, die WetekPlay2 läuft. Das Nachdunkeln habe ich nicht, und die bunten Klötzchen auch nicht.

    Aber das war jetzt nur ein schneller Test, ich schau mir das noch genauer an, weil mir die Logs von softhddevice-drm-gles auch nicht so gut gefallen...

    Aber laufen tuts schon mal. Ich schau mir das die nächsten Tage mal an, da sollte dann auch der Odroid da sein.


    Und Bauen war auch kein Problem (mit dem librsvg Patch) ohne llvm patches o.ä.

    Das Installskript hat jetzt auch soweit funktioniert.

  • Interessehalber wollte ich mal schauen, was genau in librsvg Probleme macht - auch wenn ich davon nicht viel verstehe ;)


    Das Disassemble ergibt dann

    mcr? Soso. Tante Google sagt dann z.B. sowas

    Quote

    MCR and MRC don't exist in ARMv8.

    MCR and MRC does not exist on AARCH64?
    I am trying to compile "mrc" and "mcr" instruction on AARCH64 based on Board but I am seeing below error message tmp/ccqOHmrK.s: Assembler messages:…
    stackoverflow.com


    Error: unknown mnemonic `mcr' for aarch64? - Architectures and Processors forum - Support forums - Arm Community


    Mir ist nicht ganz klar, was hier gemeint ist mit aarch32/64 und ein unterschiedlicher Befehlssatz.


    Ich kann kein Rust, aber die entsprechende Funktion

    Code
    #[no_mangle]
    pub unsafe extern "C" fn rsvg_handle_new_with_flags(flags: RsvgHandleFlags) -> *const RsvgHandle {
        let obj = glib::Object::builder::<CHandle>()
            .property("flags", HandleFlags::from_bits_truncate(flags))
            .build();
    
        obj.to_glib_full()
    }

    deutet eher auf glib (oder das rust binding) als Ursache, als auf librsvg.

  • Da bin ich total überfragt... Jedenfalls klappt LE mit skindesigner nicht. Bei CE funktionierts, oder?


    Ich habe jetzt nochmal etwas getestet. Klötzchen habe ich keine und nachdunkeln tuts auch nicht.

    Deinterlacer geht nicht. Er geht nicht nur nicht, sondern die frames scheinen auch in der verkehrten Reihenfolge zu sein. Das muss ich mir im softhddevice-drm-gles ansehen.

    Die framedupes habe ich auch, aber die sollten an der Monitorfrequenz 60 liegen?! Am 50Hz TV sollte das nicht sein.


    Bis auf den Deinterlacer läuft das also erstmal ganz gut.

  • Da bin ich total überfragt... Jedenfalls klappt LE mit skindesigner nicht. Bei CE funktionierts, oder?

    Ich habe den Skindesigner produktiv laufen und unter CE funktionierts. Und genau das ist mein Problem. librsvg, skindesigner, rustc sind in beiden Fällen identisch. Es gibt beim Bauen keinen speziellen Switch. Es ist sogar auch noch dieselbe Maschine und trotzdem gibt es Unterschiede zur Laufzeit. Also muss es einen Unterschied zwischen CE und LE geben, den Unterbau betreffend.


    Ich habe versucht den HDMI-Videograbber zu aktivieren, allerdings ohne Erfolg. Kodi funktioniert einwandfrei, aber vom VDR bekomme ich da kein Bild und kann leider kein Video erzeugen, daß das Problem anschaulich darstellt. Sehr merkwürdig das Ganze.

  • Die Ursache für skindesigner und live wurde gefunden.

    Die Ursache ist die "cp15 barrier emulation". Alles klar.... Ich hatte befürchtet, ich müsste die Kernel-Konfiguration patchen:

    32bit rust compiler doesn't run new kernels. (only legacy will work)
    To run 32bit rustc you need enabled cp15 barrier emulation. (This is removed in ARMV8 arch and needed to emulated by the kernel) Please reenable like in legacy…
    forum.armbian.com


    Aber es reicht, wenn der rustc Compiler geändert wird von

    arm-unknown-linux-gnueabihf auf armv7-unknown-linux-gnueabihf

    Damit werden zwar armv6 nicht mehr unterstützt, aber das sollte hoffentlich zu verschmerzen sein. Es betrifft z.B. RPI 1.

  • Sehr schön. Mit cp15 barrier hatte ich bisher keine Berührungspunkte und weiß auch nicht, was das ist.

    Ich frage mich nur, warums das braucht und ob das ein compiler oder kernel Problem ist oder eher eins der betroffenen Pakete und da gelöst werden kann/sollte?


    Hat das damit was zu tun?

  • Quote

    CP15, the System Control coprocessor, provides control of many features of the core....

    Documentation – Arm Developer


    Was immer der auch macht.


    abi.cp15_barrier = 2. Ich weiß gar nicht mehr, wie das reinkam, aber das hat etwas mit dem Kernel zu tun. Hardware oder Software Emulation. 2 (HW), 1 (SW). Ich denke für 1 müsste man tatsächlich die Kernel-Konfiguration für den Build ändern.


    Aber mehr weiß ich dazu auch nicht. Mein ganzes Wissen habe ich jetzt ausgebreitet ;)

  • Hallo Zabrimus,

    nur zur Info, ich habe jetzt einen Odroid aufgesetzt, und kann deine Probleme nachstellen. Komisch, dass das Nachdunkeln und die Klötzchen bei der WetekPlay2 nicht auftreten. Ich werde mal ein paar Sachen im Ausgabeplugin ausprobieren.

    Der Deinterlacer funktioniert bei beiden nicht.

  • Problem 1 mit den Klötzchen wäre schonmal gelöst ;)

Participate now!

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