Support hardware transcoding for Ryzen AI 9 HX 370 w/ Radeon 890M

Server Version: 1.42.2.10156

It would be great to support Hardware transcoding for the Ryzen AI 9 HX 370 w/ Radeon 890M CPU/APU in Plex Media Server. All that is needed is to update the radeonsi_drv_video.so driver shipped in Plex. HW transcoding used to work with older AMD APUs, but the new AMD APU has a new architecture called gfx1150 that requires an update of the radeonsi_drv_video.so driver to support that new architecture. The old radeonsi_drv_video.so driver does not recognize gfx1150 and throws an error.

Updating radeonsi_drv_video.so fixes hw transcoding (When for example upgrading from Debian 12 to 13) when using “vainfo”. But Plex Media Server seems to be using its own linked libraries for vaapi and dri drivers. Updating radeonsi_drv_video.so to the latest version should fix the issue.

I tried manually replacing the radeonsi_drv_video.so driver found in “/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Drivers/rsv-16dddec543d89eb3cd7dd5b9-linux-x86_64/dri/radeonsi_drv_video.so”, but when doing so, the radeonsi_drv_video.so driver errors out with a “__isoc23_strtoul: symbol not found” as apparently the gnu library version used in Plex is older.

Is there any way to force Plex Media Server to use the system “/usr/lib/x86_64-linux-gnu/dri/” drivers instead of it’s own?

Here is the error that shows up when trying to use hardware transcode (Without modifications to Plex) with the “Ryzen AI 9 HX 370 w/ Radeon 890M”:

