[rockpro64] Ausgabe-Plugin softhddevice-drm - notwendige Schritte

  • Hallo zusammen,


    nun hatte ich ein wenig Zeit, erfolgreich das Ausgabe-Plugin von zillerbaer und allen weiteren Schritte für ein rockpro64 durchzuführen!

    Vielen Dank an zillerbaer , JoeBar , nafets227 , S:oren und allen weiteren die hier im Forum mit Tipps aushelfen ... :)


    Hier meine Notizen, um ein VDR mit Ausgabe-Plugin zu installieren:


    1. Distribution


    Ich nutze Armbian mit Debian-Buster mit stabilen 5.10.y Kernel. Das findet man hier. Das Image lädt man hier.
    Password für den User root: 1234 (wird beim ersten Login sofort geändert...)


    Der Kernel, FFmpeg und VDR wird auf dem rockpro64 selbst gebaut....


    2. Kernel


    Was muss beim Kernel beachtet werden?

    * Kernel-Version!

    * Kernel-Patches von LibreElec

    * Kernel-Konfiguration --> .config


    Sehr viel mehr Details gibt es hier vom User JoeBar . :thumbup:


    Welche Kernel-Version muss genutzt werden?

    Siehe hier: https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/linux/package.mk#L31


    Man muss also die Version: 5.10.47 nutzen. PKG_VERSION="5.10.47"


    Hinweis: Ich baue alles im Home-Verzeichnis des genutzten Users, nicht als root den Kernel bauen!

    cd ~

    wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.47.tar.xz
    tar -xf linux-5.10.47.tar.xz
    ln -s linux-5.10.47 linux


    Kernel patchen!


    git clone --depth=1 https://github.com/LibreELEC/LibreELEC.tv (Enthält die Kernel-Patches)

    cd linux

    touch patches.sh (Danke an zillerbaer für das Script)

    mcedit patches.sh

    Shell-Script
    1. #!/bin/bash
    2. path="../LibreELEC.tv/projects/Rockchip/patches/linux/default/"
    3. for datei in `ls ../LibreELEC.tv/projects/Rockchip/patches/linux/default`
    4. do
    5. case "$datei" in
    6. *.patch) cat $path$datei | patch -p1 ;;
    7. esac
    8. done


    sh patches.sh (Patches werden auf den Kernel angewendet)


    Aktuell (Kernel 5.10.47) werden folgende Patches angewendet:



    Zusätzlich nutze ich noch den Patch rockpro64-5.10.diff - Danke an S:oren für den Patch!


    Einspielen der .config-Datei, hier im Anhang … vielen Dank dafür an  zillerbaer .:)

    (Umbenennen von config-5.10.47.txt nach .config!


    make oldconfig

    oder

    yes "" | make oldconfig


    In der Datei /etc/apt/sources.list müssen die Source-Einträge Einträge deb-src .... aktiviert werden. Danach ein sudo apt update.


    sudo apt install build-essential bc git wget bison flex libssl-dev make libncurses-dev


    Für weitere Treiber im Menu auswählen:

    make menuconfig


    Kernel, Module und DTB-Module bauen... (dauert lange...)

    make -j$(nproc) Image modules dtbs

    sudo make modules_install

    sudo make install

    sudo mkdir /boot/dtb-5.10.47

    sudo mkdir /boot/dtb-5.10.47/rockchip

    sudo cp arch/arm64/boot/dts/rockchip/*.dtb /boot/dtb-5.10.47/rockchip/

    cd /boot

    sudo ln -s dtb-5.10.47 dtp

    cd ~


    Das /boot Verzeichnis sollte nun folgende Links auf den neuen Kernel 5.10.47 enthalten. (für Armbian, bei anderen Distris wird dies bestimmt ähnlich durchgeführt...)

    ls -la /boot

    Code
    1. ...
    2. lrwxrwxrwx 1 root root 11 Jul 21 20:40 dtb -> dtb-5.10.47
    3. ...
    4. lrwxrwxrwx 1 root root 15 Jul 21 20:28 Image -> vmlinuz-5.10.47
    5. ...
    6. lrwxrwxrwx 1 root root 15 Jul 22 22:00 uInitrd -> uInitrd-5.10.47
    7. ...


    Reboot und mit neuem Kernel booten...

    sudo reboot


    Man sollte nun folgende Einträge vorfinden:


    Code
    1. ~$ dmesg | grep video
    2. [ 7.491670] videodev: Linux video capture interface: v2.00
    3. [ 7.575949] rockchip-iep ff670000.iep: Device rockchip-iep registered as /dev/video1
    4. [ 7.622023] rkvdec ff660000.video-codec: Adding to iommu group 1
    5. [ 7.639841] hantro-vpu ff650000.video-codec: Adding to iommu group 0
    6. [ 7.642212] hantro-vpu ff650000.video-codec: registered rockchip,rk3399-vpu-enc as /dev/video3
    7. [ 7.643126] hantro-vpu ff650000.video-codec: registered rockchip,rk3399-vpu-dec as /dev/video4


    Als nächstes wird FFmpeg gepatcht und konfiguriert!


    Gruß

    Uwe

    Files

    The post was edited 6 times, last by Uwe ().

  • 3. FFmpeg


    Eine sehr gute Beschreibung gibt es hiervon JoeBar für FFmpeg.


    Welche FFmpeg Version muss genutzt werden, damit die Patches passen?

    Siehe hier: https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/multimedia/ffmpeg/package.mk#L6


    Man muss also die Version "4.3.2-Matrix-19.1" nutzen. PKG_VERSION="4.3.2-Matrix-19.1"


    cd ~


    wget https://github.com/xbmc/FFmpeg/archive/4.3.2-Matrix-19.1.tar.gz


    tar -xf 4.3.2-Matrix-19.1.tar.gz


    ln -s FFmpeg-4.3.2-Matrix-19.1 FFmpeg


    cd FFmpeg


    Hinweis: LibreElec muss wie im ersten Post zu sehen, im Ordner ~/LibreELEC.tv zu finden sein..., dort sind die erforderlichen Patches enthalten!


    patch -p1 < ../LibreELEC.tv/packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch

    patch -p1 < ../LibreELEC.tv/packages/multimedia/ffmpeg/patches/v4l2-drmprime/ffmpeg-001-v4l2-drmprime.patch

    patch -p1 < ../LibreELEC.tv/packages/multimedia/ffmpeg/patches/v4l2-request/ffmpeg-001-v4l2-request.patch

    patch -p1 < ../LibreELEC.tv/projects/Rockchip/patches/ffmpeg/ffmpeg-0002-WIP-deint-filter.patch

    patch -p1 < ../LibreELEC.tv/projects/Rockchip/patches/ffmpeg/ffmpeg-0003-libavfilter-v4l2deinterlace-dequeue-both-destination.patch


    Die Konfiguration von ffmpeg ist im Anhang zu finden, vielen Dank dafür an zillerbaer . :)


    sh Konfiguration_ffmpeg_rockpro64.sh


    Notwendige Librarys für FFmpeg installieren:

    sudo apt-get --yes build-dep ffmpeg

    sudo apt-get --yes install autoconf frei0r-plugins-dev ladspa-sdk libaom-dev libc6-dev libcdio-paranoia-dev librtmp-dev libtool libdrm-dev


    Weitere erforderliche Programme:

    cd ~

    git clone https://github.com/acoustid/chromaprint.git

    cd chromaprint

    cmake -DHAVE_AV_FRAME_ALLOC=1 -DHAVE_AV_FRAME_FREE=1 .

    make -j$(nproc)

    sudo make install

    cd ~

    git clone https://github.com/mstorsjo/fdk-aac.git --depth 10

    cd fdk-aac

    ./configure --enable-shared

    make -j$(nproc)

    sudo make install

    cd ~

    git clone https://github.com/ultravideo/kvazaar.git --depth 10

    cd kvazaar

    ./configure --enable-shared

    make -j$(nproc)

    sudo make install

    cd ~

    git clone https://github.com/sekrit-twc/zimg.git --depth 10

    cd zimg

    ./configure --enable-shared

    make -j$(nproc)

    sudo make install


    cd ~

    cd FFmpeg

    make -j$(nproc)


    Wenn die Headerdatei drm_fourcc.h nicht gefunden wird, hilft vielleicht folgendes:


    C
    1. /** * @file * deinterlace video filter - V4L2 M2M */
    2. -#include <drm_fourcc.h>
    3. +#include <libdrm/drm_fourcc.h>
    4. #include <linux/videodev2.h>


    sudo make install


    FFmpeg sollte nun installiert sein! :)

    Es folgt nun die Installation von VDR im nächsten Post!


    Gruß

    Uwe

    Files

    The post was edited 7 times, last by Uwe ().

  • 4. VDR


    Für die Installation kann man sich an das Script von nafets227 halten, ist zwar für den rpi4, aber vieles ist ähnlich.

    Das Script findet man hier: https://github.com/nafets227/raspi4-vdr-setup


    Stichpunkte:


    cd ~

    mkdir VDR

    cd VDR

    git clone git://git.tvdr.de/vdr.git

    cd vdr

    Anpassen von Make.config an eigene Bedürfnisse...


    Erforderliche Abhängigkeiten für VDR installieren.

    sudo apt-get --yes build-dep vdr


    make -j$(nproc)

    sudo make install 


    softhddevice-drm:

    git clone https://github.com/zillevdr/vdr-plugin-softhddevice-drm.git --depth 10

    cd vdr-plugin-softhddevice-drm

    make -j$(nproc)

    sudo make install


    cecremote:

    sudo apt-get --yes install cmake libp8-platform-dev libudev-dev libxrandr-dev python-dev swig 


    git clone https://github.com/Pulse-Eight/libcec.git --depth 10

    cd libcec

    mkdir -p build

    cd build

    CMAKE_PREFIX_PATH=/usr/lib/arm-linux-gnueabihf/p8-platform

    cmake -DHAVE_LINUX_API=1 ..

    make -j$(nproc)

    sudo make install 


    git clone https://git.uli-eckhardt.de/vdr-plugin-cecremote.git

    cd vdr-plugin-cecremote

    make -j$(nproc)

    sudo make install 


    Welches Audio-Device gibt es?

    aplay -l

    Code
    1. **** Liste der Hardware-Geräte (PLAYBACK) ****
    2. Karte 0: rockchiprk3399 [rockchip,rk3399], Gerät 0: ff890000.i2s-ES8316 HiFi ES8316 HiFi-0 [ff890000.i2s-ES8316 HiFi ES8316 HiFi-0]
    3. Sub-Geräte: 1/1
    4. Sub-Gerät #0: subdevice #0
    5. Karte 1: HDMI [HDMI], Gerät 0: ff8a0000.i2s-i2s-hifi i2s-hifi-0 [ff8a0000.i2s-i2s-hifi i2s-hifi-0]
    6. Sub-Geräte: 0/1
    7. Sub-Gerät #0: subdevice #0


    Somit nutze ich unter /etc/vdr/conf.d in der Datei 25-softhddevice.conf mit folgenden Inhalt:

    Code
    1. # softhddevice-drm Plugin für VDR
    2. [softhddevice-drm]
    3. # HDMI Sound
    4. -a hw:1,0
    5. #RockPro64 OnBoard Sound Card
    6. #-a hw:0,0


    Audio-Setup:
    Hinweis: Leider ist aktuell nur HDMI Sound mit PCM möglich, kein Pass-Through, kein DD, AC3 …


    Bei meinem Setup (Soundbar über HDMI-Arc angeschlossen) gab es Störungen im Ton, mal mehr, mal weniger…


    1.Methode
    : Ich habe im Setup des Plugins unter Audio die Lautstärkesteuerung von Hardware auf Software gesetzt. Nun habe ich die Lautstärke von VDR (Setup, Sonstiges —> Lautstärke beim Einschalten: auf den Wert 200 gesetzt. Ich ändere die Lautstärke über den TV (Soundbar).

    Hier meine Einträge in der setup.conf:

    2.Methode:

    Im Setup des Plugins unter Audio die Lautstärkesteuerung von Hardware auf Software gesetzt. Zusätzlich wird Aktiviere Lautstärkenormalisierung: ja und bei Max. Normalisierungsfaktor (/1000): 850. Nun habe ich die Lautstärke von VDR (Setup, Sonstiges —> Lautstärke beim Einschalten: auf den Wert 255 gesetzt. Ich ändere die Lautstärke über den TV (Soundbar).

    Hier meine Einträge in der setup.conf:


    Nun sollte über HDMI ein Bild mit Ton zu sehen sein. Über die Fernbedienung des TV sollte man nun den VDR grundlegend bedienen können… :)

    Fazit:


    Die CPU-Last ist meist um die 10%, wenn man im Live-View ist. Hier mal ein Beispiel: VDR befindet sich aktuell auf dem Kanal: rbb-HD.


    Eine DD Max-S8 läuft direkt im PCIe-Slot über Unicable…

    Code
    1. > dd_temperature.sh
    2. [hit CTRL+C to stop]
    3. DDBridge 0 -> 50°C
    4. DDBridge 0 -> 49°C
    5. DDBridge 0 -> 49°C


    Es folgt noch ein IR-WakeUp, aber sonst gibt es nichts zu meckern…


    Wünsche:
    - HDMI-Pass-Through - besseres Audio-Setup…

    - andere Auflösungseinstellungen, z.B. für ein 4K-Setup… Aktuell wird auf Auflösung am TV auf 1080p festgesetzt.

    - Für mein skinnopacity wäre es toll, wenn das TV Bild kleiner im „Fenster“ dargestellt werden könnte…

    - Radio-Programme funktionieren (auch die neuen ARD-Radio Programme), aber mit hoher CPU-Usage...

    … wird fortgesetzt. 😉


    Insgesamt funktioniert alles sehr gut! Vielen Dank zillerbaer 😁


    Gruß

    Uwe

    The post was edited 11 times, last by Uwe ().