Hi, I’m trying to pass an HD770 from a i5-14600K to a jellyfin container that’s on Open Media Vault. I keep thinking I have the correct firmware downloaded but I guess that’s not the case.

The GPU is fully passed through via Proxmox.

Hypervisor: 6.14.5-1-bpo12-pve

OpenMediaVault: 6.12.32+bpo-amd64

lspci | grep -i vga:

00:10.0 VGA compatible controller: Intel Corporation Raptor Lake-S GT1 [UHD Graphics 770] (rev 04)

dmesg | grep -i drm:

[    2.084954] i915 0000:00:10.0: [drm] Failed to find VBIOS tables (VBT)
[    2.093499] i915 0000:00:10.0: [drm] *ERROR* DMC firmware has wrong CSS header length (1097158924 bytes)
[    2.093502] i915 0000:00:10.0: [drm] Failed to parse DMC firmware i915/adls_dmc_ver2_01.bin (-EINVAL). Disabling runtime power management.
[    3.998600] i915 0000:00:10.0: [drm] [ENCODER:240:DDI A/PHY A] failed to retrieve link info, disabling eDP
[    4.001294] i915 0000:00:10.0: [drm] *ERROR* GT0: GuC firmware i915/tgl_guc_70.bin: size (2134KB) exceeds max supported size (2048KB)
[    4.003303] i915 0000:00:10.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin: unexpected header size: 1841953 != 128
[    4.003305] i915 0000:00:10.0: [drm] *ERROR* GT0: GuC firmware i915/tgl_guc_70.1.1.bin: fetch failed -EPROTO
[    4.003307] i915 0000:00:10.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
[    4.004270] i915 0000:00:10.0: [drm] GT0: GuC firmware i915/tgl_guc_70.1.1.bin version 0.0.0
[    4.004331] i915 0000:00:10.0: [drm] *ERROR* GT0: GuC initialization failed -ENOEXEC
[    4.004333] i915 0000:00:10.0: [drm] *ERROR* GT0: Enabling uc failed (-5)
[    4.004334] i915 0000:00:10.0: [drm] *ERROR* GT0: Failed to initialize GPU, declaring it wedged!

I have adls_dmc_ver2_01.bin, tgl_guc_70.1.1.bin, and tgl_guc_70.bin all within /lib/firmware/i915/

This docker container returns this

docker run --rm \
  --device /dev/dri:/dev/dri \
  --entrypoint ffmpeg \
  ghcr.io/linuxserver/ffmpeg \
  -init_hw_device qsv=hw:/dev/dri/renderD128 \
  -hwaccel qsv -hwaccel_device hw -hwaccel_output_format qsv \
  -f lavfi -i testsrc=duration=3:size=1280x720:rate=30 \
  -vf 'format=nv12,hwupload=extra_hw_frames=64' \
  -c:v h264_qsv -f null -
[AVHWDeviceContext @ 0x56479ec06c00] libva: /usr/local/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
[AVHWDeviceContext @ 0x56479ec06c00] Failed to initialise VAAPI connection: 1 (operation failed).
Device creation failed: -5.
Failed to set value 'qsv=hw:/dev/dri/renderD128' for option 'init_hw_device': Input/output error
Error parsing global options: Input/output error

I’m at a loss and pulling my hair out.

  • Purebred0880@lemmy.wtf
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 day ago

    I did this about a month ago and also had some challenges. I’m not an expert and my understanding is not good enough to troubleshoot your error messages fully, but it does say the header size is not matching the expected value. I have my Jellyfin in Docker compose on a OMV VM running in Proxmox and passed through an arc a310, so very similar. I used “Device: - /dev/dri/:/dev/dri/”, that worked fine and “renderD128” can be chosen in the Jellyfin device drop down menu. The biggest issue I had was the render group not being imported correctly into the container. So even though I added my Docker user to the render group in the Docker compose .yml, the group got a random garbage name inside the container so it didn’t match. Not the expected group “render”, but something like “video73628ds”. Ended up making a custom Jellyfin Docker compose image that has just two lines "FROM Linuxserver.io.jellyfin:latest " (I think), then a line to import the render group from the host to the container (don’t remember the command, writing this on my phone). Then I built that image and used the built image in the Docker compose .yml instead of the normal linuxserver.io image.