HomeTechOps

NAS

Plex and Jellyfin hardware transcoding: what works

Hardware transcoding decides whether a NAS-hosted Plex or Jellyfin server can deliver 5-10 simultaneous streams or chokes on the second 4K-HDR session. The April 2025 Plex licensing changes (lifetime Pass jumped to $249.99, remote streaming paywalled) sent a wave of users to Jellyfin and made hardware acceleration genuinely mandatory. The right pick depends on whether you're software-transcode-capable already (UHD 630 will quietly do 4-6 1080p streams; UHD 770 manages 4 concurrent 4K with HDR tone mapping) or need to scale to 8+ 4K-HDR streams with AV1 encode (Arc A310/A380 or Quadro Pro/RTX A-series). Either way, the rest is plumbing: /dev/dri pass-through into the container, the correct VA driver (`intel-media-driver` for Gen 9+, `i965-va-driver` for Gen 8 and older), and on Synology, the not-every-Plus-has-a-GPU caveat.

Best for: Operators running or planning to run Plex/Jellyfin on a home NAS (Unraid, TrueNAS Scale, Synology, QNAP, or bare metal) and deciding what hardware actually serves their concurrent-stream needs, not what reviewers benchmark on a gaming PC.

Real Plex hardware transcoding: enabled, then working

Reference images and diagrams. Click any image to view full resolution.

Plex Web admin Settings → Transcoder pane with both 'Use hardware acceleration when available' and 'Use hardware-accelerated video encoding' checkboxes ticked. 'Enable HDR tone mapping' is on with Tonemapping Algorithm set to hable. 'Enable HEVC video transcoding' is set to 'HEVC Sources Only'. 'Hardware transcoding device' is set to Auto.
Real Plex Web Settings → Transcoder pane (captured 2026-05-19 from a working Plex Pass server). The two HW-accel checkboxes are the gate: without both ticked, Plex software-transcodes regardless of your iGPU/Arc/NVENC silicon. 'Enable HDR tone mapping' + Tonemapping Algorithm 'hable' is what turns 4K HDR sources into watchable SDR on non-HDR clients; without it, 4K HDR transcodes look washed out or magenta-cast. 'Enable HEVC video transcoding' set to 'HEVC Sources Only' is the operator-grade choice — Plex only emits HEVC when the source is HEVC, avoiding the (lossy) H.264 → HEVC re-encode that hurts client compatibility. 'Hardware transcoding device: Auto' lets Plex pick the right /dev/dri renderer; pin to a specific device only if you have multiple GPUs.
Plex Web Dashboard 'Now Playing' expanded session detail for a 4K HDR HEVC source being transcoded. Both the source Video line ('4K HDR10 (HEVC Main 10) (hw)') and the output line ('4K (HEVC) — Transcode (hw)') show the (hw) annotation indicating hardware-accelerated decode and encode. Audio is being CPU-transcoded from DTS-HD MA 5.1 to AAC (no (hw) tag — audio is always CPU on Plex). Subtitles are CPU-transcoded from SRT to ASS. The CPU graph below shows Plex Media Server holding around 5% during the transcode, while overall system CPU sits around 10%.
Real Plex Dashboard during an active 4K HDR transcode (captured 2026-05-19). This is what hardware acceleration actually looks like when it's working: the (hw) annotation appears on BOTH the source decode line and the output encode line. The CPU graph at the bottom is the secondary proof — Plex Media Server is at ~5% during a 4K HDR HEVC transcode with HDR tone mapping, which is impossible on software transcoding (a software 4K HDR transcode pins a single core at 100% and usually can't keep up in real time). If your dashboard shows the session but the (hw) tag is missing on the encode line, your iGPU is decoding but the encoder is falling back to software — check that 'Use hardware-accelerated video encoding' is also ticked (not just the first checkbox). Audio + subtitle transcodes never carry the (hw) annotation; that's expected behavior, not a misconfiguration.

