Posts by beta

    Mit dem neuen Commit habe ich einen crash in vdrboblight:


    Code
    1. Thread 9 "vdr" received signal SIGSEGV, Segmentation fault.
    2. [Switching to Thread 0x7f84606170 (LWP 3495)]
    3. 0x0000007fac592200 in cAmbiThread::putData (this=this@entry=0x5555bf2ca0)
    4.     at ambithread.c:397
    5. 397   rgb[0] = p->r;

    Mit dem CoreElec-Ubuntu-Mix-Kernel funktioniert das leider genauso wenig. Hier habe ich denselben Effekt wie mit dem anderen Kernel. Ich frage mich nur, wie CoreElec das löst. Auch dieser Kernel kann nicht das 4k-Bild aus der VPU mit einem Schlag auslesen (s.o., FORCE_MAX_ZONEORDER ist dafür auch zu klein).


    Im Log habe ich bei beiden Kerneln übrigens ein:


    Nov 25 11:01:11 odroid kernel: [  134.956174@0] ge2d: ge2d timeout!!!


    Es sieht so aus, als würde der CoreElec-Grabber den FrameBuffer auslesen und nicht die VPU. Darin ist aber hier nur das OSD.


    Hier gibt es noch einen Kernel, in dem das videocapture-Device bereits eingebaut ist. Vielleicht funktioniert der ja?


    https://github.com/tobetter/li…a/video_sink/amvideocap.c


    Edit: Gerade probiert. Der Kernel bootet nicht.

    Das nutzt mir leider nichts, da ja erst einmal der gesamte Videospeicher gelesen wird, selbst wenn es dann nur runterskaliert ausgegeben wird.


    Kennt sich denn jemand mit boblight aus? Mein Ambilight (ada102) hängt an einem Atmel Controller und funktioniert mit Hyperion. Wenn ich VDR mit boblight-Plugin starte, habe ich einen segmentation fault.

    Ich denke ich weiß, wo das Problem mit meinem Bild liegt (und jojo61 müsste noch dasselbe Problem beim Grabben haben):


    The driver needs to allocate memory for a whole frame, but its more than the kernel allows in its default configuration.
    To make the driver work the FORCE_MAX_ZONEORDER parameter in arch/arm64/Kconfig needs to be changed from "11" to "13" (https://forum.odroid.com/viewtopic.php?t=20901).


    Wenn ich aber den Kernel übersetze mit "13", bootet er nicht mehr. Ich kann zwar über Petitboot booten, VDR läuft aber gar nicht mehr. Ich frage mich nur, wie CoreElec das macht, hier steht der Wert auch auf "11".


    jojo61 Hast Du ein komplettes UHD-Bild grabben können, oder fehlt Dir da auch die Ecke?

    jojo61 Ja, der AML grabber kann skalieren mit hyperion-aml --screenshot -s30, aber auch das Bild ist kaputt. Im live-Mode funktioniert es super. Ich habe mir mal CoreElec angeschaut. Die nutzen bei hyperion auch den aml grabber, der schaltet aber auf framebuffer um und nutzt nicht die VPU, wenn ich ich das richtig sehe.


    Die Kernel sollten da sein. Wenn Du Fragen dazu hast, melde Dich. Ich freue mich auf PIP. Danke dafür.

    Mein aktueller Status ist wie folgt:


    Ich habe Fehler beim AMLOGIC Grabber auskommentiert, damit ich zumindest einen Teil des Bilds sehe. Die Datei ist AmlogcGrabber.cpp (hyperion.ng), wo ich folgende Änderung gemacht habe:



    Ich habe 2 Kernel, die prinzipiell funktionieren. Einmal der Patch von weiter oben, den ich gepostet habe. Mit diesem minimal geänderten Kernel kann ich hyperiond starten und der Grabber funktioniert. Allerdings gibt es ein Problem, wenn ich 4K abspiele oder Aufnahmen, während hyperiond läuft. Das Bild flimmert dann grünlich und irgendwann gibtss einen Kernel ooops. Das passiert nicht, wenn ich hyperiond starten, nachdem das Video/Bild läuft.


    Dann habe ich einen 2. Kernel, bei dem ich media für AMLOGIC komplett mit den CoreElec-Treibern ersetzt habe. Hier sind die Aufnahmen schwarz und ich höre nur den Ton, Live-TV funktioniert, auch mit hyperiond. Ich glaube, jojo61 , wenn Du Zeit hast, müssen wir gemeinsam überlegen, wie man weiterkommen kann. Ich kann gerne den SourceCode beider Kernels zur Verfügung stellen, falls jemand mitschauen mag.


    LG

    beta

    Ich nähere mich. Das Bild ist mit dem Amlogic-Grabber gemacht, den ich noch einmal ein wenig angepasst habe.



    Ich vermute, dass das Speichern des Bildes zu langsam ist für 4k. Mit einem Ubuntu-Kernel, in den ich alle CoreElec amlogic media-Treiber kopiert habe (das war ein Stunt!!!!), funktioniert hyperion in 4k mit meinem angepassten hyperion-aml. Allerdings habe ich mit diesem Kernel das Problem, dass VDR-Aufnahmen nicht mehr abgespielt werden können.

    Ich versuche nun einen Kernel mit minimalen Änderungen so zu gestalten, dass das mit meinem angepassten amlogic-grabber passt. Sobald das läuft, mache ich einen Kernel-Patch und ein kleines Howto...


    Die hyperiond CPU-Last liegt bei 20% mit 10 Bildern pro Sekunde in 4k :-)


    jojo61 : Ich will Deinen Thread nicht kapern. Ist das für Dich ok, oder soll ich einen neuen aufmachen?


    LG

    beta

    jojo61 : Ein Punkt ist mir noch aufgefallen. hyperion bietet ja auch einen framebuffer grabber. Der liefert aber mit Deinem Plugin ein schwarzes Bild zurück, wenn das Video läuft. Wenn kein Video oder TV läuft und das OSD an ist, dann liefert dieser grabber das OSD, allerdings um den Faktor 4 zu klein in der oberen linken Ecke des Bildes. Gibt es eine Möglichkeit, video und osd krrekt auf den Framebuffer zu mappen?

    Hallo, wenn Du willst kannst Du Kernel und Module haben. Ich kann Dir die Sachen per Link zur Verfügung stellen.

    Das nützt ihm ja nichts, solange das grab auf einen Fehler läuft. Da stimmt noch was im Kernel nicht...

    Wenn das im Kernel korrigiert ist, läuft das Ambilight mit Hyperion und AML Grabber von ganz alleine. jojo61 kann da nichts dran machen...

    Wenn ich das richtig sehe, sollte der AMLOGIC Grabber direkt das Bild zur Verfügung stellen. Das funktioniert bei mir aber nicht, sondern es kommt o.g. Fehlermeldung. Ich habe heute versucht, die kompletten Teile des CoreElec-Kernels in den Ubuntu-Kernel zu integrieren. Damit habe ich dann aber leider bei VDR kein Bild mehr. Es ist also leider nicht so einfach, wie ich dachte.

    Am sinnigsten wäre es wahrscheinlich immer noch, wenn man den CoreElec-Kernel unter Ubuntu booten könnte...

    Ich habe mal den Ubuntu-Kernel gepatcht, um den ambilight commit von oben in den Ubuntu-Kernel zu bekommen.

    Das ist der patch: ambi.patch. Der patch ergibt 2 rejects, die ich händisch aufgelöst habe (das sind nur ein paar Zeilen in 2 Dateien).

    Das capture-Device habe ich aktiviert, so wie vorher beschrieben. Weiterhin muss man aus dem Kernel-Makefile -Werror auskommentieren. Der Kernel übersetzt dann und bootet auch.


    hyperion.ng erkennt den AML-Grabber. Allerdings gibt hyperion-aml folgenden Fehler aus:


    Code
    1. 2021-11-19T17:08:50.442  AMLOGICGRABBER        : <ERROR> Capture failed to grab entire image [bytesToRead(24883200) != bytesRead(24876720)]

    Die LEDs bleiben leider aus. Hat jemand eine Idee?


    LG

    beta

    Leider ist das nicht ganz so einfach. Wenn Du das config von CoreElec nimmst, läufst Du auf compile-Fehler bezüglich der Medientreiber, da diese als Module im Cross-Build dazu gemergt werden.


    Hier steht mehr dazu.

    Ich habe eine Möglichkeit gefunden, wie man ein Odroid Dualboot realisieren kann, das man mit der Fernbedienung hin- und her-schalten kann. Ich habe Ubuntu 20.04 mit jojo61 's Plugin auf einer eMMC installiert und CoreElec auf einer SD-Karte. Beide befinden sich im Odroid N2+. Die Auswahl mit Petitboot funktioniert nur, wenn ich den Netzstecker ziehe, aber nicht nach einem Reboot. Den Schalter so stellen, dass er vom eMMC und nicht vom SPI Flash bootet. In diesem Zustand bootet der Odroid zunächst vom eMMC den VDR.


    Ich habe mit dd den Bootloader mit Partitionstabelle so gesichert:


    sudo dd if=/dev/mmcblk0 of=./bootloader.img bs=512 count=2047


    Ein sudo fdisk -l /dev/mmcblk0 hilft, die Blocksize und den count bis zur ersten Partition zu finden.

    Die fängt bei mir mit Sektor 2048 an. Den gesicherten Bootloader muss man dann auf die SD-Karte mit CoreElec übertragen (z.B: ins Verzeichnis .kodi/userdata).


    Jetzt kann man die Boot-Signatur des eMMC kaputt machen:


    sudo dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=3


    Nach einem Reboot bootet der Odroid jetzt das CoreElec von der SD-Karte. Dort repariere ich den Bootloader des eMMC wieder mit dem gesicherten Bootloader


    dd if=bootloader.bin of=/dev/mmcblk0 bs=512


    so dass der nächste Reboot wieder von der eMMC bootet.


    Ich weiß, das ist nicht die feine Art, aber die einzige Möglichkeit, die ich gesehen habe, per Fernbedienung und Scripten zwischen VDR mit softhdodroid und KODI mit Beschleunigung umzuschalten. Vielleicht hilft das ja dem einen oder anderen.


    Bitte macht ein Backup von Euren Images, bevor Ihr Euch mit dem dd-Befehl verhaut...


    LG

    beta