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!