The 2024-2025 Plex commerce shift (why this matters now)

  • Effective 29 April 2025: Plex Pass lifetime jumped from $119.99 to $249.99 (+108%, first hike in ~10 years). Monthly from $4.99 to $6.99. Yearly from $39.99 to $69.99. Existing Plex Pass holders were grandfathered.
  • Remote streaming was paywalled the same date — server users without a Pass need a $1.99/mo or $19.99/yr Remote Watch Pass to stream their own files away from home, unless the server owner has a Pass (in which case all linked users inherit it).
  • Enforcement timeline: mobile first (April 2025), Fire TV / Roku later in 2025, smart TVs + consoles in 2026. Plex paywall is now actively enforced on most clients.
  • Hardware transcoding has always required Plex Pass — that didn't change but it's worth restating, because without a Pass your iGPU does nothing for Plex regardless of OS/container correctness.
  • Migration consequence: r/PleX migration threads spiked within 48h of the announcement; Jellyfin saw measurable GitHub-stars + Docker-pulls bump. Jellyfin is free, open source, no Pass, no remote paywall — but you self-handle remote access (Tailscale, Cloudflare Tunnel — see /guides/home-remote-access-tailscale-vs-cloudflare-tunnel).

Intel iGPU (QuickSync) capability matrix

  • Gen 9 Skylake (HD 530, 6th gen): H.264 enc/dec + HEVC 8-bit, HEVC 10-bit decode only. ~4-6 1080p streams.
  • Gen 9.5 Kaby/Coffee/Comet Lake (UHD 630, 7-10th gen): H.264 + HEVC 8/10-bit enc + dec. ~4-6 1080p, ~2-4 4K HEVC-to-1080p. The home-NAS workhorse from 2018-2022.
  • Gen 12 Alder/Raptor Lake (UHD 770, 12-13th gen): adds 4:2:2/4:4:4 HEVC decode on Rocket Lake+, AV1 decode. ~8-10 1080p, ~4-7 4K HEVC-to-1080p, ~95-110W full system load.
  • Intel N100/N150 (Alder Lake-N): low-power version of Gen 12, ~4-5 4K HDR transcodes, single-digit-watt iGPU power adder. Excellent fit for dedicated mini-PC media servers.
  • Apple Silicon (M1-M4 via VideoToolbox): H.264 + HEVC 8/10-bit enc/dec; M3+ adds AV1 hardware decode (encode is still HEVC/H.264 only). ~3-5 simultaneous 4K HDR streams; ~7W idle, ~20W transcoding. Native macOS Jellyfin works out of the box; Plex Pass + iGPU acceleration also works.

Intel Arc dGPU (the sweet spot for 5+ 4K-HDR streams)

  • Arc A310 (~$110, low-profile, single-slot, 75W TGP): the no-display-output transcoder — perfect for headless NAS use. ~18W idle (with PCIe ASPM tuned; ~30-40W without), ~50W peak. Forum-verified 150+ FPS for 4K HEVC HDR → 4K H.264 SDR; ~5+ concurrent 4K HDR tone-mapped streams (capped by 4GB VRAM). AV1 encode + decode.
  • Arc A380 (~$129, 6GB VRAM, dual MFX engines): ~8-12 simultaneous 4K transcodes, ~40W during 4K HDR playback. Subtract 2-4 streams when full HDR tone-mapping is enabled. Same media engine as A580/A750/A770; bigger cards just have more VRAM headroom and PCIe bandwidth, not more per-stream encode quality.
  • Arc B580 (Battlemage, 12GB VRAM): same Xe2 media engine as the Lunar Lake iGPU but in a dGPU. Preliminary reports show similar headroom to A580/A770 with AV1 encode efficiency gains. Linux driver maturity (xe driver) is still settling in 2026 — verify your kernel version (need recent Unraid 7.x or Debian Trixie+).
  • ASPM gotcha: Arc cards idle at 30-40W without PCIe ASPM L1 enabled (BIOS + kernel parameter). Tune it down to 10-15W idle. Documented Linux quirk on the Intel community forum + Unraid forums.

