Unable to install ARM Mali OpenCL runtime to enable Hardware Acceleration on Jellyfin

Creating a bug report/issue

I have searched the existing open and closed issues

Required Information

  • DietPi version | Core:9 Sub:20 RC:1 branch:master owner:MichaIng

  • Distro version | trixie

  • Kernel version | Linux DietPi 6.1.115-vendor-rk35xx #1 SMP Mon Dec 1 08:58:34 UTC 2025 aarch64 GNU/Linux

  • Architecture | arm64

  • SBC model | ROCK 5B (aarch64)

  • Power supply used | 30 W (5V-3A 9V-3A 12V-2.5A 15V-2A 20V-1.5A)

  • NVMe used | Kingston NV2 NVMe PCIe 4.0 1TB M.2 2280 -SNV2S/1000G

Additional Information

  • Software title | LibMali

Steps to reproduce

  • I followed this guide until step 5 and tried to run sudo apt-get install ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb

Expected behavior

Actual behavior

  • I get the error: E: Unsupported file ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb specified on command line.

apt-get does not support installation of local files, just use apt.

apt  install ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb

BTW do you want to get HDR tone mapping working?
From the guide you posted:

For example, the Mali-G610 GPU on the RK3588 SoC is only used for OpenCL-based HDR tone-mapping.

So if you don’t need that you can skip that part and just follow the other steps.

i also don’t know how much DietPi already cares about that. Did you already try to just enable HW acc in jellyfin?

You could check with

ls -l /dev/mpp_service /dev/rga /dev/video*
ffmpeg -hwaccels

ALso jellyfin should log something about this when log level is set to debug and you try to transcode soemthing.

journalctl -u jellyfin -f

or you can just try hw acc with ffmpeg for testing purpose

ffmpeg -hide_banner -v debug \
    -init_hw_device rkmpp=rk \
    -i input.mp4 -c:v h264_rkmpp output.mp4

Yeah I have a monitor that supports HDR so I would like to get it to work.

When I try to run apt install ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb I still get the same error.

ls -l /dev/mpp_service /dev/rga /dev/video*
ffmpeg -hwaccels

gives the following response

crw-rw---- 1 root video 240,   0 Jan 11 6:02 p.m. /dev/mpp_service
crw-rw---- 1 root video  10, 121 Jan 11 6:02 p.m. /dev/rga
crw-rw---- 1 root video  81,   0 Jan 11 18:02 /dev/video0
-bash: ffmpeg: command not found.

journalctl -u jellyfin -f gives the response

Jan 11 18:08:31 DietPi mpp[2310]: mpp_platform: client 12 driver is not ready!

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] Clean up transcoding directory Completed after 0 minute(s) and 0 seconds

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] Clean up collections and playlists Completed after 0 minute(s) and 0 seconds

Jan 11 18:08:33 DietPi mpp[2336]: mpp_platform: client 12 driver is not ready!

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] Updating plugins Completed after 0 minute(s) and 0 seconds

Jan 11 18:08:33 DietPi mpp[2358]: mpp_platform: client 12 driver is not ready!

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] ServerId: 5830c455df2d4b70aeb32e100c3d52e2

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] Core startup complete

Jan 11 18:08:33 DietPi jellyfin[2264]: [18:08:33] [INF] Startup complete 0:00:09.3664333

Just to be sure v1.9-1-55611b0 is the right version for DietPi, right?

This looks good.

You would need to instal ffmpeg to test this.

Can you try

dpkg -i ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb
apt -f install

After installing ffmpeg ffmpeg -hwaccels give following response

ffmpeg version 7.1.3-0+deb13u1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14 (Debian 14.2.0-19)
  configuration: --prefix=/usr --extra-version=0+deb13u1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --disable-libmfx --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --disable-libvpl --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Hardware acceleration methods:
vdpau
cuda
vaapi
drm
opencl
vulkan

while

ffmpeg -hide_banner -v debug \
    -init_hw_device rkmpp=rk \
    -i input.mp4 -c:v h264_rkmpp output.mp4

give this response:

Splitting the commandline.
Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'rkmpp=rk'.
Reading option '-i' ... matched as input url with argument 'input.mp4'.
Reading option '-c:v' ... matched as option 'c' (select encoder/decoder ('copy' to copy stream without reencoding)) with argument 'h264_rkmpp'.
Reading option 'output.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option hide_banner (do not show program banner) with argument 1.
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument rkmpp=rk.
Invalid device specification "rkmpp=rk": unknown device type
Failed to set value 'rkmpp=rk' for option 'init_hw_device': Invalid argument
Error parsing global options: Invalid argument
dpkg -i ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb
apt -f install

gives the response

dpkg: Error: Unable to access archive “./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb”: File or directory not found
Summary:                            
  Update: 0, Install: 0, Remove: 0, Do not update: 0

Can you try again with the jellyfin-ffmpeg

