Core 3 100U - Transcoding issue

Issue persists on 1.41.6.9606

I’m following up with this (tracking it down) .

Everything I last saw showed the changes were added.
Those SHOULD be in the build.

It is in the build. Added to GPU list three weeks ago.

LNL = LunarLake
BMG = BattleMage

Wild. I believe it’s there, but it doesn’t appear to be used.

Can you please grab me an updated set of DEBUG logs?

  1. restart PMS (so I can see the detection)
  2. Start the playback (so I can see what PMS & Transcoder do)
  3. Stop playback
  4. Download Logs
  5. Attach here

Thanks.

plex_logs.zip (136.1 KB)

In my experience, this is almost certainly a permissions issue; the user PMS is running as cannot open /dev/dri/renderD128:

Mar 28, 2025 13:31:17.904 [140670419348280] ERROR - [Req#6b/Transcode] [FFMPEG] - No VA display found for device /dev/dri/renderD128.
Mar 28, 2025 13:31:17.904 [140670419348280] DEBUG - [Req#6b/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Invalid argument

So, how are you passing /dev/dri through to the container? And what user and group are you running PMS as (PLEX_UUID and PLEX_GUID, if you’re using the Plex official image)?

And what does ls -al /dev/dri show on the host system?

Hiya! Thanks for checking on this.

ls -al of the system from within the container:

root@nucbox:/# ls -al /dev/dri
total 0
drwxrwxrwx 3 root root        100 Feb 28 14:12 .
drwxr-xr-x 6 root root        360 Mar 30 20:58 ..
drwxrwxrwx 2 root root         80 Feb 28 14:12 by-path
crwxrwxrwx 1 root video  226,   0 Feb 28 14:12 card0
crwxrwxrwx 1 root video1 226, 128 Feb 28 14:12 renderD128

In the course of testing this for myself I’ve just chmodd’d it to 777 recursive.

I switched the container to one I was building myself to the one distributed by you guys. I continue to not see change.

I’m passing /dev/dri to the container via my docker-compose.yaml:

  plex:
    image: plexinc/pms-docker:beta
    container_name: plex
    dns: 1.1.1.1
    network_mode: host
    environment:
      - PLEX_UID=1000
      - PLEX_GID=1000
      - TZ=Etc/UTC
      - VERSION=docker
      - device=/dev/dri:/dev/dri
      - device=/dev/shm:/dev/shm
    volumes:
      - /configs/plex:/config
      - /mnt/media/data:/data
      - /dev/dri:/dev/dri
      - /dev/shm:/dev/shm
    restart: unless-stopped

On the host ,

is UID 1000 (your username) a member of groups video and video1 ?

I don’t understand where video1 comes from. I’ve not seen it.

Now, if you wish to set the host Debian/Ubuntu drm to make it uniform:

sudo bash
echo 'SUBSYSTEM=="drm", GROUP="video" , MODE="0660" > /lib/udev/rules.d/60-plex-hw-transcoding.rules
udevadm trigger
  1. As root
  2. Create a udev rule for drm (rendering) which is assigned to group ā€˜video’ and sets permisions to 0660 (read/write for root and group members)
  3. tell udevadm to read the rules and execute them

If you now look at /dev/dri, both will now be owned by video.
Once this is verified, you only need to ensure your UID is a member of group video

sudo usermod -aG video your_username

Sign out and back in to make it effective.

Now launch the container

On a separate note: If you were to use the native package, all this would be done for you.

You can also customize PMS to run as your username.

My user is added to video:

arbo@nucbox:~$ groups 
arbo cdrom floppy sudo audio dip video plugdev users netdev

Output of ls -al /dev/dri after using udevadm to assign ownership to those devices in /dev/dri :

arbo@nucbox:~$ ls -al /dev/dri 
total 0
drwxr-xr-x  3 root root       100 Mar 30 16:12 .
drwxr-xr-x 16 root root      3360 Mar 30 16:12 ..
drwxr-xr-x  2 root root        80 Mar 30 16:12 by-path
crw-rw----  1 root video 226,   0 Mar 30 16:12 card0
crw-rw----  1 root video 226, 128 Mar 30 16:12 renderD128

For clarity, this is the udev rule added:

arbo@nucbox:~$ cat /lib/udev/rules.d/60-plex-hw-transcoding.rules 
SUBSYSTEM=="drm", GROUP="video", MODE="0660"

Unfortunately, no change, even with rebooting. I also expanded scope of permissions to card0 and renderD128:

arbo@nucbox:~$ ls -al /dev/dri           
total 0
drwxrwxrwx  3 root root       100 Mar 30 16:12 .
drwxr-xr-x 16 root root      3360 Mar 30 16:12 ..
drwxrwxrwx  2 root root        80 Mar 30 16:12 by-path
crwxrwxrwx  1 root video 226,   0 Mar 30 16:12 card0
crwxrwxrwx  1 root video 226, 128 Mar 30 16:12 renderD128

more logs?

No logs needed. I think I know what I’ll find.

I’ve been digging deeply into the transcoder.

( we just fixed a long-standing EAC3 problem )

As for changes on your machine, now it makes sense.

crwxrwxrwx  1 root video 226,   0 Mar 30 16:12 card0
crwxrwxrwx  1 root video 226, 128 Mar 30 16:12 renderD128

Both are the same group. This simplifies permission management.

What’s the output of sudo dmesg | egrep 'i915' on your system (the host)?

[    3.702737] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    3.702863] i915 0000:00:02.0: vgaarb: deactivate vga console
[    3.702912] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    3.703392] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    3.712672] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc.bin (-2)
[    3.712684] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc.bin (-2)
[    3.712686] i915 0000:00:02.0: Direct firmware load for i915/adlp_dmc.bin failed with error -2
[    3.712697] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc_ver2_16.bin (-2)
[    3.712704] i915 0000:00:02.0: firmware: failed to load i915/adlp_dmc_ver2_16.bin (-2)
[    3.712705] i915 0000:00:02.0: Direct firmware load for i915/adlp_dmc_ver2_16.bin failed with error -2
[    3.712707] i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/adlp_dmc.bin (-ENOENT). Disabling runtime power management.
[    3.712709] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
[    3.786071] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.bin (-2)
[    3.786099] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.bin (-2)
[    3.786124] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.1.1.bin (-2)
[    3.786139] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_70.1.1.bin (-2)
[    3.786155] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_69.0.3.bin (-2)
[    3.786168] i915 0000:00:02.0: firmware: failed to load i915/adlp_guc_69.0.3.bin (-2)
[    3.786171] i915 0000:00:02.0: [drm] *ERROR* GT0: GuC firmware i915/adlp_guc_70.bin: fetch failed -ENOENT
[    3.786190] i915 0000:00:02.0: [drm] GT0: GuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    3.787323] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 0.0.0
[    3.787402] i915 0000:00:02.0: [drm] *ERROR* GT0: GuC initialization failed -ENOENT
[    3.787411] i915 0000:00:02.0: [drm] *ERROR* GT0: Enabling uc failed (-5)
[    3.787416] i915 0000:00:02.0: [drm] *ERROR* GT0: Failed to initialize GPU, declaring it wedged!
[    3.787778] i915 0000:00:02.0: [drm:add_taint_for_CI [i915]] CI tainted:0x9 by intel_gt_init+0xb3/0x340 [i915]
[    3.832919] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-ā– ā– ā– 2-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[    3.867092] [drm] Initialized i915 1.6.0 20230929 for 0000:00:02.0 on minor 0
[    3.920608] fbcon: i915drmfb (fb0) is primary device
[    3.999046] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device