[Req#131f/Transcode] [FFMPEG] - libva: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache/va-dri-linux-x86_64/radeonsi_drv_video.so init failed
[Req#131f/Transcode] [FFMPEG] - Failed to initialise VAAPI connection: 2 (resource allocation failed).

The errors you’re getting are expected.

PMS is compiled and built with the MUSL runtime libraries not glibc.

You cannot arbitrarily put FFMPEG or AMD upstream drivers into PMS and expact them to work.

There is work underway to fully support AMD GPUs.

The current progress point is completing FFMPEG 6.1 upgrade (from 4.2) and upgrading the Intel GPU (internal and external) drivers.

When these are complete and stable, the next step will be to enable AMD support. ( The code is already there. It simply needs to be recompiled as Enabled and retested/debugged )

1 Like

@ChuckPa I’m also attempting to get hardware transcoding to work on this platform, and I’m running the most which is has the FFMPEG 6.1 updates merged from the Transcoder Forum Preview as stated by chris_decker08 in that thread ( Transcoder Upgrade Forum Preview - #194 by chris_decker08 ).

  • Hardware: Ryzen AI 9 HX 370 w/ Radeon 890M (Minisforum N5 Pro)
  • Plex version: v1.43.0.10231-ca3956848
  • OS: Debian Trixie (6.14.11-4-pve kernel)
  • amdgpu driver: 3.64.0 (Latest DKMS from AMD)
  • vainfo output:
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function \__vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Mesa Gallium driver 25.0.7-2 for AMD Radeon Graphics (radeonsi, gfx1150, LLVM 19.1.7, DRM 3.64, 6.14.11-4-pve)
vainfo: Supported profile and entrypoints
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main               : VAEntrypointVLD
VAProfileH264Main               : VAEntrypointEncSlice
VAProfileH264High               : VAEntrypointVLD
VAProfileH264High               : VAEntrypointEncSlice
VAProfileHEVCMain               : VAEntrypointVLD
VAProfileHEVCMain               : VAEntrypointEncSlice
VAProfileHEVCMain10             : VAEntrypointVLD
VAProfileHEVCMain10             : VAEntrypointEncSlice
VAProfileJPEGBaseline           : VAEntrypointVLD
VAProfileVP9Profile0            : VAEntrypointVLD
VAProfileVP9Profile2            : VAEntrypointVLD
VAProfileAV1Profile0            : VAEntrypointVLD
VAProfileAV1Profile0            : VAEntrypointEncSlice
VAProfileNone                   : VAEntrypointVideoProc

It actually looks like we’re getting pretty close to working on this hardware, as all the logs appear to point to the GPU not being recognised by the version of the libraries included in Plex Media Server rather than a deficiency in the software itself.

The GPU is correctly identified by Plex, however when attempting to use it there are corresponding logs created both at the application console level and in the journald logs.

Plex Console:

Nov 16, 2025 02:44:52.686 [129430442539832] Debug — [Req#6546/Transcode] Codecs: testing h264 (decoder) with hwdevice vaapi
Nov 16, 2025 02:44:52.686 [129430442539832] Debug — [Req#6546/Transcode] Codecs: hardware transcoding: testing API vaapi for device '/dev/dri/renderD128' (AMD Strix [Radeon 880M / 890M])
Nov 16, 2025 02:44:52.688 [129430442539832] Error — [Req#6546/Transcode] [FFMPEG] - libva: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache/va-dri-linux-x86_64/radeonsi_drv_video.so init failed

Nov 16, 2025 02:44:52.688 [129430442539832] Error — [Req#6546/Transcode] [FFMPEG] - Failed to initialise VAAPI connection: 2 (resource allocation failed).

Nov 16, 2025 02:44:52.688 [129430442539832] Debug — [Req#6546/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: I/O error
Nov 16, 2025 02:44:52.688 [129430442539832] Debug — [Req#6546/Transcode] Could not create hardware context for h264

Linux logs (journalctl -u plexmediaserver):

Nov 16 02:44:52 plex Plex Media Server[5592]: /home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-6/plex/main/build/678777ee2ca8706ca90cf805e0dd88235f6d7f05/meson-install/share/libdrm/amdgpu.ids: No such file or directory
Nov 16 02:44:52 plex Plex Media Server[5592]: amdgpu: unknown (family_id, chip_external_rev): (150, 20)

Please let me know if there’s any further detail I can provide, or if there’s troubleshooting you’d like me to do.

Thanks.

That is really close.

With vainfo working, you should get more.

  1. Can you show me where PMS detects the GPU as it starts ? (DEBUG logs)
  2. Is plex a member of the group which owns /dev/dri/card* and renderD* ?
  3. When you go to transcode, does it attempt a test frame?
  1. Can you show me where PMS detects the GPU as it starts ? (DEBUG logs)

The only mention of the GPU on startup appears to be this:

Nov 16, 2025 11:38:17.682 [125765922286392] INFO - Preemptively preparing driver rsv for GPU AMD Strix [Radeon 880M / 890M]
Nov 16, 2025 11:38:17.682 [125765922286392] DEBUG - [DriverDL/rsv] Skipping download; already exists
  1. Is plex a member of the group which owns /dev/dri/card* and renderD* ?

Yes:

$ groups plex
plex : plex video render

$ ls -la /dev/dri/card0
crw-rw---- 1 root video 226, 0 Nov 16 11:29 /dev/dri/card0

$ ls -la /dev/dri/renderD128
crw-rw---- 1 root render 226, 128 Nov 16 11:29 /dev/dri/renderD128
  1. When you go to transcode, does it attempt a test frame?

I’m not sure what you mean by this, are you asking if it’s attempting a test frame when I try to test a transcode? Or when I go to the Transcode settings?

These are the messages I get from the PMS logs when I attempt to force transcoding on any video:

Nov 16, 2025 11:52:34.126 [125765829864248] DEBUG - [Req#539/Transcode] Codecs: testing h264_vaapi (encoder)
Nov 16, 2025 11:52:34.126 [125765829864248] DEBUG - [Req#539/Transcode] Codecs: hardware transcoding: testing API vaapi for device '/dev/dri/renderD128' (AMD Strix [Radeon 880M / 890M])
Nov 16, 2025 11:52:34.168 [125765829864248] ERROR - [Req#539/Transcode] [FFMPEG] - libva: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache/va-dri-linux-x86_64/radeonsi_drv_video.so init failed
Nov 16, 2025 11:52:34.168 [125765829864248] ERROR - [Req#539/Transcode] [FFMPEG] - Failed to initialise VAAPI connection: 2 (resource allocation failed).
Nov 16, 2025 11:52:34.168 [125765829864248] DEBUG - [Req#539/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: I/O error
Nov 16, 2025 11:52:34.168 [125765829864248] DEBUG - [Req#539/Transcode] Could not create hardware context for h264_vaapi

Since my previous post, I experienced an identical error when trying to enable hardware detection in Frigate. They’re using ROCm 6.3.3 in their current release and I was able to resolve the issue and enable HW support for this GPU by rebuilding their Docker image using ROCm 7.0.2. I also needed to use set the HSA_OVERRIDE_GFX_VERSION=11.5.1 environment variable. As per Update ROCm to 7.0.2 by NickM-27 · Pull Request #20433 · blakeblackshear/frigate · GitHub, ROCm 7.0.2 specifically introduces support for this platform.

Nov 16, 2025 11:52:34.168 [125765829864248] ERROR - [Req#539/Transcode] [FFMPEG] - libva: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache/va-dri-linux-x86_64/radeonsi_drv_video.so init failed

This confirms the existing drivers won’t work but everything else is ready

I know Chris has a lot of drivers being updated. I don’t know where the AMD drivers are in the list of ‘To Do’.