NVIDIA NVENC (the Plex-favorite, with the consumer-card patch caveat)

  • Consumer GeForce simultaneous-stream cap: historically 3, NVIDIA relaxed to 5 in 2023, up to 8/12 on recent driver branches. The keylase/nvidia-patch project on GitHub removes the cap entirely — EULA-grey: NVIDIA's EULA forbids modifying driver binaries. Quadro/RTX A-series and data-center cards have NO session cap and don't need patching.
  • NVENC generation matrix: Maxwell 2 (GTX 950/960) H.264 only; Pascal (1050/1060/1070, P400/P1000/P2000) HEVC 8-bit enc; Turing (T400/T600/T1000/T1200, GTX 1650 Super, RTX 2060) HEVC 10-bit enc + B-frame support; Ampere (RTX 3050/3060/3070/3080, A2000) same NVENC as Turing + AV1 dec only; Ada (RTX 4060/4070, RTX 4000 SFF Ada) AV1 encode + dual NVENC on 4070+.
  • Low-power NAS picks: Quadro T400 (~$140, 30W, no session cap) → ~3-4 4K transcodes unpatched; T1000 (~$300, 50W, no cap) → 4-6 4K with 4GB VRAM; RTX A2000 (75W, no cap) is the sweet spot if budget allows.
  • Patched gaming-card estimates (community-reported): GTX 1650 Super ~8 1080p / ~3 4K; RTX 3050 ~12-15 4K HEVC→1080p; RTX 4060 (Ada) similar 4K count plus AV1 encode and lower power than 3050.

Container wiring (Plex with Intel iGPU/Arc QSV)

  • Plex docker-compose snippet (official plexinc/pms-docker:plexpass image): `network_mode: host`, `devices: ['/dev/dri:/dev/dri']`, `volumes` mapping `/config`, `/transcode` (set in Plex Settings > Transcoder), and `/data:ro` for the media library. Inside Plex Settings > Transcoder, tick 'Use hardware acceleration when available' + 'Use hardware-accelerated video encoding'. Plex Pass required.
  • Jellyfin docker-compose (official jellyfin/jellyfin): `user: '1000:1000'`, `group_add: ['<render-group-gid>']` (find with `getent group render | cut -d: -f3` on host), `devices: ['/dev/dri/renderD128:/dev/dri/renderD128']`. Then in Dashboard > Playback > Hardware acceleration: Intel QuickSync (QSV) for Gen 8+ iGPUs + all Arc; VAAPI for older iGPUs or AMD; enable HEVC + AV1 + 'Enable Tone mapping'.
  • LinuxServer.io plex image (lscr.io/linuxserver/plex) vs official: LSIO auto-updates PMS via env var, ships more frequent OS-level CVE patches; uses PUID/PGID env scheme. Official image lags on base-image patching but matches Plex's reference docs. Community split: LSIO for security, official for matching Plex docs.
  • Unraid Community Apps: search 'binhex-plex' or 'linuxserver/plex' or 'jellyfin'; templates expose `/dev/dri` as a device line to tick on. For Arc, install the 'Intel-GPU-TOP' plugin to verify utilization during a transcode.
  • TrueNAS Scale Apps: Apps > Plex or Jellyfin > Edit > 'GPU Configuration' > Add GPU > select `gpu.intel.com/i915` (or NVIDIA passthrough). No raw /dev/dri editing — TrueNAS handles the K8s device-plugin wiring.