some fun errors in there.

Yep, that’s not good. Those firmware files it’s complaining about missing need to live in /lib/firmware/i915. The dmesg output actually gives the download locations for them,

Here’s the direct link to the files (use the ā€œplainā€ links at the end of the table):

Placing the adlp dmc and guc firmware files in /lib/firmware/i915 should allow them to be loaded at boot.

If you’re using a Debian/Ubuntu-based distribution you may be able to install the appropriate firmware files by installing the linux-firmware package:
sudo apt install linux-firmware

It installed as firmware-linux (debian trixie by the way)

and the dmesg output now reflects:

arbo@nucbox:~$ sudo dmesg | egrep 'i915'
[    3.493504] i915 0000:00:02.0: [drm] Found ALDERLAKE_P/RPL-U (device ID a7ad) display version 13.00 stepping E0
[    3.494023] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    3.494158] i915 0000:00:02.0: vgaarb: deactivate vga console
[    3.494194] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    3.494627] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    3.505989] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[    3.508335] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.36.0
[    3.508345] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[    3.523651] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[    3.524681] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[    3.524695] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[    3.525134] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
[    3.526458] mei_pxp 0000:00:16.0-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:00:02.0 (ops i915_pxp_tee_component_ops [i915])
[    3.526774] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    3.526783] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-ā– ā– ā– 2-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[    3.550832] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 0
[    3.596910] fbcon: i915drmfb (fb0) is primary device
[    3.664347] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device

I rebooted the host. Still no transcoding.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.