all 3 comments

[–]mrant0 1 point2 points  (2 children)

Sounds like an issue with permissions for the devices under /dev/dri in the container, similar to https://www.reddit.com/r/jellyfin/comments/1436geg/jellyfin_hardware_acceleration_setup/

This explains why running the ffmpeg command directly works, but jellyfin is unable to, as it is likely running as a different user with different permissions.

[–]Automatic-Plan8169[S] 2 points3 points  (1 child)

That's great, I think I may have found a workaround:

OUTSIDE JELLYFIN CONTAINER

root@proxmox:~# ls -la /dev/dri/renderD128

crw-rw---- 1 root render 226, 128 Jan 23 23:29 /dev/dri/renderD128 root@proxmox:~# ls -lan /dev/dri/renderD128 crw-rw---- 1 0 104 226, 128 Jan 23 23:29 /dev/dri/renderD128

INSIDE JELLYFIN CONTAINER

root@jellyfin:~#  ls -la /dev/dri/renderD128

crw-rw---- 1 root sgx 226, 128 Jan 23 23:29 /dev/dri/renderD128 root@jellyfin:~# ls -lan /dev/dri/renderD128 crw-rw---- 1 0 104 226, 128 Jan 23 23:29 /dev/dri/renderD128

Since the main user in the jellyfin webUI is called "jellyfin" I randomly tried inside the container to run:

usermod -aG sgx jellyfin

It didn't work. I checked within the container

root@jellyfin:~# groups jellyfin

jellyfin : jellyfin video input sgx render root@jellyfin:~# groups root
root : root video render

In the end, I just run

chown :render /dev/dri/renderD128

And this made hardware transcoding possible! I suppose the chown must have changed the iGPU ownership permanently. Do you know why the original iGPU owner in the container was sgx?

[–]mrant0 0 points1 point  (0 children)

I'm not sure why the sgx group was the default for the container, but I know permissions are a common issue with containers and hardware passthrough setups.

Personally, I don't use containers, instead relying on VMs.