this post was submitted on 14 Jul 2025
19 points (100.0% liked)

Selfhosted

49861 readers
795 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] bigredgiraffe@lemmy.world 6 points 1 week ago* (last edited 1 week ago)

So I had a few thoughts. I’m not sure that you can use the docker device flag with a directory as you have there, I think it expects a device node, you can pass that directory as a volume (-v) though.

If that doesn’t work you might also try running the VM with host-passthrough mode set on the CPU as well if it isn’t set that way already, sometimes that is also required for pass through to work from my experience. Also, make sure you passed through the whole device node, sometimes there are audio devices you have to pass through with the GPU device or you will get odd errors like those initialization ones you had. I’m not sure if this is the case for Intel iGPU though offhand though. Are you able to use intel_gpu_top on the VM to access the GPU? None of that is necessarily specific to proxmox though (but probably applies to anything libvirt powered) so YMMV.

Edit: I realized you may not know what a “device node” is, that is the full path to the device, like /dev/dri/renderD128 vs /dev/dri which is actually a directory.