Synology DSM iGPU pass-through (only some models support it)

  • Supported (have an Intel iGPU and DSM kernel includes i915): DS920+, DS220+, DS720+, DS1520+, DS420+ (Gemini Lake J4125), DS918+ (Apollo Lake J3455).
  • **NOT supported (no iGPU at all)**: DS923+, DS1522+, DS1821+, DS2422+ (AMD Ryzen R1600 — no QuickSync path). DS1819+, DS3018xs, RS units (Intel Xeon without iGPU). Synology Plus does NOT automatically mean iGPU.
  • 2025-series Plus refresh (DS725+, DS925+, DS1525+, DS1825+, DS425+) shipped J4125 hardware but Synology stripped the i915 kernel driver from DSM — breaking hardware transcoding by default. Community workaround (RROrg SSH driver patch) re-enables it but is unsupported and re-applies on reboots.
  • Synology DSM passthrough procedure: Container Manager > Project > Create > paste compose YAML > add device `/dev/dri:/dev/dri` (Network/Storage tab) > set `group_add: ['<videodriver-gid>']` matching DSM's `videodriver` group GID (varies by model; check via SSH: `getent group videodriver` or `cat /etc/group | grep dri`).
  • On supported models, the Plex Media Server package (not the Docker container) uses hardware acceleration directly with no setup. Jellyfin must run in Container Manager and needs the device map.

Common misconfigurations (symptom → fix)

  • Container has no `/dev/dri` → Plex/Jellyfin silently software-transcodes, CPU spikes to 80-100%. Fix: add `devices: ['/dev/dri:/dev/dri']` to compose; verify inside container with `ls -la /dev/dri/` showing `renderD128`.
  • Render-group GID mismatch → ffmpeg log shows `Failed to initialise VAAPI connection: -1 (unknown libva error)` or `No VA display found for device /dev/dri/renderD128`. Fix: `getent group render | cut -d: -f3` on host, set that GID in compose `group_add`.
  • Wrong VA driver inside container (i965-va-driver loaded on Gen 9+ where iHD is required) → HEVC decode missing or crashes. Fix: use the official `jellyfin/jellyfin` image (ships jellyfin-ffmpeg with iHD); on custom images install `intel-media-va-driver-non-free` and set `LIBVA_DRIVER_NAME=iHD`.
  • Plex Pass not active (or wrong account claimed) → Plex transcoder runs but uses CPU only; dashboard shows `(hw)` missing in active session. Fix: confirm subscription on the server-owning account, not the viewer; restart container; tick both HW-accel options in Plex Settings > Transcoder.
  • Jellyfin codec selector mismatched → transcodes that should be hardware fall back when source is AV1/VP9/HEVC 10-bit and the selected GPU doesn't support that decode. Fix: in Playback settings *uncheck* codecs your hardware can't decode (e.g. AV1 dec on a Gen 11 iGPU) so Jellyfin chooses correctly.
  • 4K HDR tone-mapping on hardware that lacks OpenCL → Jellyfin tone-mapping is CPU-bound at 19fps even when the rest of the pipeline is HW. Fix: enable 'Tone mapping' + 'Use OpenCL' (Intel), or use Vulkan tone-mapping on Arc.
  • Two GPUs in host, wrong one selected → Jellyfin picked the first device. Fix: in compose, pass only the intended renderD12X node; or set `JELLYFIN_FFMPEG__HWA_DEVICE=/dev/dri/renderD129`.

Real-world stream counts (consolidated forum data)

  • Intel UHD 630 (8th/9th gen): ~4-6 1080p HEVC→H.264; ~2-4 4K HEVC→1080p; ~1-2 4K HDR tone-mapped. No AV1 encode.
  • Intel UHD 770 (12-13th gen): ~8-10 1080p; ~4-7 4K; ~3-5 4K HDR tone-mapped. ~95-110W full system on i7-12700K. No AV1 encode.
  • Intel N100: ~4-5 1080p; ~3-4 4K; ~2-3 4K HDR. ~6-10W iGPU power adder.
  • Intel Arc A310: ~12-15 1080p; ~5-7 4K; ~4-5 4K HDR tone-mapped. AV1 enc + dec. 18W idle (ASPM), 50W peak.
  • Intel Arc A380: ~18-25 1080p; ~8-12 4K; ~6-10 4K HDR tone-mapped. AV1 enc + dec. 30-40W idle, 75W peak.
  • Quadro T400 (Turing): ~6-8 1080p (no cap); ~3-4 4K; ~2-3 4K HDR. 10W idle, 30W peak. No AV1 encode.
  • Quadro T1000: ~8-10 1080p; ~4-6 4K; ~3-5 4K HDR (4GB VRAM ceiling). 12W idle, 50W peak.
  • RTX A2000 (Ampere, no cap): ~12-15 1080p; ~8-10 4K; ~6-8 4K HDR. 15W idle, 70W peak.
  • RTX 4060 (Ada, patched): ~12-15 1080p; ~8-12 4K; ~6-10 4K HDR. AV1 encode. 12W idle, 115W peak.
  • Apple M2/M3 Mac mini (VideoToolbox): ~6-10 1080p; ~3-5 4K; ~3-5 4K HDR. AV1 decode on M3+. 7W idle, 20W transcoding.
