### Is there an existing issue for this? - [x] I have searched the existing issues ### Current Behavior VAAPI hardware transcoding fails with exit code 187 in ClusterPlex workers (and reproducible directly via Plex Transcoder binary). Plex's bundled libva 2.21.0 returns: [AVHWDeviceContext @ 0x7f977c3a7dc0] No VA display found for device /dev/dri/renderD128. Device creation failed: -22. Failed to set value 'vaapi=vaapi:/dev/dri/renderD128' for option 'init_hw_device': Invalid argument Error parsing global options: Invalid argument This occurs regardless of whether LIBVA_DRIVERS_PATH points to Plex's own bundled iHD driver (/usr/lib/plexmediaserver/lib/dri) or the system iHD driver (/usr/lib/x86_64-linux-gnu/dri). Both renderD128 and card0 fail identically. Tests were run as root inside the container, ruling out group permission issues entirely. Suggested Fix / Upstream Request This is ultimately a Plex upstream issue (bundled musl libva 2.21.0 + iHD 24.1.5 cannot initialise VAAPI on N150 + kernel 6.12) 1 update bundled libva beyond 2.21.0 and iHD beyond 24.1.5 2 Document the limitation in the image README for users on Debian Trixie / kernel 6.12+ with Alder Lake-N hardware 3 Investigate whether a custom init script can patch Plex's libva path at container startup once a compatible musl-built libva becomes available As a work around, I am currently using FFMPEG_HWACCEL=none (CPU transcoding) which works correctly. Software transcoding across 3 N150 nodes via ClusterPlex is functional this way, but I as a lifetime pass holder i would love to have proper hw transcoding on my shiny new setup. ### Expected Behavior VAAPI hardware transcoding initialises successfully and Plex Transcoder is able to use Intel Gen 12 Xe GPU on the N150 for encode/decode acceleration. ### Steps To Reproduce Steps to Reproduce Deploy linuxserver/plex:latest on Debian Trixie (kernel 6.12) with Intel N150 hardware Mount /dev/dri:/dev/dri in the container Set FFMPEG_HWACCEL=vaapi, LIBVA_DRIVER_NAME=iHD Attempt a transcode or run the transcoder binary directly: bashdocker exec -it <container> sh -c " LIBVA_DRIVER_NAME=iHD \ LIBVA_DRIVERS_PATH=/usr/lib/plexmediaserver/lib/dri \ /usr/lib/plexmediaserver/'Plex Transcoder' \ -init_hw_device vaapi=vaapi:/dev/dri/renderD128 \ -hwaccel vaapi -hwaccel_output_format vaapi 2>&1 \ | grep -v 'configuration:\|enable\|disable\|rpath\|conan\|extra'" Result: No VA display found for device /dev/dri/renderD128. Device creation failed: -22. ### Environment ```markdown OS: Debian Trixie (Debian 13) How docker service was installed: Docker via apt (Docker Swarm mode) Linux kernel: 6.12.63+debl3-amd64 Architecture: x86-64 CPU / iGPU: Intel N150 (Alder Lake-N, Gen 12 Xe Graphics) × 3 nodes Linuxserver/plex image version: 1.43.0.10492-121068a07-ls295 (latest at time of report) Plex FFmpeg build: 74455c4-a119aa85fdef32b7dbfbf8a2 Plex bundled libva version: 2.21.0-9 Plex bundled iHD driver version: intel-media-driver 24.1.5 System libva: 2.22.0 (Debian Trixie) System iHD driver: intel-media-va-driver-non-free 25.2.3 ``` ### CPU architecture x86-64 ### Docker creation ```bash version: '3.8' services: plex: image: ghcr.io/linuxserver/plex:latest networks: - proxy_public - clusterplex_private environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - VERSION=docker - DOCKER_MODS=ghcr.io/pabloromeo/clusterplex_dockermod:latest - CLUSTER_MODE=remote - ORCHESTRATOR_URL=http://orchestrator:3500 - PMS_SERVICE=plex - LOCAL_RELAY_ENABLED=1 - LOCAL_RELAY_PORT=32499 volumes: - /mnt/containerdata/plex/config:/config - /mnt/synology/watchables:/data - /mnt/containerdata/plex/config/Codecs:/codecs - /mnt/containerdata/plex/transcode:/transcode - /mnt/containerdata/plex/wgetrc_insecure:/etc/wgetrc:ro ports: - 32400:32400 - 32499:32499 deploy: placement: constraints: [node.hostname == Portainer-vm1] orchestrator: image: ghcr.io/pabloromeo/clusterplex_orchestrator:latest networks: - clusterplex_private environment: - TZ=Europe/London - LISTENING_PORT=3500 - WORKER_SELECTION_STRATEGY=LOAD_RANK deploy: placement: constraints: [node.hostname == Portainer-vm1] worker: image: ghcr.io/linuxserver/plex:latest networks: - clusterplex_private environment: - PUID=1000 - PGID=992 - TZ=Europe/London - VERSION=docker - DOCKER_MODS=ghcr.io/pabloromeo/clusterplex_worker_dockermod:latest - ORCHESTRATOR_URL=ws://orchestrator:3500 - LISTENING_PORT=3501 - WORKER_CPU_STAT_INTERVAL=2000 - EAE_SUPPORT=1 - FFMPEG_HWACCEL=vaapi - LIBVA_DRIVER_NAME=iHD - LIBVA_DRIVERS_PATH=/usr/lib/plexmediaserver/lib/dri - INTEL_LOWPOWER_ENCODE=1 volumes: - /mnt/synology/watchables:/data - /mnt/containerdata/plex/config/Codecs:/codecs - /mnt/containerdata/plex/transcode:/transcode - /dev/dri:/dev/dri - /mnt/containerdata/plex/wgetrc_insecure:/etc/wgetrc:ro deploy: mode: global restart_policy: condition: on-failure networks: proxy_public: external: true clusterplex_private: driver: overlay attachable: true ``` ### Container logs ```bash Worker container startup (ClusterPlex dockermod) — no errors, workers connect successfully: EAE_EXECUTABLE => /codecs/74455c4-.../EasyAudioEncoder FFMPEG_HWACCEL => vaapi Setting hwaccel to vaapi Transcoder exit: child process exited with code 187 Completed transcode Transcoder close: child process exited with code 187 Manual transcoder test inside container: ffmpeg version 74455c4-a119aa85fdef32b7dbfbf8a2 Copyright (c) 2000-2025 the FFmpeg developers built with Plex clang version 11.0.1 libavutil 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 4. 12.100 / 4. 12.100 [AVHWDeviceContext @ 0x7f977c3a7dc0] No VA display found for device /dev/dri/renderD128. Device creation failed: -22. Failed to set value 'vaapi=vaapi:/dev/dri/renderD128' for option 'init_hw_device': Invalid argument Error parsing global options: Invalid argument ```