/usr/lib/jellyfin-ffmpeg/ffmpeg -hwaccels
/usr/lib/jellyfin-ffmpeg/ffmpeg \
  -hide_banner -v debug \
  -init_hw_device rkmpp=rk \
  -i input.mp4 -c:v h264_rkmpp output.mp4

Replace input.mp4 with an actual video file you have on the device.

You need to point to the deb file you’ve downloaded earlier.

I did point it to the deb file but apparently it didn’t like that it was stored at the root of the drive.

Placing it in /root/my-ente and then running cd my-ente made the error go away.

dpkg -i ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb
apt -f install

now gave this response:

(Reading database ... 31231 files and directories are currently installed.)
Preparing to unpack .../libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb ...
Unpacking libmali-valhall-g610-g13p0-gbm (1.9-1) over (1.9-1) ...
libmali-valhall-g610-g13p0-gbm (1.9-1) is being set up ...
Processing triggers for libc-bin (2.41-12+deb13u1) ...
Summary:                            
  Update: 0, Install: 0, Remove: 0, Do not update: 0

The Update: 0, Install: 0, Remove: 0, Do not update: 0 might be due to me running them one after another.

When I tried to run apt install ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb I got this response

Note: “libmali-valhall-g610-g13p0-gbm” is selected instead of “./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb”.
libmali-valhall-g610-g13p0-gbm is already the latest version (1.9-1).
Summary:
  Update: 0, Install: 0, Remove: 0, Do not update: 0

After installing that

/usr/lib/jellyfin-ffmpeg/ffmpeg -hwaccels
/usr/lib/jellyfin-ffmpeg/ffmpeg \
  -hide_banner -v debug \
  -init_hw_device rkmpp=rk \
  -i futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv -c:v h264_rkmpp output.mp4

gave this response

ffmpeg version 7.1.3-Jellyfin Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14 (Debian 14.2.0-19)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=arm64 --cross-prefix=/usr/bin/aarch64-linux-gnu- --toolchain=hardened --enable-cross-compile --enable-rkmpp --enable-rkrga --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Hardware acceleration methods:
cuda
drm
opencl
rkmpp

Splitting the commandline.
Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'rkmpp=rk'.
Reading option '-i' ... matched as input url with argument 'futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv'.
Reading option '-c:v' ... matched as option 'c' (select encoder/decoder ('copy' to copy stream without reencoding)) with argument 'h264_rkmpp'.
Reading option 'output.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option hide_banner (do not show program banner) with argument 1.
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument rkmpp=rk.
Successfully parsed a group of options.
Parsing a group of options: input url futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv.
Successfully parsed a group of options.
Opening an input file: futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv.
[AVFormatContext @ 0xaaab08983c10] Opening 'futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv' for reading
[file @ 0xaaab08984100] Setting default whitelist 'file,crypto,data'
[in#0 @ 0xaaab08983a20] Error opening input: No such file or directory
Error opening input file futurama.s10e01.german.dl.1080p.web.h264-wayne.mkv.
Error opening input files: No such file or directory

journalctl -u jellyfin -f now gives this response

Jan 12 06:09:30 DietPi jellyfin[2264]: [06:09:30] [WRN] Library folder /mnt/dietpi_userdata/jellyfin/data/playlists is inaccessible or empty, skipping
Jan 12 06:09:30 DietPi jellyfin[2264]: [06:09:30] [WRN] Library folder /mnt/dietpi_userdata/jellyfin/data/playlists is inaccessible or empty, skipping
Jan 12 06:09:31 DietPi jellyfin[2264]: [06:09:31] [INF] Scanning media library Completed after 0 minute(s) and 1 seconds
Jan 12 06:09:31 DietPi jellyfin[2264]: [06:09:31] [INF] Watching directory /media
Jan 12 06:10:31 DietPi jellyfin[2264]: [06:10:31] [INF] Optimizing and vacuuming jellyfin.db...
Jan 12 06:10:31 DietPi jellyfin[2264]: [06:10:31] [INF] jellyfin.db optimized successfully!
Jan 12 06:10:31 DietPi jellyfin[2264]: [06:10:31] [INF] Database optimization completed after 0 minute(s) and 0 seconds
Jan 12 12:11:32 DietPi jellyfin[2264]: [12:11:32] [INF] Optimizing and vacuuming jellyfin.db...
Jan 12 12:11:32 DietPi jellyfin[2264]: [12:11:32] [INF] jellyfin.db optimized successfully!
Jan 12 12:11:32 DietPi jellyfin[2264]: [12:11:32] [INF] Database optimization completed after 0 minute(s) and 0 seconds

after which the terminal no longer accepts inputs.

This is fine, dpkg unpacks the deb file and apt -f install installs possible dependencies, but looks like there are none.

Looks also good, also the ffmpeg command does not complain anymore about missing rkmpp anymore, only about that you pointed to an input file which does not exist (or maybe you have no permission to access it)

This is also expected, the -f option holds it in live view. So you do the journalctl command and in another terminal you can do something with jellyfin and you will see the log in real time.

Looks all good now?!

Yeah I checked that it’s working and it seems to do

1 Like