Server Version#: 1.23.2.4656
Player Version#: 1.31.1.2262-74fdc6b7
As the title suggests, I cannot get hardware acceleration functioning on my Linux server.
I am running the latest Plex server version on an i7-4770, with a Quadro K620 with driver version 450.66 installed on Debian.
All the required libraries for Intel QSV are installed, and every requirement is met, but the server will not leverage hardware acceleration when transcoding.
I am at an absolute loss as to why. Any help or suggestions on what might be the issue would be greatly appreciated.
Plex Media Server Logs_2021-06-09_10-15-04.zip (1.7 MB)
Logs, my dear sir, logs…Before @ChuckPa et al chime in, debug, not verbose, and get the entire set (can be downloaded from the browser interface, or zip up the Logs directory below the Plex software install, probably /var/lib/plexmediaserver or some such.)
Whoops, thought I had attached those! Thanks for catching it!
Added logs into the original post.
I suppose the i7-4770 is just too old; the whole Intel QSV was only working in a good way a few generations later (e.g. Kaby Lake and later).
According to your logs, Plex sees the GPU but fails to initialize it; e.g.
Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Unknown error occurred
Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: I/O error
Could be some hiccup with the driver installation not being accessible for Plex.
When trying to fix this… can you also upgrade your drivers? – latest version as of today seems to be 460.84
I’ll see what I can do about updating the Nvidia drivers.
I swear I’ve had hardware acceleration working on this system in the past. Although I have no evidence aside from my unreliable memory.
Could it be a permissions issue thats causing Plex to be unable to access the GPU?
Yes, could be. When you manually run an install of PMS using dpkg, the output should contain a message if Plex can see the video card.
Morning! 
- The -4xxx CPUs will do MPEG2 and H.264 only.
- No external libraries are required for QSV. Plex provides those
-
ls -la /dev/dri – verify the kernel sees /dev/dri/renderD128 (for QSV)
- Also see if the Nvidia is there – /dev/dri/renderD129
- Checking the Nvidia supported chart shows some HW capability:
Video Encode and Decode GPU Support Matrix [NEW] | NVIDIA Developer
Jun 09, 2021 00:46:37.230 [0x7f2e099b5b38] DEBUG - TPU: hardware transcoding: final decoder: , final encoder:
Jun 09, 2021 00:46:37.231 [0x7f2e099b5b38] DEBUG - [JobRunner] Job running: EAE_ROOT='/tmp/pms-565ded9e-96d2-46df-81c3-d83b5bc669d4/EasyAudioEncoder' FFMPEG_EXTERNAL_LIBS='/var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Codecs/fa235d6-3858-linux-x86_64/' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/usr/lib/plexmediaserver/Plex Transcoder' '-codec:1' 'eac3_eae' '-eae_prefix:1' '7164c0a3-d6a0-48a3-961e-c3db71e47cae_' '-analyzeduration' '20000000' '-probesize' '20000000' '-i' '/media/sharedrive/Media/TV/The Handmaid'\''s Tale/Season 4/The Handmaid'\''s Tale - S04E09 - Progress WEBDL-1080p.mkv' '-filter_complex' '[0:1] aresample=async=1:ocl='\''5.1'\'':rematrix_maxval=0.000000dB:osr=48000[0]' '-map' '[0]' '-metadata:s:0' 'language=eng' '-codec:0' 'flac' '-b:0' '4096k' '-f' 'flac' '-map_metadata' '-1' '-map_chapters' '-1' '-t' '1640.672' '/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache/Transcode/Detection/0d269c56-65a9-47b3-89c7-8bdfd2c09a52' '-y' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/7164c0a3-d6a0-48a3-961e-c3db71e47cae/a310c850-8f49-474e-ab52-fae84ad258e0/progress'
Jun 09, 2021 00:46:37.231 [0x7f2e099b5b38] DEBUG - [JobRunner] Jobs: Starting child process with pid 14870
Now we go back to the group membership:
- Which username does PMS run as?
- User
plex is automatically added to the video/render group during package installation.
- Is a service override file in use? If so, is that username a member of the group which owns /dev/dri ?
- Lastly, if you want the use the Nvidia instead of QSV, add
HardwareDevicePath="/dev/dri/renderD129" to Preferences.xml when PMS is stopped.
-
Good to know
-
Also good to know
-
renderD128 exists
-
card0 is the other option presented from ls-la /dev/dri, I assume this is the GPU
Plex runs as the plex user. No modifications were made from the default setup
There is no service Override file in use that I’m aware of.
Specifying HardwareDevicePath="/dev/dri/renderD129" or any variation of that ( renderD128 or card0) in the Preferences.xml seems to make no difference.
@captainsockpuppet
-
card0 is the raw device and used for control actions.
-
renderDxxx is the actual video GPU interface node to access when rendering
I assume renderD129 does not exists since it was not mentioned.
Therefore – the currently installed Nvidia drivers are not recognizing the card as supported.
Please refer to the Nvidia Encode Decode Support Matrix chart I listed.
Please be cautious of using “Today’s” (these latest few) drivers from Nvidia. There have been several reported issues in Linux.
I believe I saw users back down to 455 ?? Not sure where that was. You might want to search the forum for it