Operator snapshotEvidence first
First proof

Plex: Plex Pass is active on the server-owning account.

Screen to open

plex.tv/account; or in Plex Web > top-right user menu > Account

Expected signal

plex.tv/account shows subscription status.

Stop boundary

Don't buy a GeForce gaming GPU for a headless transcoding server and apply nvidia-patch — Quadro Pro is the legally clean path. Don't buy a no-iGPU Synology (DS923+) and expect HW transcoding — there's no path on that chassis.

Layer path

1Plex Pass paywalled remote streaming on April 29, 2025; lifetime Pass jumped to $249.99. Hardware transcoding has always required Plex Pass. Jellyfin is the free alternative — no Pass, no remote paywall, but you self-handle remote access.
2Hardware transcoding fails into one of three categories: GPU not present (no iGPU on chassis), GPU present but not exposed to container (no /dev/dri pass-through, wrong group_add GID), or GPU exposed but driver mismatch (wrong VA driver inside container, wrong codec selector in Jellyfin, Plex Pass not active).
3Stream-count capacity depends on: codec (HEVC > H.264 in encoder load), resolution (4K ~4x 1080p), HDR tone-mapping (cuts capacity 30-50%), and VRAM (Arc A310 4GB caps at ~5 simultaneous 4K-HDR; A380 6GB at ~8-12).
4Safety boundary: nvidia-patch for consumer NVENC stream-cap removal is EULA-grey; Quadro Pro / RTX A-series have no session cap legally.
Runbook

Step-by-step runbook

Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.

1

Confirm hardware capability for the load you need

Check: List target concurrent stream count + source codec + 4K HDR yes/no. Cross-reference against the hardware matrix on /nas/plex-jellyfin-transcoding-hardware.

Expected result: Clear go/no-go on existing hardware. Upgrade decision is justified by evidence, not vibes.

If not: If existing iGPU is sufficient, don't upgrade. If not, pick the cheapest hardware that meets the need.

2

Set up container pass-through correctly

Check: Add `devices: ['/dev/dri:/dev/dri']` (Intel) or NVIDIA runtime to compose. Set `group_add` to match host's render group GID. Use the official jellyfin/jellyfin image OR install intel-media-va-driver-non-free + set LIBVA_DRIVER_NAME=iHD in custom images.

Expected result: `docker exec <container> vainfo` shows the driver and supported codecs.

If not: If vainfo fails inside the container, fix the driver/GID issue before trying Plex/Jellyfin transcoding.

3

Configure Plex Pass / Jellyfin hardware-accel settings

Check: Plex: confirm Plex Pass active on server-owning account; Settings > Transcoder > tick both 'Use hardware acceleration' and 'Use hardware-accelerated video encoding'. Jellyfin: Dashboard > Playback > Hardware acceleration: select QSV (Intel Gen 8+) or VAAPI (older Intel/AMD); enable HEVC + AV1 + 'Enable Tone mapping' + 'Use OpenCL' if on iGPU.

Expected result: Plex Dashboard shows `(hw)` next to decode/encode lines in active sessions.

If not: If Plex still shows software, check Plex Pass first — common cause.

