← Portfolio homelab
Browse homelab topics

Homelab / Technical documentation

UHD 630: host, guest, container.

Separate PCI assignment from driver availability, container permissions and an application’s actual hardware work.

Jump to a section

Prove each boundary separately

  1. HP ProxmoxIntel UHD 630 PCI assignment
  2. Debian VMi915 driver and render device
  3. Docker containerDevice access and group permissions
  4. ApplicationA successful hardware-accelerated job
Diagnostic dependency chain. Presence at one stage does not prove the next stage works.

The October guest initially saw only an emulated VGA adapter. By 18 October the recovered discussion reported UHD 630 passthrough to the Debian VM, with i915 and /dev/dri/renderD128 present.

Evidence: S08.

What was configured historically

Historical command shape · S08 · machine-specific values replaced · changes VM configuration
qm set <VM_ID> -hostpci0 <GPU_PCI_ADDRESS>,pcie=1

The original command targeted the historical Debian VM. This single assignment is not a complete BIOS/IOMMU, bootloader, VFIO or guest-driver installation procedure, and it was not executed in this documentation review.

Illustrative Compose fragment · verify actual group IDs in the guest
services:
  encoder:
    image: <REVIEWED_ENCODER_IMAGE>
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "<VIDEO_GID>"
      - "<RENDER_GID>"

The historical group numbers are deliberately not treated as portable defaults. Permissions must match the host namespace seen by the container.

Reference: Proxmox PCI passthrough documentation. Host/guest prerequisites still need configuration-specific verification.

Evidence: S08 · S09.

Read-only checks, in the relevant namespace

Illustrative · Debian guest · read-only
lspci -nnk | grep -A3 -Ei 'vga|display'
ls -l /dev/dri
id
Illustrative · inside an authorized encoder container · read-only capability checks
id
ls -l /dev/dri
vainfo --display drm --device /dev/dri/renderD128
ffmpeg -hide_banner -encoders | grep -E 'vaapi|qsv'

Record which namespace produced each result. Listing an encoder means the FFmpeg build exposes it; it does not mean a hardware session can initialize. A Plex session and a separate FFmpeg/Tdarr process need their own validation.

For an actual completed job and the distinct QSV failure, continue to VA-API and Tdarr.