VDR auf 40€ TV-Box - Tanix TX3 und ähnlichen Amlogic basierten Boxen

  • Hallo an die Runde.

    Dies soll ein extra Thread sein um die Diskussion um das Plugin softhdodroid für Amlogic boards nicht noch mehr zu vermüllen.


    Hier soll alles rein was nicht direct mit dem Plugin zu tun hat.

    Also Dinge wie Betriebssystem, Booten, Kernel, Device Tree, ...

    Und Nur für Amlogic-Boxen. Für andere SOCs sollten wir beiBedarf einen anderen Thread aufmachen. (Auch wenn vieles ähnlich ist)

    Die TX3 wird zum Beispiel bei Geekbuying um ca. 40€ verkauft (4GB RAM, 64GB Nand, Lager in DE).

    SOC ist ein Amlogic S905X3 (4*A55).


    Es gibt ähnliche Boxen wie z.B. die X96 MAX+ (das + ist wichtig) , aber oft mit unterschiedlichem Innenleben.

    Auch gefälschte Geräte werden verkauft.


    Die X96 MAX+ ist etwas teurer, daher lohnt sich das Risiko nicht.

    (Sie sollte aber gut laufen, für die TX3 verwende ich den DeviceTree der X96 Max+)


    Ich habe auch zwei Boxen gefunden mit internem 2.5" SATA-Anschluss (gleicher SOC). Preise um die 80€.

    Boxen mit dem S922X sind selten und meist deutlich teurer.


    Den S912 sollte man meiden, ebenso die anderen Varianten with S905X4, X2, X, W und L.

    Bei diesen sind eventuell Probleme zu erwarten. Für einen PiHole sind sie aber geeignet. Preise 25€ aufwärts.


    Im nächsten Beitrag werden ich den Status Quo beschreiben.

    Mitstreiter gesucht!


    Edit1: Die Box wird als 100MBIT LAN verkauft und das ist mit Android auch so. Aber mein DTB verwendet 1GB.

    Da habe ich auch in anderen Foren so gelesen.

    Grüße, Dieter :-)

    The post was edited 1 time, last by Dieter ().

  • Hi,

    was bisher geschah.


    TX3 bestellt weil OdroidN2+ nicht lieferbar war (Mit diesem Board oder der C4 hat man es einfacher).

    CoreElec-Image auf SD-Karte und mit "ToothPick"-Methode gebootet. CE läuft. Wer nur Kodi will kann damit schon glücklich sein.


    Dann Versuche Armbian/LibreElec zu booten, wird aber ignoriert.

    Nach Analysen der U-Boot-Details und löschen der Variablen "BootFromSD" kann man auch die anderen OS wieder Booten.

    Dort findet man mehr Details dazu.


    Auf Armbian VDR installiert und versucht das Odroid plugin zu bauen. Nach wenigen Anpassungen lief der Compiler durch (Jojo hat sein GitHub angepasst).

    Leider kommt Armbian ohne libmali (kann man sicher einbauen).

    Der einfachte Weg war auf Ubuntu zu verwenden, das verwende Jojo auch.


    Das Minimal-Image von Odroid (N2+ oder C4) bootet natürlich nicht auf der Box weil der Bootvorgang total anders ist.

    Den hatte ich aber von Armbian, daher habe ich das Rootfs von Armbian mit dem von Ubuntu ersetzt (File copy).

    Dann noch von Armbian die /lib/modules/5.15.23-flippy-69+ in die Ubuntu-Partition kopiert (bootet auch ohne, war erst zweiter Schritt).


    Später noch einen Kernel 5.16.10 gebaut. Auch der bootet.

    Als DeviceTree habe ich nach eingen Versuchen diese genommen: dtb/amlogic/meson-sm1-x96-max-plus.dtb.

    (WLAN geht noch nicht, anderer Chip).


    Leider findet das Odroid Plugin nicht seine Schnittstellen (kein /dev/amvideo).

    Ich vermute (ziemlich sicher) dass die neueren Kernels direct über V4L2 arbeiten und das Plugin angepasst werden muss.


    Ein Versuch den Kernel von Beta68 zu verwenden scheitert bisher am fehlenden DeviceTree für V4.9.

    Am DT arbeite ich gerade, ist aber etwas Aufwendig.

    Grüße, Dieter :-)

  • Ich denke der derzeit einzige Weg geht über den Kernel 4.9 da nur dort die Hardkernel erweiterungen drin sind. Das macht Corelec ja auch so. Upstream sind da nur wenige Dinge für den Odroid-N2 im Kernel.


    Ich hoffe du kommst mit dem Devicetree weiter und der VDR kommt zum laufen. Eine billigere Variante für UHD kann ich mir kaum vorstellen. Ich unterstütze gerne wo ich kann mit evtl. nötigen Änderungen am Plugin.


    mfg

    Jojo61

  • Hallo Jojo,

    bin nicht so sicher das nur wenig im Upstream ist. Es gibt einen Menge Patches für die Kernel seit 4.9.

    In drivers/media gibt es einiges zu Amlogic, ist aber total anders structuriert als bei Odroid.

    Daher meine Annahme dass dein plug angepasst werden müsste. In dem Fall sollte man es umbenennen mit Amlogic im Namen.


    Unter dem /sys-Verzeichnis gibt es ein Gerät das "Decoder" im Namen hat.

    /driver/media war ja mal meine "Heimat" im Kern (neben arch/arm). War aber mehr die Kamera-Seite und lange vor DT, so um 2006.

    Grüße, Dieter :-)

  • Das Projekt sieht sehr Interessant aus! :)


    Gruß

    Uwe

    The post was edited 1 time, last by Uwe ().

  • Hi,

    Jungfräuliches printenv habe ich jetzt. Der Befehl defenv setzt alles zurück.


    Ophub kenne ich. Dort habe ich auch schon geclont


    Habe heute den Bootvorgang nochmals genauer analysiert und eigene aml_autoscript, s905_autoscript, boot.scr gebaut.

    Jetzt stört die Variable bootfromsd (von CoreElec) nicht mehr.


    Der Versuch den Kern von CoreElec über meine scripts zu booten hat bisher noch nicht geklappt. WIP

    Den Kern von Beta68 bekomme ich auch noch nicht gebootet (deshalb der Versuch mit CE).


    Aber ich habe die DTs con CE in den Kern von Beta68 eingebaut. Da fehlt mir jetzt plötzlich die Initrd. Dachte immer die wird automatisch vom Kerenl Makefile gebaut. War aber wohl der Armbian-Build der mir die für 5.x gebaut hatte.

    Falls Beta68 mitliest: Wie baust du die Initrd? Oder brauchst du die nicht? Dann müsste ich die Bootscripts anpassen.

    (meine Kerne für Embedded brauchten nie eine Initrd ).

    Grüße, Dieter :-)

  • Danke, schaue ich mir an.


    Alle 4.x Kernel starten nicht. Alle 5.x die ich gebaut habe laufen.

    Das muss ein systemischer Fehler sein.

    Habe heute viele Versuche mit U-Boot gemacht.

    Auch Sourcen analysiert, aber noch kein Durchbruch.


    Die 4.x haben eine reloc section. Die 5.x nicht.

    Könnte sein dass da der Hase liegt. U-boot?


    Edit: Dein Kern baut nicht in der Umgebung von Armbian (ophub). Dort wird clang benutzt. Habe den Script angepasst damit gcc verwendet wird, dann baut es. Clang motzt an verschiedenen arrays in structs herum. Sollen angeblich keine size haben. Ist aber "unrelated".

    (Diese Umgebung damit ich eine uinitrd bekomme.)


    Die Sourcen der u-boot.ext (chainloaded simplified u-boot) habe ich noch nicht gefunden.

    Grüße, Dieter :-)

    The post was edited 1 time, last by Dieter ().

  • Da ich mit dem 4.9 Kern noch nicht weiter gekommen bin, habe ich zunächst die Details des Bootvorganges dokumentiert:

    amlogic-u-boot-scripts

    Grüße, Dieter :-)

  • Aus meiner Sicht macht es Sinn corelec als Boot Loader zu verwenden, da es ein perfekt laufendes Ökosystem mitbringt. CE ist nämlich ein hybrides System bestehend aus einem 64Bit Kernel und 32Bit Userland Programmen. Denkbar wäre es die SYSTEM-Datei durch eine Initrd im gleichen Format zu ersetzten, die dann das Ubuntu in der Hardkernel-Variante startet.


    Einfacher wäre aber das Vorgehen, wie es beta68 mit Kodi vorgeführt hat. Nur dass statt CE in einer chroot-Umgebung das Ubuntu von Hardkernel zum Einsatz kommt. Dann hätte man auch Kodi zur Verfügung.


    Hans-Peter

  • Ich befürchte, dass das nicht so einfach werden wird. Bzgl. KODI bin ich relativ weit gekommen mit meinem Kernel, letzten Endes aber an der Hardware-Beschleunigung gescheitert, da ich hier keine Sourcen habe. Ich befürchte, dass selbst mit CE Kernel KODI immer noch in einer chroot-Umgebung betrieben werden muss, um die Crashes in der amlvideolib loszuwerden.


    Mir ist es allerdings noch nicht gelungen, den CE-Kernel mit Ubuntu rootfs zu booten.

  • Kann man nicht vdr mit softhdodroid direkt in CE laufen lassen ( mit beendeten Kodi)? Lässt sich das Linux in CE nicht dafür erweitern?

    ACT-620, Asrock B75 Pro3-M, 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.

  • Hallo Allerseits,

    Hier ist mein Status bezüglich U-Boot:

    • Kernel 4.9 bootet einfach nicht (Alle x Varianten, auch von CE, aber separat übersetzt).
    • Kernel 5.x bootet. (über u-boot.ext, siehe unten)
    • Habe gelesen dass Mainline U-Boot alles älter als 4.14 nicht mehr booten kann. Das würde es erklären.
      Dies betrifft den "Chainloaded U-Boot.exe". Ist ja Mainline von 2021.
    • Weder bootm noch booti gehen mit 4.9. Auch nicht die paar Zeilen vom CE-Script.
    • CE Kernel kann ich booten. (Der bricht dann irgendwann ab weil ich system.img und die Storage-Partition nicht habe).
      War ja auch nur ein Test der Boot-Fähigkeit. Dafür muss ich aber sehr in die Details der U-Boot-Scripte gehen.
      Meine Testscript ist ürsprünglich von Armbian abgeleitet und mit den bootm-Zeilen von CE, aber kein u-boot-exe.
    • Der CE-Kernel (kernel.img) hat die "Magic" "ANDROID!!". Das ist vermutlich der Schlüssel für 4.9. Alle anderen Kernels hatten das nicht.
    • Bin gerade am Suchen wie die CoreElec-Kernel gebaut werden. Vermutlich ist da sowas with ein mkimage am Schluss (mkimage kann aber dieses Format wohl nicht). Dann könnte ich das auf den Kernel von Beta68 anwenden und Booten.
    • Der CE-Kernel hat CONFIG_ANDROID=y in der .config


    Nach diesem Post werde ich das "make image" von CE anstoßen.


    @ Dr. Seltsam: Das war als zweite Stufe geplant. VDR als Pluging zu CE. Wäre ein sehr schlankes System.

    Grüße, Dieter :-)

  • Das war als zweite Stufe geplant. VDR als Pluging zu CE. Wäre ein sehr schlankes System.

    In CE gibt es doch auch noch die Möglichkeit über Docker andere Programme zu starten.

    Ich habe keinerlei Erfahrungen bzgl. Docker usw. und das ist nur so eine idee die ich hatte.

    Würde das auch für den VDR gehen?

  • Docker ist mir bei CE auch schon über den Weg gelaufen. Da gibt es etwas im Repository.


    Ich habe inzwischen vdr unter CE am laufen. Es gibt da noch ein paar Probleme aber grundsätzlich läuft vdr und Kodi.

    • CE auf sdcard kopiert
    • CE gebootet
    • Setup durchlaufen, ssh konfiguriert
    • In /storage Verzeichnis UBUNTU eingerichtet
    • Hardkernel Ubuntu Minimal C4-Image in UBUNTU ausgepackt
    • per ssh auf die Box
    • chroot Umgebung mit ubuntu.sh eingerichtet
    • $PATH gesetzt (siehe ubuntu.sh)
    • in UBUNTU chroot . /bin/bash
    • ppa von Seahawk eingebunden
    • Bionic Hardkernel Repository auf focal umgestellt
    • apt update / upgrade
    • mali_fbdev installiert
    • apt install vdr satip
    • softhdodroid kompiliert, es ging auch das vom Odroid N2+
    • Kodi ausserhalb von chroot mit systemctl stop kodi beendet
    • vdr innerhalb von chroot gestartet:
      vdr --lirc -P 'softhdodroid -a hw:CARD=AMLAUGESOUND,DEV=0' -P satip

    Läuft

    Es gibt noch ein paar Darstellungsprobleme bei mpeg2-Sendern: kein 16:9. Nach dem einmaligen Aufruf von vdr bleibt bei Kodi beim abspielen von Videos der Bildschirm dunkel.


    Hans-Peter

  • hape60 ,

    welche Box hast du?


    Paulaner :

    Ich habe VDR headless in zwei Containern am Laufen.

    Einen für Astra 19.2, den zweiten für Astra 28.8 English.

    Empfang via SatIP.

    Allerdings auf X86.


    Auf meiner N2+ laufen auch 11 Container, aber kein VDR.


    @Alle

    Habe herausgefunden wie der CE kernel.img gebaut wird.

    Es gibt ein Tool mkbootimg, das macht das aus dem arch/arm64/boot/Image.

    Quelle ist dabei.


    PS: Das Buildsystem ist sagen wir mal verbesserungswürdig.

    Baut hier auch nicht durch, es fehlen Dateien auf den Servern (falsche SHA1 in den configs - einmal hat sogar das Verzeichnis gefehlt).

    Grüße, Dieter :-)

  • Ich habe inzwischen vdr unter CE am laufen

    Leider ist der CE Kernel etwas veraltet und da läuft kein PIP. Aber der Weg Ubuntu unter chroot laufen zu lassen ist interessant.

    Das es Probleme mit CE Kernel und mpeg2 Streams gibt ist mit neu. Kann denn Kodi das richtig darstellen ? Im Prinzip habe ich ja Teile für softhdodroid

    von Kodi abgeschrieben, sollte also gleich gut laufen :-)


    Statt dem CE Kernel wäre der neuere Kernel von beta besser. Da sind komplett überarbeitete Video Routinen drin und er läuft auch stabiler.


    Ich habe mir auch mal den 5.15er Kernel angesehen. Da sind die Hardkernel Videodekoding Sachen alle raus und er basiert auf v4l2 und dem dri API.

    Das würde eine komplett andere Implementierung erfordern. Das muss ich mir noch überlegen ob sich das lohnt :-) Für den Raspi hatte ich mal sowas angefangen.


    Ich hoffe es findet sich noch ein Weg um den Kernel von beta zu booten damit auf dem Tanix ein vdr ohne Klimmzüge zum laufen kommt.

    Sobald der Tanix TX3 wieder in D lieferbar ist werde ich mir wohl einen zum Basteln besorgen. Billiger gehts ja kaum zum vdr.