4

Verify with utilization monitoring

Check: During an actual transcode, run `intel_gpu_top` or `nvidia-smi -l 1` on host. Watch GPU utilization.

Expected result: Utilization rises into 30-90% range during transcode.

If not: Flat 0% = software fallback; the previous steps weren't applied correctly. Recheck.

5

Test under concurrent load

Check: Trigger 3-5 simultaneous transcodes from different clients. Watch stream-counts before buffering starts.

Expected result: Concurrent capacity meets your target.

If not: If capacity is below expectation, recheck VRAM (Arc A310/A380 4-6GB cap), or codec selector mismatches (AV1 source on a GPU without AV1 decode).

6

On Synology: check chassis-specific iGPU support

Check: Cross-reference your Synology model against the supported-iGPU list (DS920+/DS720+/DS1520+/DS220+/DS420+/DS918+).

Expected result: Your model is on the supported list; Container Manager passthrough works.

If not: Not on the list (DS923+, DS1522+, DS1821+, DS2422+) = no iGPU on chassis. Software-only or move Plex to separate hardware.

Decision tree

Decision tree

If: Need 5+ simultaneous 4K HDR tone-mapped streams.

Then: Intel iGPU isn't enough; need a dGPU.

Action: Intel Arc A310 (~$110) for ~5 streams or A380 (~$130) for 8-12 streams. Both AV1 enc + dec.

If: Need NVENC unlimited sessions legally (no nvidia-patch).

Then: Quadro Pro / RTX A-series have no session cap.

Action: Quadro T400 (~$140) for 3-4 4K; T1000 (~$300) for 4-6; RTX A2000 (75W, ~$400) for 6-8 4K HDR.

If: Running Synology and need HW transcoding.

Then: Only specific models have iGPU. DS923+ doesn't (AMD Ryzen).

Action: Use DS920+, DS720+, DS1520+, DS220+, DS420+, or DS918+. If on DS923+, put Plex on a separate mini-PC.

If: Source files are 4K HDR Dolby Vision and clients can't direct-play.

Then: HDR tone-mapping is the bottleneck; doubles encoder load.

Action: Pre-transcode the library to HEVC 10-bit (no tone-mapping needed for HEVC clients), or limit remote quality to 4K SDR.

If: Software transcoding on UHD 770 / N100 is sufficient.

Then: iGPU handles current load; no upgrade needed.

Action: Verify with `intel_gpu_top` during peak load — if it's not pegged, you have headroom.

Evidence

Evidence table

SymptomEvidence to collectLikely layerNext action
Plex Dashboard active session shows no `(hw)` annotation.Plex Web > Now Playing > active session row > video transcode line.Software-transcoding despite hardware that should support it.Check Plex Pass active + /dev/dri pass-through + tick Settings > Transcoder HW options.
Jellyfin ffmpeg log shows `Failed to initialise VAAPI connection: -1`.Jellyfin dashboard > Logs > transcode log.Render-group GID mismatch or driver loading failed.Match container group_add to host render group GID; verify with vainfo inside container.
`intel_gpu_top` shows 0% utilization during transcode.Host shell during active transcode.Software fallback — container isn't using the GPU.Verify /dev/dri is in container; check Plex Pass; check Jellyfin codec selector.
NAS CPU pegged at 80-100% during a single 4K transcode.Top / htop / DSM Resource Monitor.Software-transcoding (which is CPU-bound) instead of hardware-transcoding.Apply the misconfiguration triage from /fix/plex-buffering-on-nas.
Synology Container Manager project for Jellyfin shows /dev/dri but transcoding still software.Inside container: `ls -la /dev/dri/` shows renderD128.videodriver group GID inside container doesn't match DSM host's.SSH to NAS: `cat /etc/group | grep dri` for the DSM videodriver GID. Set group_add in Container Manager project to match.
Reference

Commands and settings paths

Verify Plex Pass active on server-owning account

plex.tv/account; or in Plex Web > top-right user menu > Account

