Hello everyone,

I am trying to get my new A380 working on jellyfin for transcoding. My setup is headless so I have no X server or wayland installed.

I am running debian 12 bookworm with backported ZFS and kernel:

Linux Kiruna 6.4.0-0.deb12.2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.4.4-3~bpo12+1 (2023-08-08) x86_64 GNU/Linux

According to everything I found, there is no need for any extra drivers as Intel card drivers are baked into the kernel and functional on 6.2+

I have followed the documentation regarding intel GPUs and added both /dev/dri and /dev/dri/renderD128 to my devices in jellyfin and restarted.

Executing vainfo in the container space returns this:

Trying display: drm
libva info: VA-API version 1.19.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_19
libva error: /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_19
libva error: /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

vainfo on the main device sudo vainfo --display drm --device /dev/dri/card0 returns the same thing even though this command should work on headless servers.

executing docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va -init_hw_device opencl@va

for checking OpenCL gives this:

ffmpeg version 5.1.3-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[AVHWDeviceContext @ 0x55e4877d54c0] Trying to use DRM render node for device 0.
[AVHWDeviceContext @ 0x55e4877d54c0] libva: VA-API version 1.19.0
[AVHWDeviceContext @ 0x55e4877d54c0] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55e4877d54c0] libva: Found init function __vaDriverInit_1_19
[AVHWDeviceContext @ 0x55e4877d54c0] libva: /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so init failed
[AVHWDeviceContext @ 0x55e4877d54c0] libva: va_openDriver() returns 1
[AVHWDeviceContext @ 0x55e4877d54c0] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so
[AVHWDeviceContext @ 0x55e4877d54c0] libva: Found init function __vaDriverInit_1_19
[AVHWDeviceContext @ 0x55e4877d54c0] libva: /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so init failed
[AVHWDeviceContext @ 0x55e4877d54c0] libva: va_openDriver() returns -1
[AVHWDeviceContext @ 0x55e4877d54c0] Failed to initialise VAAPI connection: -1 (unknown libva error).
Device creation failed: -5.
Failed to set value 'vaapi=va' for option 'init_hw_device': Input/output error
Error parsing global options: Input/output error

I also have under environment this option:

- DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel

because I am using the Linuxserver.io version of jellyfin.

Starting a show with hardware encoding then enables (VAAPI or QSV) results in “This client isn’t compatible with the media and the server isn’t sending a compatible media format.” so hardware encoding definitely isn’t working.

Does anyone have any idea if this is because I don’t have a display driver installed? According to FFMPEG it shouldn’t need an X server environment

Solution 5 months later:

After a lot of debuging, giving up, and starting again recently. I noticed that intel GuC was loading on start but HuC was not. I ended up having to download the entire linux firmware git repo, extracting the i915 folder and dropping it in my /usr/lib/firmware/.

Now it works perfectly!

  • mholiv@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    9 months ago

    Does your system have selinux? If so you may need to enable container access to devices. setsebool -P container_use_devices=1

    Check for other policy violations as well.

    • JustEnoughDucksOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      No i don’t believe so, and setsebool is not a command for me, so I think it is a different problem.

  • Uninvited Guest@lemmy.ca
    link
    fedilink
    English
    arrow-up
    3
    ·
    9 months ago

    Try the official jellyfin Docker image. I had issues with hardware acceleration on the Linuxserver image that immediately went away with the official image.

    • JustEnoughDucksOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      should i make an entirely new config directory and volume setup? I don’t think it is just a drop in replacement with a different image.

      • Uninvited Guest@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        9 months ago

        Yeah. Your media directory can stay as is, but the structure of config/cache/etc should have a distinct directory from the Linuxserver version.

  • SteveTech@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    9 months ago

    Does anyone have any idea if this is because I don’t have a display driver installed?

    I have an A770 and vaapi seems to work fine headless for me. However, I don’t know if this is related, but OneAPI/IPEX won’t work until I have a Wayland session active.

      • SteveTech@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        9 months ago

        Nah it’s an AI library for Intel, completly unrelated to Jellyfin, but seems to have similar issues to what you’re facing with vaapi where it struggles to find the GPU.

  • JustEnoughDucksOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    Solution 5 months later:

    After a lot of debuging, giving up, and starting again recently. I noticed that intel GuC was loading on start but HuC was not. I ended up having to download the entire linux firmware git repo, extracting the i915 folder and dropping it in my /usr/lib/firmware/.

    Now it works perfectly!