# Orange Pi 5 Plus HW Acceleration ## Install OpenCL Mali610 [link orig](https://ib.bsb.br/setting-up-gpu-drivers-on-rk3588/#installing-mali-gpu-driver) https://github.com/tsukumijima/libmali-rockchip/releases Download libmali-g610.so cd /usr/lib sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11-wayland-gbm.so -O libmali-g610.so utilizzata anche funziona ??? sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/lib/aarch64-linux-gnu/libmali-valhall-g610-g24p0-x11-wayland-gbm.so -O libmali-g610.so Ensure Firmware File Exists su cd /lib/firmware ls mali_csffw.bin if not exit sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/firmware/g610/mali_csffw.bin exit form su exit Configuring OpenCL ICD Loader: Install Mesa OpenCL ICD, Create OpenCL Vendors Directory and Add Mali ICD Configuratio sudo apt update sudo apt install mesa-opencl-icd -y sudo mkdir -p /etc/OpenCL/vendors echo "/usr/lib/libmali-g610.so" | sudo tee /etc/OpenCL/vendors/mali.icd Installing OpenCL Libraries and their dependencies sudo apt install ocl-icd-opencl-dev -y sudo apt install libxcb-dri2-0 libxcb-dri3-0 libwayland-client0 libwayland-server0 libx11-xcb1 -y Verifying Installation with clinfo sudo apt install clinfo -y clinfo output like ```bash arm_release_ver: g13p0-01eac0, rk_so_ver: 3 Number of platforms: 2 Platform Name: ARM Platform Platform Vendor: ARM Platform Version: OpenCL 2.1 v1.g6p0-01eac0.2819f9d4dbe0b5a2f89c835d8484f9cd Platform Profile: FULL_PROFILE ... ``` ____________________________________________________________________________________________________________________________________________________________ ## Installare Vulkan [ref](https://github.com/Bleach665/Mali610Vulkan) [ref deb file](https://repo.rock-chips.com/edge/debian-release-v2.0.0/pool/main/r/rockchip-mali/) scaricare ed installare il pacchetto deb wget https://repo.rock-chips.com/edge/debian-release-v2.0.0/pool/main/r/rockchip-mali/rockchip-mali_1.9-12_arm64.deb sudo dpkg -i rockchip-mali_1.9-12_arm64.deb fare il link sudo ln -s /usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-wayland-gbm-vulkan.so /usr/lib/aarch64-linux-gnu/libmali.so inserire icd Loader ```bash sudo mkdir -p /etc/vulkan/icd.d/ echo '{ "file_format_version": "1.0.0", "ICD": { "library_path": "/usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-wayland-gbm-vulkan.so", "api_version": "1.0.0" } }' | sudo tee /etc/vulkan/icd.d/mali.json ``` installare vulkaninfo per verificare sudo apt install vulkan-tools vulkaninfo ## Install TigerVNC Server [ref1](https://guide.debianizzati.org/index.php?title=TigerVNC) [ref2](https://computingforgeeks.com/install-and-configure-tigervnc-vnc-server-on-debian/) [ref3](https://www.howtoforge.com/how-to-install-vnc-server-on-debian-12/) ### Installare Tasksel per inserire un ambiente grafico in questo caso scegliere per esempio xfce sudo apt install tasksel sudo tasksel se tasksel non finisce l'installazione chiudere il terminale e riaprirlo poi digitare sudo apt --fix-broken install per riparare e digitare sempre Y sarebbe meglio utilizzare sudo apt install xfce4 xfce4-goodies sudo apt install lightdm #### Auto-login xfce4 sudo nano /etc/lightdm/lightdm.conf nella sezione ``` [Seat:*] ``` inserire autologin-user=orangepi #### Disabilitare start di xfce4 al boot sudo systemctl disable lightdm.service #### Start xfce4 manuale sudo systemctl start lightdm.service ### Installare tigervnc sudo apt install tigervnc-standalone-server tigervnc-common sudo apt install tigervnc-tools verificare quali sono i desktop disponibili ls -hl /usr/share/xsessions/* in questo caso avendo appena installato xfce ci sarà un file xfce.desktop far partire per esempio con tigervncserver -rfbport 5901 -localhost no -geometry 1280x720 -depth 32 -desktop Prova -- xfce oppure tigervncserver -rfbport 5901 -localhost no -- xfce -geometry 1280x720 --depth 32 -desktop Prova -autokill no se si vuole fare una configurazione in automatico senza scrivere tutto killare la sessieno appena lanciata tigervncserver -kill :1 inserire la configurazione di VNC editando sudo nano .config/tigervnc/config il vecchio riferimento era sudo nano ~/.vnc/config va inserito ```bash rfbport=5901 localhost=no session=xfce geometry=2560x1440 depth=32 desktop=Prova ``` facendo partire tigervnc con tigervncserver avremo il server su IP:5091 la lista è disponibile udando tigervncserver -list se ne può creare più di uno e si può fermare killandolo tigervncserver -kill :1 definire uno user editando sudo nano /etc/tigervnc/vncserver.users se si vuole farlo partire in automatico va inserito il display e lo user che non sia root per es :1=orangepi poi si fa partire il servizio sudo systemctl start tigervncserver@:1.service che si può controllare con sudo systemctl status tigervncserver@:1.service infine lo si abilita per quando il sistema reboota sudo systemctl enable tigervncserver@:1.service pèer tutte le funzioni digitare tigervncserver -help per esempio se si vuole fare tutto in manuale si può digitare tigervncserver -rfbport 5901 -localhost no -geometry 1280x720 -depth 32 -desktop Prova -- xfce ## Native compilation on ARM/ARM64 host MPP RGA per FFMPEG [ref1](https://github.com/rockchip-linux/mpp) [ref2](https://github.com/nyanmisaka/ffmpeg-rockchip/tree/master) [ref3](https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Compilation) [ref4](https://forums.linuxmint.com/viewtopic.php?t=435381) installare prima le dipendenze ```bash sudo apt-get update -qq && sudo apt-get -y install \ autoconf \ automake \ build-essential \ cmake \ git-core \ libass-dev \ libfreetype6-dev \ libgnutls28-dev \ libmp3lame-dev \ libsdl2-dev \ libtool \ libva-dev \ libvdpau-dev \ libvorbis-dev \ libxcb1-dev \ libxcb-shm0-dev \ libxcb-xfixes0-dev \ meson \ ninja-build \ pkg-config \ texinfo \ wget \ yasm \ zlib1g-dev ``` ### MPP ```bash # Build MPP cd mkdir -p ~/dev && cd ~/dev git clone -b jellyfin-mpp --depth=1 https://github.com/nyanmisaka/mpp.git rkmpp pushd rkmpp mkdir rkmpp_build pushd rkmpp_build cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TEST=OFF \ .. make -j $(nproc) sudo make install ``` ### RGA ``` # Build RGA cd mkdir -p ~/dev && cd ~/dev git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga meson setup rkrga rkrga_build \ --prefix=/usr \ --libdir=lib \ --buildtype=release \ --default-library=shared \ -Dcpp_args=-fpermissive \ -Dlibdrm=false \ -Dlibrga_demo=false meson configure rkrga_build sudo ninja -C rkrga_build install ``` ### ffmpeg semplice clonare git cd git clone https://github.com/nyanmisaka/ffmpeg-rockchip.git cd ffmpeg-rockchip configurare con ./configure --prefix=/usr --enable-gpl --enable-version3 --enable-libdrm --enable-rkmpp --enable-rkrga compilare make -j$(nproc) verificare ```bash ./ffmpeg -decoders | grep rkmpp ./ffmpeg -encoders | grep rkmpp ./ffmpeg -filters | grep rkrga ``` finire l'intallazione sudo make -j$(nproc) install ### ffmpeg più completa installare le librerie ```bash sudo apt install libtwolame-dev libvidstab-dev libvo-amrwbenc-dev libvorbis-dev libvpx-dev libx264-dev libx265-dev libxml2-dev librubberband-dev libharfbuzz-dev libwebp-dev libzimg-dev libzvbi-dev libchromaprint-dev frei0r-plugins-dev ladspa-sdk aom-tools ladspa-sdk aom-tools libbs2b-dev dav1d libdav1d-dev libfdk-aac-dev flite1-dev libflite1 libgme-dev libgsm1-dev libopenmpt0 libopenmpt-dev openmpt123 libshine-dev libsvtav1enc-dev libbluray-dev libcaca-dev libopus-dev libsnappy-dev libsoxr-dev libspeex-dev libtheora-dev libxvidcore-dev libcdio-paranoia-dev sudo apt-get install opensc sudo apt-get build-dep opensc ``` configurare ```bash ./configure --enable-chromaprint --enable-frei0r --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libdav1d --enable-libfdk-aac --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libmp3lame --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-nonfree --enable-opengl --enable-openssl --enable-version3 --enable-librubberband --enable-libharfbuzz --enable-libwebp --enable-libzimg --enable-libzvbi --enable-libgsm --enable-vaapi --enable-libdrm --enable-rkmpp --enable-rkrga ``` compilare make -j$(nproc) verificare ```bash ./ffmpeg -decoders | grep rkmpp ./ffmpeg -encoders | grep rkmpp ./ffmpeg -filters | grep rkrga ``` finire l'intallazione sudo make -j$(nproc) install ## utility per verificare RK3588 dovrebbe avere OpenGL ES1.1/2.0/3.2, OpenCL 2.2, and Vulkan 1.2 ### OpenGL sudo apt install mesa-utils glxinfo glxgears glxdemo se non trova il display si può specificare con DISPLAY=:1 glxinfo oppure definendo la variabile export $DISPLAY=:1 ### OpenCL sudo apt install clpeak sudo clpeak ### Altri tools di verifica glmark2 glmark2-es2 Unigine Benchmark sudo apt install glmark2-es2 ## Panfork MESA RK3588 https://docs.mesa3d.org/install.html https://dietpi.com/forum/t/orange-pi-5-hardware-acceleration-enabled/16387 https://docs.mesa3d.org/install.html https://gitlab.com/panfork/mesa ```bash curl -sSf 'https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=index&search=0x0B2F0747E3BD546820A639B68065BE1FC67AABDE' | gpg --dearmor -o /etc/apt/trusted.gpg.d/rk3588-gpu.gpg echo 'deb https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy main' > /etc/apt/sources.list.d/rk3588-gpu.list echo 'deb https://ppa.launchpadcontent.net/liujianfeng1994/rockchip-multimedia/ubuntu jammy main' >> /etc/apt/sources.list.d/rk3588-gpu.list apt update apt full-upgrade (sudo apt dist-upgrade ???) apt install mali-g610-firmware rockchip-multimedia-config ``` https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu/dists/jammy/Release.gpg verificare con questo fatto apposta per OPI5 https://forum.armbian.com/topic/26450-accelerated-video-options-for-installing-and-running/ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0B2F0747E3BD546820A639B68065BE1FC67AABDE ```sh deb https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy main deb-src https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy main deb https://ppa.launchpadcontent.net/liujianfeng1994/rockchip-multimedia/ubuntu jammy main deb-src https://ppa.launchpadcontent.net/liujianfeng1994/rockchip-multimedia/ubuntu jammy main ```