Hardware/GPU/Quicksync transcoding broken on Beta 1.43.1.10540

@skreii Great news: hardware transcoding is fully working with your image. Zero-copy VAAPI, final decoder: vaapi, final encoder: vaapi, iHD 25.4.6. Thank you for building and maintaining this.

The fix was a single line I was missing in my Docker Compose:

plex:
  image: ghcr.io/home-operations/plex-next@sha256:...
  user: 997:997
  group_add:
    - "109"   # render group — required for /dev/dri/renderD128 access
  devices:
    - /dev/dri:/dev/dri

When you set user: 997:997 in Compose, Docker assigns that UID/GID but does not inherit the supplemental groups that user has on the host. On my system, /dev/dri/renderD128 is crw-rw---- root:render where render is GID 109. Without group 109 in the container’s group list, every attempt to open the device was failing silently - which libva was surfacing upstream as “Invalid argument” in ffmpeg. Adding group_add: ["109"] resolved it immediately.


For anyone wondering about the official plexinc/pms-docker image on Arrow Lake:

The official image has a separate, unrelated problem that group_add does not fix. Plex’s transcoder is compiled against musl libc and bundles its own libva.so.2, which has a hardcoded compile-time driver search path baked in:

/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-media-driver/.../lib/dri

That path does not exist at runtime, and LIBVA_DRIVERS_PATH has no effect because it’s overridden by the rpath embedded in the binary. The system iHD driver (/usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so) is compiled against glibc and cannot be loaded by a musl runtime anyway. So even with correct device permissions, the official image cannot use the Intel iHD driver as currently shipped.

For the official image to work on Intel hardware, Plex would need to do one of the following:

  1. Bundle a musl-compatible iHD driver at the hardcoded conan path (as your image effectively does by providing /usr/lib/dri/iHD_drv_video.so built for Alpine/musl and pointing Cache/va-dri-linux-x86_64 there), or

  2. Remove the hardcoded rpath from their bundled libva.so.2 so that LIBVA_DRIVERS_PATH is actually respected at runtime, or

  3. Rebase the official image on a glibc distro (e.g., Debian/Ubuntu) so the system iHD driver is ABI-compatible.

Until Plex addresses this upstream, plex-next is the only path to hardware transcoding on Intel iGPUs with this image architecture. Highly recommended for Arrow Lake users.