If you run Plex on Unraid and your CPU spikes to 100 percent every time someone starts a stream, you are probably transcoding on the CPU. Learning how to pass an iGPU to a Docker container in Unraid for Plex transcoding fixes that problem almost overnight. Your Intel processor’s integrated graphics can handle video encoding through a feature called Quick Sync, which offloads the work from your CPU cores.
I have set up Intel iGPU passthrough on multiple Unraid builds over the years, from a lowly Celeron NUC to a 12th Gen i5 server juggling five simultaneous 4K transcodes. The process is the same once you understand the moving parts. This guide walks through every step from BIOS to verification, including the common mistakes that trip people up.
By the end of this article, you will know exactly which files to edit, which devices to map, and how to confirm your iGPU is doing the heavy lifting instead of your CPU.
Table of Contents
Why Use iGPU Transcoding for Plex?
Plex uses transcoding when a client device cannot play the original file format directly. This happens when bitrate exceeds available bandwidth, when the codec is incompatible, or when container formats do not match what the client supports. Without transcoding, the stream simply fails or buffers endlessly.
When transcoding happens on your CPU, every transcode session eats one or more full cores. Two or three simultaneous streams can bring a capable processor to its knees. Hardware transcoding through Intel Quick Sync Video (QSV) handles the same workload on the integrated GPU, cutting CPU usage by up to 80 percent.
The difference is dramatic. I have seen an i5-12400 go from struggling with a single 4K HDR transcode at 100 percent CPU to handling four simultaneous transcodes at under 15 percent CPU utilization. That is the power of passing the iGPU to your Plex Docker container.
Prerequisites: What You Need Before Starting
Before touching any settings, confirm you have the right hardware and software in place. Skipping this step is the number one reason people fail to get hardware transcoding working.
Here is what you need:
An Intel CPU with integrated graphics (6th generation Skylake or newer recommended). Earlier generations have limited codec support and may not handle HEVC or 10-bit content. If you have an Intel “F” SKU processor (like the i5-12400F), it has no iGPU and this guide will not work.
A compatible motherboard with the iGPU enabled in BIOS. Most consumer boards work out of the box, but some server boards disable the iGPU by default.
An active Plex Pass subscription. Hardware transcoding is a Plex Pass feature. Without it, Plex uses CPU transcoding regardless of your iGPU setup. There is no workaround for this requirement.
Unraid 6.9 or newer. The Docker management interface and plugin ecosystem have improved significantly in recent versions. Older versions may require manual configuration that this guide does not cover.
The official Plex Media Server Docker container. Community containers like linuxserver.io’s Plex image also work, but the device mapping steps may differ slightly.
If you have an AMD APU or a dedicated Nvidia GPU, the general concepts apply but the specific drivers and device paths differ. This guide focuses on Intel iGPU setups, which are the most common and cost-effective choice for Plex transcoding.
Intel Quick Sync Compatibility by CPU Generation
Not all Intel iGPUs are equal when it comes to transcoding. Each generation added new codec support and encoding quality improvements. Knowing where your CPU falls helps you understand what media it can and cannot handle.
4th Gen (Haswell) and older: Limited to H.264 encoding and MPEG-2. No HEVC support. Not recommended for modern media libraries.
5th Gen (Broadwell): Adds basic HEVC decode. Still limited encoding capabilities.
6th Gen (Skylake): The minimum viable generation. Full H.264 encode and decode, plus HEVC decode. Works for most 1080p libraries.
7th-8th Gen (Kaby Lake / Coffee Lake): Adds HEVC encode and HDR support. Good for 4K content.
9th-10th Gen: Improved encoding quality and AV1 decode (10th gen only). Solid choice for mixed libraries.
11th Gen (Tiger Lake) and newer: Full AV1 support, excellent HDR tonemapping, and the best encoding quality. Ideal for demanding multi-stream setups.
12th-14th Gen (Alder Lake and beyond): Multiple encode engines for handling several streams simultaneously. These are the current sweet spot for new builds.
For 4K HDR content with tonemapping, I recommend 7th generation or newer. HDR tonemapping on older generations either does not work or produces poor results. If your library is mostly 1080p H.264, even a 6th generation CPU will serve you well.
How to Pass an iGPU to a Docker Container in Unraid for Plex Transcoding
This is the core process. Follow each step in order, and do not skip the verification checks along the way. Most failures come from missing a single step, not from a complex technical problem.
Step 1: Enable the iGPU in BIOS
Restart your server and enter the BIOS configuration. The exact location varies by manufacturer, but look for settings under Advanced, Chipset, or System Agent (SA) Configuration.
Find the option labeled “Internal Graphics,” “iGPU,” “Integrated Graphics,” or “Onboard Graphics” and set it to Enabled. On some boards, this option only appears when a CPU with integrated graphics is installed. If you cannot find it, your CPU may be an “F” variant without an iGPU.
Save changes and reboot into Unraid. If the iGPU was previously disabled, you may need to move your display cable to the motherboard’s video output instead of a dedicated GPU.
Step 2: Install the Intel-GPU-TOP Plugin
The Intel-GPU-TOP plugin, developed by community member ich777, installs the necessary drivers and the intel-gpu-top monitoring tool on your Unraid host. Without it, your server has no way to talk to the iGPU.
In the Unraid web interface, go to the Plugins tab. Click “Install Plugin” and paste this URL into the field:
https://raw.githubusercontent.com/ich777/unraid-intel-gpu-top/master/intel-gpu-top.plg
Click Install and wait for the process to complete. The plugin downloads and compiles the i915 kernel module and related tools. This can take a few minutes on slower systems. Once finished, you should see “The plugin is currently installed” with a green indicator.
Step 3: Verify /dev/dri Is Present
After installing the plugin, open the Unraid terminal by clicking the terminal icon in the top right of the Unraid web interface. Type the following command:
ls -la /dev/dri
You should see at least two entries: card0 and renderD128. The renderD128 device is what Plex actually uses for transcoding. If you do not see this directory, the iGPU drivers are not loaded.
If /dev/dri is missing, run modprobe i915 to manually load the kernel module. Then check again. If it still does not appear, revisit your BIOS settings and confirm the iGPU is enabled.
You also need to set proper permissions so the Docker container can access these devices. Run:
chmod -R 777 /dev/dri
This grants full read and write access to the iGPU devices. Some security-conscious users prefer more restrictive permissions, but 777 is the standard for Unraid Docker setups and is widely used in the community without issues.
Step 4: Configure Your Plex Docker Container
Now you need to pass the iGPU device into your Plex Docker container. This is where the actual passthrough happens.
Go to the Docker tab in Unraid. Stop your Plex container if it is running. Click the Plex container’s icon and select Edit.
Scroll down to the section where you see “Extra Parameters,” “Devices,” or a toggle to switch to advanced view. Enable advanced view if you do not see the devices option.
Find the field labeled “Devices” or add a new device path. Enter /dev/dri as the path. This maps the entire directory, which includes both card0 and renderD128. Some guides recommend mapping individual devices, but mapping the directory is simpler and works identically.
If your container only accepts individual device entries, add both:
/dev/dri/card0/dev/dri/renderD128
Click Apply to save and then click Update to recreate the container with the new device mapping. Plex will restart automatically with access to the iGPU.
Step 5: Enable Hardware Acceleration in Plex Settings
Open your Plex web interface and go to Settings, then click on your server name and select Transcoder from the left sidebar.
Check the box for “Use hardware-accelerated video encoding (when available).” This is the master switch for hardware transcoding. Without it, Plex ignores your iGPU entirely.
Below that, check “Use hardware-accelerated video decoding” as well. This offloads the decode portion of the transcode pipeline to the iGPU, not just the encode. Most setups benefit from having both enabled.
If you are running Plex on a network share or your media is stored on an Unraid share, also enable “Transcode to RAM” if you have sufficient memory. This speeds up transcoding significantly by keeping temporary files in RAM instead of writing to disk. I use a tmpfs mount of 8 GB on my server with 32 GB of RAM, and it handles even heavy transcode sessions without filling up.
Scroll down and click Save Changes. Restart your Plex Docker container one more time to ensure the settings take effect cleanly.
Step 6: Set Permissions and Persist Configuration
One of the most common problems reported on the Unraid forums is that hardware transcoding works initially but breaks after a reboot. This happens because the permission changes you made in Step 3 do not survive a restart.
To make permissions permanent, you need to edit the “go” file on your Unraid boot USB drive. Open the Unraid terminal and type:
nano /boot/config/go
Add these lines at the end of the file, after the existing commands:
modprobe i915chmod -R 777 /dev/dri
Save the file (Ctrl+O, Enter, Ctrl+X in nano). Now every time your server boots, it loads the i915 module and sets the correct permissions before any Docker containers start. This single step eliminates the majority of “it worked yesterday but not today” reports.
How to Verify Hardware Transcoding Is Working
Setting everything up is only half the battle. You need to confirm the iGPU is actually handling transcodes. There is a reliable way to check this.
First, start playing a movie or show that requires transcoding. Force a transcode by selecting a quality lower than the original file. In the Plex web player, click the quality settings during playback and choose something like “2 Mbps 720p” to guarantee transcoding kicks in.
Open the Plex Dashboard. You will see the active stream with a label showing “Transcoding” or “Direct Play.” If it says “Transcoding (HW),” hardware transcoding is active. The “(HW)” suffix is your confirmation that the iGPU is doing the work.
For a more technical check, install the GPU Statistics plugin from the Unraid Community Applications tab. This plugin adds a real-time widget to your Unraid dashboard that shows iGPU utilization. Start a transcode and watch the graph. If you see usage spike on the iGPU widget, hardware transcoding is confirmed.
Alternatively, open the Unraid terminal and run intel-gpu-top. This command-line tool shows live GPU utilization. Start a transcode and you should see the “Video Encode” and “Video Decode” rows light up with activity.
Configuring Multiple GPUs for Plex Transcoding
If you have both an Intel iGPU and a dedicated GPU (like an Nvidia card), Plex may try to use the wrong one. This is a common frustration in the Unraid community. The fix involves telling Plex exactly which device to use through its Preferences.xml file.
Stop your Plex container. Navigate to your Plex appdata folder, typically located at /mnt/user/appdata/plexmediaserver/Library/Application Support/Plex Media Server/. Open Preferences.xml in a text editor.
Add or modify the following line inside the main preferences tag:
<setting name="HardwareDevicePath" value="/dev/dri/renderD128" />
This tells Plex to use the Intel iGPU specifically. If you want Plex to use a dedicated GPU instead, point the value to the appropriate render device for that card. Save the file and restart your Plex container.
On systems with both Intel and Nvidia GPUs, some users report driver conflicts. The Nvidia Unraid plugin and the Intel iGPU drivers can coexist, but you need to make sure your Docker containers only map the device they are supposed to use. Map only /dev/dri for Intel containers and only the Nvidia device entries for GPU containers.
For multiple Intel GPUs (uncommon but possible with add-in cards), specify the exact render device number. Run ls /dev/dri/ to see all available devices and pick the one you want Plex to use.
Troubleshooting: Common iGPU Passthrough Problems
Even with a careful setup, things can go wrong. Here are the most common issues I have encountered and helped others fix on the Unraid forums.
Plex Still Uses CPU Instead of iGPU
Check three things in order. First, confirm you have an active Plex Pass. Hardware transcoding is a paid feature. Second, verify the “Use hardware-accelerated video encoding” box is checked in Plex Transcoder settings. Third, confirm the Docker container has /dev/dri mapped as a device.
If all three check out, restart the Plex container. Sometimes settings changes do not apply until the container fully restarts.
/dev/dri Disappears After Reboot
This means the i915 module is not loading at boot. Verify your /boot/config/go file contains the modprobe i915 line from Step 6. If it does, the module may be failing to load because of a kernel update. Reinstall the Intel-GPU-TOP plugin to rebuild the module for your current kernel.
On some NUCs and mini PCs, particularly the Celeron N5095, you may need to run rmmod i915 followed by modprobe i915 to force a reload. This is a known issue with specific hardware combinations.
Hardware Transcoding Breaks After Moving Appdata
If you moved your appdata folder to a new cache drive or pool, your Plex Docker container lost its device mapping. The fix is simple: stop the Plex container, edit it, confirm /dev/dri is still in the devices list, and recreate the container. Moving appdata does not always carry over device mappings correctly.
Older CPU Shows “Codec Not Supported” Errors
If you are running a 4th or 5th generation Intel CPU, it lacks HEVC encoding support. Plex will fall back to CPU transcoding for HEVC content, which defeats the purpose. Check the compatibility chart above to understand your CPU’s limitations. The only real fix is upgrading to a 6th generation or newer processor.
Some older Xeon processors with integrated graphics, like the E3-1265L v3, support only MPEG-2 hardware encoding. They are not viable for modern media libraries.
Nvidia Drivers Conflict With Intel iGPU
If you installed the Nvidia plugin for Unraid (to use a dedicated GPU in other containers), it can sometimes interfere with the iGPU drivers. Make sure you are running a recent version of both plugins. If conflicts persist, only map /dev/dri to Intel-based containers and the Nvidia device paths to GPU-based containers. Never mix device mappings in a single container.
Frequently Asked Questions
How to make Plex use GPU for transcoding in Unraid?
Install the Intel-GPU-TOP plugin, add /dev/dri as a device mapping to your Plex Docker container, enable hardware-accelerated video encoding in Plex Transcoder settings, and restart the container. You need an active Plex Pass subscription for hardware transcoding to work.
Why isn’t Plex using my GPU for transcoding?
The most common causes are: missing Plex Pass subscription, the hardware acceleration checkbox not being enabled in Plex settings, the /dev/dri device not being mapped to the Docker container, or the iGPU being disabled in BIOS. Check each of these in order to isolate the problem.
Does a GPU help with transcoding?
Yes, significantly. An Intel iGPU with Quick Sync can reduce CPU usage by up to 80 percent during transcoding. It allows a single server to handle multiple simultaneous streams of 4K content that would otherwise overwhelm the CPU.
What is the best GPU for transcoding Plex content?
For most home servers, an Intel CPU with integrated graphics (12th generation or newer) is the best value for Plex transcoding. It handles multiple 4K HEVC streams simultaneously and requires no additional hardware. For heavier workloads, an Intel Arc A380 or a dedicated Nvidia GPU can supplement the iGPU.
Wrapping Up
Knowing how to pass an iGPU to a Docker container in Unraid for Plex transcoding transforms your media server from a struggling box into a capable streaming machine. The six-step process comes down to enabling the iGPU in BIOS, installing the Intel-GPU-TOP plugin, mapping /dev/dri to your Plex container, and flipping the hardware acceleration switch in Plex settings.
The two things that catch most people are forgetting to persist permissions in the go file and not verifying that hardware transcoding is actually active. Follow the verification steps, watch the GPU Statistics widget during a transcode, and you will know for certain everything is working.
Once your iGPU is handling the transcoding load, your CPU is free for other tasks like running Docker containers, VMs, or parity checks without bringing Plex to a halt. It is one of the highest-impact changes you can make to an Unraid Plex server.