Where: From a browser logged into the Plex account that owns the server.

Expected: Shows active Plex Pass status with renewal date or 'Lifetime'.

Failure means: Without an active Pass, HW transcoding is impossible regardless of hardware.

Safe next step: Activate Pass on the correct account (Plex servers only honor the server-owning account's Pass).

List GPU devices inside container

`docker exec <plex_container> ls -la /dev/dri/` (Intel) or `docker exec <plex_container> nvidia-smi` (NVIDIA)

Where: On the NAS / Linux host running the container.

Expected: Intel: shows `card0` + `renderD128` with correct ownership; NVIDIA: shows GPU and driver version inside container.

Failure means: Empty /dev/dri or missing nvidia-smi = device pass-through is not configured.

Safe next step: Add `devices: ['/dev/dri:/dev/dri']` (Intel) or NVIDIA runtime + GPU env vars (NVIDIA) to compose.

Check render-group GID match

On host: `getent group render | cut -d: -f3`. In compose: `group_add: ['<that-GID>']`.

Where: On NAS / Linux host + compose YAML.

Expected: GIDs match.

Failure means: Mismatch = container can read /dev/dri/renderD128 metadata but can't actually open the device.

Safe next step: Update compose; restart container; re-test in Jellyfin/Plex.

Verify intra-container VA driver

`docker exec <jellyfin> vainfo`

Where: On the NAS / Linux host.

Expected: Output shows iHD driver (Gen 9+) or i965 driver (Gen 8 and older), and lists supported codecs.

Failure means: If `vainfo` errors with 'No VA display found', driver isn't loading.

Safe next step: Switch to official jellyfin/jellyfin image (ships iHD); or `apt install intel-media-va-driver-non-free` + `LIBVA_DRIVER_NAME=iHD` env var in custom images.

Watch GPU utilization during transcode

Linux: `intel_gpu_top` (Intel) or `nvidia-smi -l 1` (NVIDIA)

Where: On the NAS / Linux host during an active transcode.

Expected: Intel: utilization rises to 30-90% during 1080p, can hit 100% on 4K HDR. NVIDIA: Encoder column shows non-zero.

Failure means: Flat 0% during transcode = container is using CPU/software, not hardware.

Safe next step: Verify all the pre-conditions (Plex Pass, /dev/dri, GID, driver); restart container after fixing.

Hardware boundary

Hardware and platform boundary

Change only when

  • Upgrade from iGPU to dGPU only when you need 5+ simultaneous 4K HDR tone-mapped streams or AV1 encode. Intel Arc A310 ($110) covers most home households; A380 ($130) covers extended-family scale.

Evidence that matters

  • AV1 encode support (Arc + Ada); session cap (Quadro Pro / RTX A-series have none, consumer NVENC needs patching); VRAM (4GB caps at ~5 concurrent 4K HDR, 6GB at ~10); media engine generation (UHD 770 > UHD 630 by 2x in stream count).

Evidence that does not matter

  • Total GPU compute power (FP32 TFLOPs) doesn't matter for transcoding; only the media engine does. A 4090 isn't meaningfully better than an A380 for Plex/Jellyfin transcoding.

Avoid

  • Don't buy a GeForce gaming GPU for a headless transcoding server and apply nvidia-patch — Quadro Pro is the legally clean path. Don't buy a no-iGPU Synology (DS923+) and expect HW transcoding — there's no path on that chassis.

Last reviewed

2026-05-18 · Reviewed by HomeTechOps. Reviewed against Plex's official hardware-accelerated streaming docs, Jellyfin's Intel HWA / NVIDIA HWA / Apple VideoToolbox documentation, NAS Compares' Synology iGPU compatibility analysis, and community benchmark threads from Unraid forums, r/PleX, r/jellyfin, and Lawrence Systems on Quadro stream counts. Plex Pass commerce details from Plex's April 2025 announcement and 9to5mac / Macrumors coverage.

Source-backed checks

HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.