I am running PMS on ubuntu 24.04 LTS with the Linux® Drivers for AMD Radeon™ Graphics v25.10.4 release on 9-24-2025. Official ffmpeg, as provided by ubuntu can transcode from HEVCMain10 to H264 using hardware acceleration for both encode/decode, and the HDR tone mapping is fine.
Plex Transcoder however is unable to detect and use hardware encoding, and throws various errors from missing symbols due to glibc wrapper’s versions being too old to just not working. When using iPhone plex app, every transcoded video goes straight to 720p (PNG) or uses 100% cpu.
I used to run on Synology NAS, but it just can’t keep up with HEVC codecs anymore, so this is my most powerful appliance for this type of work. I am about to try the beta to see if it’s any better, but since it’s compiled on Ubuntu 16 (which is way out of support), I suspect I will be looking at the same issue still.
I do have one more last ditch attempt to migrate to an older appliance with an N95 cpu, instead off my Ryzen appliance, though I really don’t want to do that. I know that this box, running ffmpeg can safely run 4 transcoding sessions with very little cpu work load. The key is just to get it working that way with plex.
The specific error I get using AMD’s drivers are:
[AVHWDeviceContext @ 0x7efadb4dae40] libva: dlopen of /opt/amdgpu/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so failed: Error relocating /opt/amdgpu/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so: __isoc23_strtoul: symbol not found
As such, even the beta version of plex still does not support the C23 symbol __isoc23_strtoul. would be nice if we could use a modern glibc built driver.
Are you serious? Ugh…. Okay. I guess I will have to try and make this work on my N95 NUC then. That’s a real shame. I can handle twice as many transcoding session on this box than the N95 box, at twice the frame rate. Okay, well that explains it. What a sad day.
The same issues exist on my Intel N95 but with different cause. Now the I migrated over to my last server running Ubuntu 24.04 with Intel N95 cpu, using either the free or non-free versions of iHD, I can run the exact same command on ffmpeg which works, but not on Plex Transcoder, which errors with:
[AVHWDeviceContext @ 0x744444a99dc0] Failed to initialise VAAPI connection: -1 (unknown libva error).
Device creation failed: -5.
Failed to set value ‘vaapi=va:/dev/dri/renderD128’ for option ‘init_hw_device’: I/O error
I keep getting runtime errors with the transcoder, and when I test Plex Transcoder directly, I see glibc errors of missing symbols due to iHD drivers being build with a much newer glibc (because I am on ubuntu 24.04, and Plex is built against a much older libc).
Plex includes the necessary drivers. It does not use the manually installed free/non-free drivers (it did at one time, but that was many versions ago).
On the N95 system:
Make sure Plex is configured for debug server logs. Do not enable verbose logs.
Settings → server_name → General + Show Advanced
If enabled, disable HEVC video encoding in settings → transcoder.
Stop Plex, wait 30 seconds, start Plex, wait 2 minutes for Plex to log the startup.
Play a video that transcodes.
After the problem re-occurs, pull the log files and post to the thread.
For full hardware transcoding on linux you are going to want/need an intel chip with integrated graphics. Anything from 7th gen to current will work. Arc is iffy so I’d still stay away from that for now. But Iris XE is very powerful.
so, I have probably been shooting myself in the foot. okay, I will rollback all the changes I made to the plex runtime to rely on the plex version of the driver. Should I remove my OS support for the iHD device too?
The Intel N95 is a 12th gen (Alder Lake) CPU. The N series basically replaced the Celerons / Pentiums. It has 4 cores (no hyper threading ) and operates at fixed CPU speed like an i3. As an ffmpeg Transcoder, it can handle 3 concurrent HEVC hardware accelerated streams at 1080p. This is a BeeLink Intel NUC PC that I use as a transcoding server, and am repurposing as a plex media server because the Synology NAS is simply too slow, and too limited. I have three such nodes, all different specs. This one, an N5095 (Jasper Lake) that can only do 1-2 streams and can’t do h265 Min 10 profile well, so I use that one for just H264 transcoding, then I have the AMD Ryzen 5 which has 6 cores and dual threads per core. I would prefer the AMD for this, bus SD only isn’t going to work for me. I rely on hardware acceleration to be able to stream my shows efficiently with 30-40W computers instead of 500w+ computers.
So, my CPU is not in question. All three are more than enough to replace my NAS for hardware accelerated transcoding and modern architectures. This is purely an issue of I really screwed up, or I am doing something place users have not complained about yet. I am running bare metal, not docker, for personal reasons.
plex : plex video users render plexusers
To re-produce, I have to set the resolution to 720p (low bitrate) or it will choose the direct play instead of transcode.
No idea about the error, but no I am not using a self signed certificate. The url and protocol both state http, so ssl should not even be in play. The only ssl would be the plex ssl settings for remote access using the provided certificate.
Your server has it’s own Let’s Encrypt signed CA assigned when claimed and renewed monthly.
The apps are all built and signed with the company’s master certificate (issued by Plex’s CA)
Whatever that device is (192.168.0.2), on port 80 (which is normally a HTTP server port and not a standard Plex port) must be carrying its own certificate.
Is there a Proxy connecting to the server?
Getting back to your GPU issue,
Are you trying to use the AMD or the built-in UHD Graphics of the N95?
Is there a container involved?
The .2 address is just my WiFi access point. It scans the network for devices to map it out. Maybe that’s the traffic you are seeing. It’s just an AP, not doing routing at all. I see the log says /discover. That makes sense. It’s the SSDP auto discovery. You can ignore that address.
I have more details. I had tried using tmuxai (tied to ChatGPT) to see if it could get hardware transcoding working. It renamed Plex Transcoder and replaced it with a bash script to emulate it through calls to ffmpeg. I rolled it back, and it’s not crashing now, but it’s still using cpu instead of GPU for transcoding that should be 100% gpu.
I migrated from a NAS, and since PMS downloads the driver for the gpu, I wonder if there is a way to purge the GPU code and force a re-download?