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

  • Ich lese hier gespannt mit und halte das in meiner Client/Server Umgebung für eine gute Hardware-Alternative - gerade auch als Gegenpol zum NVIDIA/INTEL Gedöns...


    jojo61 Danke für die Mühen :thumbup:

  • Ich wollte mal versuchen ein aktuelles coreelec Image zu erstellen das mit dem Plugin samt vdr und streamdev erweitert ist.

    Das scheitert aber an fehlenden opengl Komponenten im coreelec.

    Setzt das Plugin eigentlich den mali fbdev voraus oder ist in dem ubuntu minimal image ein anderer treiber vorhanden der auch opengl bietet?


    Lg Andreas

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.4.7
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.4.7+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • ich nutze EGL so wie es dabei ist:

    Code
    1. EGL: major=1, minor=4
    2. EGL: Vendor=ARM
    3. EGL: Version=1.4 Bifrost-"git"
    4. EGL: ClientAPIs=OpenGL_ES
    5. EGL: Extensions=EGL_KHR_partial_update EGL_EXT_image_dma_buf_import EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_ARM_pixmap_multisample_discard EGL_ARM_implicit_external_sync EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_create_context_robustness
    6. EGL: ClientExtensions=EGL_EXT_client_extensions EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses

    Corelec nutzt aber für Kodi keine ELF Libs. Da wird ein Android Kodi genutzt und das braucht einen anderen Loader.

    Ich hatte das coreelec Kodi mal neu übersetzt, aber auch das läuft nicht mit der Hardwarebeschleunigung.

  • Ist in der Ubuntu minimal nicht ein beschleunigtes Kodi für den Framebuffer bei?

    Nein da ist kein Kodi dabei und wenn man es mit apt install installiert bekommt man ein nicht lauffähiges Kodi.

    Ich hatte auch am Anfang versucht auf Basis der Coreelec Distro die Entwicklung zu machen. Das ist aber gescheitert weil das Coreelec Image völlig unbrauchbar ist als Entwicklungsumgebung. Und das dort installierte Kodi ist als Android binary vorhanden.

    Ich habe zwar nun Kodi zum laufen gebracht aber ohne Hardwarebeschleunigung. Mir reicht das weil ich eh nur das Radio Plugin von Kodi nutze :-)

    Vielleicht schau ich mir mal an was da bei Kodi nicht geht mit der Hardwarebeschleunigung. Hat aber keine Priorität.

  • Nein da ist kein Kodi dabei und wenn man es mit apt install installiert bekommt man ein nicht lauffähiges Kodi.

    Ich hatte auch am Anfang versucht auf Basis der Coreelec Distro die Entwicklung zu machen. Das ist aber gescheitert weil das Coreelec Image völlig unbrauchbar ist als Entwicklungsumgebung. Und das dort installierte Kodi ist als Android binary vorhanden.

    Ich habe zwar nun Kodi zum laufen gebracht aber ohne Hardwarebeschleunigung. Mir reicht das weil ich eh nur das Radio Plugin von Kodi nutze :-)

    Vielleicht schau ich mir mal an was da bei Kodi nicht geht mit der Hardwarebeschleunigung. Hat aber keine Priorität.

    Um neue Funktionen dem coreelec hinzuzufügen muss man das build system für das image nutzen. Das läuft bei mir hier auf einem Ubuntu focal auf x86 per cross compilierung.

    Das war gar nicht so schwer ans rennen zu bekommen.

    Für die Entwicklung des Plugin dürfte es trotzdem recht umständlich sein weil so Dinge wie remote debugging fürs sinnvolles Testen sicherlich notwendig ist.


    Bezüglich des fehlenden opengl im coreelec ist das EGL sowie GLES/GLES2 schon vorhanden.

    Nur das herkömmliche opengl nicht weil der mali Treiber das auch wohl nicht kann.

    Die Include-Dateien unter /usr/include/GL fehlen halt. Die setzt das Plugin aber voraus.

    Könnten das noch "altlasten" im Source sein? /usr/include/EGL sowie GLES/GLES2 gibt es im coreelec.

    Server: Asus M3N-H/HDMI, AMD X2 5600+, 4GB RAM, 2x4TB HD, 2xDVBSKY S952, Ubuntu/V18.04, vdr 2.4.7
    Client1: ZOTAC ION-ITX B, 2GB RAM, Diskless/Netboot per PXE, Xubuntu/V18.04, vdr 2.4.7+softhddevice, KODI 19, LG42LC2R LCD-TV
    Client2: Wie 1 aber ZOTAC ION-ITX E , DFAtmo, 2xDF10CH 19 Kanal Atmolight, LG37LC2R LCD-TV

  • jojo61


    Nach einem apt --reinstall mali-fbdev kann ich das Kodi (17.6) aus dem Repositroy installieren (sudo apt install kodi-fbdev) und es läuft, allerdings nicht beschleunigt. Allerdings macht das das opencl kaputt (falsche Symlinks im Paket). Das kann so repariert werden (falls das jemand probieren will):


    rm usr/lib/aarch64-linux-gnu/libOpenCL.so*

    rm usr/share/mali/libOpenCL.so* usr/share/mali/libEGL.so*

    sudo apt install --reinstall ocl-icd-libopencl1 libegl1


    Danach stimmt die Installation dann (vorher ist ein Fehler im Image, so dass KODI nicht läuft).


    Mir sind noch ein paar Dinge beim Plugin aufgefallen:


    - Wenn ich Skindesigner nutze (z.B. shady-kiss), muss ich GPU mem used for image caching (MB) auf 0 stellen. Andernfalls sehe ich nur den Text im OSD aber z.B. keinen Auswahlbalken.


    - Dasselbe gilt für metrixhd. Hier fehlen bei cache ungleich 0 alle Icons.


    - Ich habe noch ein Problem mit dem OSD. Bei 1080 funktioniert alles, wie es soll, allerdings wird UHD 4k dann als 1080 ausgegeben. Wenn ich Video auf auto oder 3840x... stelle, wird UHD zwar als UHD wiedergegeben, vom OSD ist aber nur das linke obere Viertel zu sehen und das ist auf den gesamten Bildschirm gezoomt.


    Ich hoffe, Du fasst das nicht als Kritik an Deiner Arbeit auf, die ich sehr schätze. Ich möchte nur beim Testen helfen.


    LG

    beta

  • Ja mit der UHD Auflösung kämpfe ich auch noch. Ich habe in /media/boot/config.ini die Auflöung gleich auf 2160p50hz gestellt. Dann klappt auch das OSD.

    Im Setup habe ich dann die Auflösung auf auto stehen. Aber ganz sauber ist das noch nicht.


    PS: Hast du die neuste Version ausgecheckt ?

  • PS: Hast du die neuste Version ausgecheckt ?

    Ja.


    Ich versuche mal, die Auflösung in der ini-Datei gleich auf 4K zu stellen.


    Edit: Wenn ich das so einstelle, funktioniert das OSD in der Tat. Allerdings ist shady_kiss dann unglaublich träge und je nach Menü gibt es andere Probleme. Am liebsten wäre es mir, das OSD auf 1080p50 zu haben und das Video auf Auto...

  • Am liebsten wäre es mir, das OSD auf 1080p50 zu haben und das Video auf Auto...

    Ja das war auch meine Idee. Dann muss man das OSD skalieren und das soll auch gehn. Nur habe ich es bisher nicht hinbekommen.

    Da werde ich wohl noch mal basteln müssen :-)


    Ein paar Stunden später:

    So ich habe nun gebastelt und das Ergebniss eingecheckt. Das OSD bleibt nun auf 1920x1080 auch bei UHD. Das solltest du mal testen da ich es nur mit HD getestet habe.


    Noch ein paar Worte zum einstellen der Auflösung.

    Am besten ist es die Screnauflösung in der config.ini einzustellen. Dort dann auch display_autodetect=false setzen.

    Dann im Setup des Plugin die Resolution auf auto setzen.

    Das ist wohl die beste Lösung solange man kein eigenes EDID braucht.


    Bei meinem UHD Beamer ist leider das EDID schrott und ich muss ein repariertes EDID nutzen. Das kann man auch laden, muss dann aber zum aktivieren

    die Auflösung neu setzen. Dazu muss die aktuelle Auflöung aber geändert werden. Deswegen mache ich das nun so das ich in der config.ini auf 1080p50hz stelle und dann das EDID lade in der rc.config. Und dann im Plugin die Auflösung auf 2160p50hz umstelle damit das neue EDID aktiv wird.

  • Vielen Dank, jojo61


    Ich werde es am späten Nachmittag testen können und melde mich dann sofort mit einem Edit dieses Beitrags.


    Hattest Du Gelegenheit, Dir die Sache mit dem Cache mal anzuschauen? Bei OSD auf 1080 funktioniert jedes Skin (Skindesigner) nur, wenn der cache auf 0 MB steht.

  • Ich habe es getestet. Wenn die Bildschirmauflösung auf 4K steht und die Videoausgabe auch auf 4K steht, passt das Bild mit OSD und Video zusammen. Wenn man beides auf 1080 stellt, ebenfalls.


    Was bei mir noch nicht funktioniert, ist folgendes Szenario;

    - config.ini auf 4K

    - die Video-Auflösung auf Auto

    Bei 1080 content sieht man dann nur 1/4 des Bildes (obere linke Hälfte) und 1/4 des OSD (ebenfalls obere linke Hälfte).

    Bei UHD 4K content passt es.


    Vielleicht geht das aber auch nicht, dass der Fernseher skaliert und nicht der Odroid?


    Danke für alle Deine Bemühungen! Das funktioniert wirklich schon phantastisch!


    LG

    beta

  • Wenn die Video Auflösung auf auto steht, dann versuche ich die Auflösung vom Kernel zu lesen. Das scheint nach einer vorhergehenden Umschaltung der Auflösung nicht sauber zu funktionieren. Am besten stellt man die config.ini und den Setup auf die gleiche Auflösung. Dann geht es immer.


    Mir gefällt diese doppelte EInstellung der Auflösung nicht. Ich schau mal ob ich das rauswerfen kann und mich ganz auf die config.ini verlassen kann.

  • jojo61 Tolle Idee, die Auflösung einfach zu übernehmen, wie sie ist. Das funktioniert super.

    Ich kann so relativ einfach wechseln zwischen HD und UHD durch ein einfaches


    echo 2160p50hz420 > /sys/class/display/mode


    bzw. 1080p analog. Nach Ausbau des Caches funktionieren alle Skins unter skindesigner einwandfrei.

    Mir fällt jetzt nicht mehr viel ein, was noch fehlen könnte, evtl. 10/12 bit Farbausgabe...


    Die Anschaffung hat sich mehr als gelohnt.Vielen Dank jojo61 !


    LG

    beta

  • So nun hab ich auch endlich rausgefunden wie mal die Farbtiefe einstellen kann.


    Code
    1. echo 420,10bit >/sys/class/amhdmitx/amhdmitx0/attr
    2. echo 2160p50hz >/sys/class/display/mode

    Damit schaltet er auf 10 Bit Farbtiefe um. Ob 12 Bit auch gehen habe ich nicht getestet weil bei HDR ja eh nur 10 Bit übertragen werden.

    Wenn man dann das Display auf 12 Bit stellt bekommt man nur mehr Farbrauschen.