Skip to content

[BUG] /dev/dri/renderD128 device didn't have a corresponding group in the container #284

@thomaslazar

Description

@thomaslazar

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Tried getting jellyfin with Intel Hardware Accel to work. After many an experimentation I found the actual documentation about this here: https://docs.linuxserver.io/images/docker-jellyfin/

I added the docker mod (https://github.com/linuxserver/docker-mods/tree/jellyfin-opencl-intel) to the container and mapped the /dev/dri device.

But it still wouldn't work when enabling in jellyfin.

After more investigation I found that the /dev/dri/renderD128 device didn't have a group, so it couldn't be properly accessed.

root@f46b89695ce1:/# ls -l /dev/dri
total 0
crw-rw---- 1 root video  226,   0 Mar 18 13:28 card0
crw-rw---- 1 root 105     226, 128 Mar 18 13:28 renderD128

The permissions for those devices on the docker host system are as follows.

root@zimaboard:~/# ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root         80 Mar 18 14:28 by-path
crw-rw---- 1 root video  226,   0 Mar 18 14:28 card0
crw-rw---- 1 root render 226, 128 Mar 18 14:28 renderD128

I was able to solve this problem by creating a group render inside the container and adding the user abc to it. But this will not survive container update I guess.

We will automatically ensure the abc user inside of the container has the proper permissions to access this device. only applied to the video group inside the container.

Expected Behavior

Permissions inside the container applied correctly for the /dev/dri/renderD128 device and the abc user.

Steps To Reproduce

  1. Have Debian 12 as host
  2. Run jellyfin container with device mapped and docker-mod for intel opencl
  3. When enabling hardware accel it fails with permission issues.

Environment

- OS: Debian 12
- How docker service was installed: through Cosmos Cloud installation

CPU architecture

x86-64

Docker creation

Cosmos Cloud specific "compose" configuration:

{
  "services": {
    "Jellyfin": {
      "container_name": "Jellyfin",
      "image": "lscr.io/linuxserver/jellyfin:latest",
      "environment": [
        "PUID=1000",
        "PGID=1000",
        "PATH=/lsiopy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        "HOME=/root",
        "LANGUAGE=en_US.UTF-8",
        "LANG=en_US.UTF-8",
        "TERM=xterm",
        "S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0",
        "S6_VERBOSITY=1",
        "S6_STAGE2_HOOK=/docker-mods",
        "VIRTUAL_ENV=/lsiopy",
        "LSIO_FIRST_PARTY=true",
        "NVIDIA_DRIVER_CAPABILITIES=compute,video,utility",
        "DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel"
      ],
      "labels": {
        "build_version": "Linuxserver.io version:- 10.10.6ubu2404-ls54 Build-date:- 2025-03-04T12:57:51+00:00",
        "cosmos-auto-update": "true",
        "cosmos-force-network-mode": "cosmos-Jellyfin-default",
        "cosmos-force-network-secured": "true",
        "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Jellyfin/icon.png",
        "maintainer": "thelamer",
        "org.opencontainers.image.authors": "linuxserver.io",
        "org.opencontainers.image.created": "2025-03-04T12:57:51+00:00",
        "org.opencontainers.image.description": "[Jellyfin](https://github.com/jellyfin/jellyfin) is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.",
        "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-jellyfin",
        "org.opencontainers.image.licenses": "GPL-3.0-only",
        "org.opencontainers.image.ref.name": "aafa95871135ded51cfdcde363275fbe2c36960b",
        "org.opencontainers.image.revision": "aafa95871135ded51cfdcde363275fbe2c36960b",
        "org.opencontainers.image.source": "https://github.com/linuxserver/docker-jellyfin",
        "org.opencontainers.image.title": "Jellyfin",
        "org.opencontainers.image.url": "https://github.com/linuxserver/docker-jellyfin/packages",
        "org.opencontainers.image.vendor": "linuxserver.io",
        "org.opencontainers.image.version": "10.10.6ubu2404-ls54"
      },
      "ports": [],
      "volumes": [
        {
          "Type": "volume",
          "Source": "Jellyfin-config",
          "Target": "/config"
        },
        {
          "Type": "bind",
          "Source": "/mnt/sda1/Media/Movies",
          "Target": "/data/movies"
        },
        {
          "Type": "bind",
          "Source": "/mnt/sda1/Media/Shows",
          "Target": "/data/tvshows"
        },
        {
          "Type": "bind",
          "Source": "/dev/dri/renderD128",
          "Target": "/dev/dri/renderD128"
        },
        {
          "Type": "bind",
          "Source": "/dev/dri/card0",
          "Target": "/dev/dri/card0"
        }
      ],
      "networks": {
        "cosmos-Jellyfin-default": {},
        "cosmos-Media": {}
      },
      "routes": null,
      "restart": "unless-stopped",
      "devices": [
        "/dev/dri:/dev/dri"
      ],
      "expose": [],
      "entrypoint": "/init",
      "runtime": "runc",
      "working_dir": "/",
      "hostname": "f46b89695ce1",
      "network_mode": "cosmos-Jellyfin-default",
      "healthcheck": {
        "test": null,
        "interval": 0,
        "timeout": 0,
        "retries": 0,
        "start_period": 0
      }
    }
  }
}

Container logs

from the jellyfin transcode logs

ffmpeg version 7.0.2-Jellyfin Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
Device creation failed: -542398533.
Failed to set value 'vaapi=va:,vendor_id=0x8086,driver=iHD' for option 'init_hw_device': Generic error in an external library
Error parsing global options: Generic error in an external library

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions