Intel Rocket Lake (11th) Quicksync Passthrough

ortrango

Member
Oct 30, 2021
2
2
8
Has anyone managed to configure passing through an Intel Rocket Lake (11th gen) IGPU so that Quicksync/Hardware Transcoding is available for Plex?

I recently built a new home server and made the mode over to Proxmox and have been super impressed. However, after multiple attempts I still haven't been able to get Plex to use hardware transcoding.

My setup is as follows:
  • Proxmox 7.0-11
  • Ubuntu Server 21.10 VM running Plex on Docker
  • Intel i5-11500
I attempted to follow this guide but further research says that the 10th and 11th gen Intel CPU's no longer support GVT-g so these instructions are no longer valid.
 
  • Like
Reactions: thelonghop
I have just finished installing plex in a Proxmox container (not pass through in a WM) and Hardware Transcoding is working. I have a Core i5 11400 CPU. I spent considerable time trying and failing using various guides found using google. What I did wrong in the failing attempts was:

1. The Intel graphics was not enabled in the BIOS.
2. I installed plex on the container before setting up the graphics such that plex did not add itself to the correct user group.
Can you also provide the guide that you followed? I tried to do this once before with no success. Was reading on it today before coming across this thread and came across same info as OP stating GVT-g isn't supported.
 
Hi @thelonghop. I replied here with a long post yesterday explaining all the steps I did to make this work but then the forum though my post was spam and I got banned and my posts deleted! I spent more than an hour making the post so this is very unfortunate that the forum works like this.
 
  • Like
Reactions: okiedokie
Hi @thelonghop. I replied here with a long post yesterday explaining all the steps I did to make this work but then the forum though my post was spam and I got banned and my posts deleted! I spent more than an hour making the post so this is very unfortunate that the forum works like this.
Wow, that really sucks. Thanks for trying. Maybe type it out in a word processor and save it before trying it again? I don't know if there's a length restrictions to posts or what, but might need to break it up?
 
Here are the steps I did to enable Intel Quicksync/Hardware Transcoding and install Plex:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:
Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128
If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell until next step. Again, if you get "No such file or directory" or similar then something went wrong.

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
 
1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:
Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128
If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell until next step. Again, if you get "No such file or directory" or similar then something went wrong.

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
Thanks I’ll probably try to give this a shot tonight. I use Jellyfin but I expect steps 1-5 to be the same.

In step 4 you included lxc.cgroup2.devices.allow: c 29:0 rwm
but that wasn’t in your output from step 2. Where does that line come from or is it the same regardless of the rest?
 
Last edited:
Thanks I’ll probably try to give this a shot tonight. I use Jellyfin but I expect steps 1-5 to be the same.

In step 4 you included lxc.cgroup2.devices.allow: c 29:0 rwm
but that wasn’t in your output from step 2. Where does that line come from or is it the same regardless of the rest?
I probably don't need that line. I saw it in various other guides:
https://herold.space/proxmox-lxc-intel-quick-sync-for-plex/
https://blog.konpat.me/dev/2019/03/11/setting-up-lxc-for-intel-gpu-proxmox.html
 
I recently upgraded the HDDs on my Proxmox server and I needed to install Plex again so I followed my recipe above and it did not work. I had to do a couple of additional steps so here is my revised method:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:

Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128

If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a (privileged) container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file

change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell for the next steps. Again, if you get "No such file or directory" or similar then something went wrong.

5.5 Install the Intel drivers:
https://github.com/intel/compute-runtime/releases

5.6 Change the group and mode of /dev/dri:

Code:
/bin/chgrp video /dev/dri
/bin/chmod 755 /dev/dri
/bin/chmod 660 /dev/dri/*

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
 
Last edited:
Osaether thank you very much for posting these steps, I am using new build with Rocket Lake processor and though I was out of luck for hardware encoding!
I have followed all the steps except for installing the Intel drivers mentioned above.
I have the hardware encode checkboxes enabled in Plex but it's not using hardware when transoding.
I'm guessing I need to install these drivers.
Should the drivers be installed on the Proxmox host or in the (privileged) container?

Thanks!
 
Actually I take that back.. hw encoding seems to be working, except when you are playing an HDR encoded video and HDR tone mapping is enabled. Not sure if this is expected with Intel Quick Sync or if this should still be working?
 
You should install the Intel drivers in the container.
Thanks again!

I installed the intel drivers from the link above and I was still not seeing hw encoding in Plex (on 11th gen Rocket Lake with Iris Xe graphics) when transcoding HDR video with "Enable HDR tone mapping" enabled.
HW encoding was working fine without it enabled.

For anyone else coming across this, after reading the discussion at https://github.com/linuxserver/docker-plex/issues/297 I decided to downgrade the Intel drivers to this version: https://github.com/intel/compute-runtime/releases/tag/21.49.21786

After this downgrade HDR transcode with tone mapping is now using hw encoding! My cpu during a transcode went from 80% to basically nothing.
Not sure what needed in the downgraded driver package but it working for now.
 
  • Like
Reactions: godsavethequ33n
I recently upgraded the HDDs on my Proxmox server and I needed to install Plex again so I followed my recipe above and it did not work. I had to do a couple of additional steps so here is my revised method:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:

Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128

If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a (privileged) container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file

change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell for the next steps. Again, if you get "No such file or directory" or similar then something went wrong.

5.5 Install the Intel drivers:
https://github.com/intel/compute-runtime/releases

5.6 Change the group and mode of /dev/dri:

Code:
/bin/chgrp video /dev/dri
/bin/chmod 755 /dev/dri
/bin/chmod 660 /dev/dri/*

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
On Step 5.6 I am unable to run any of these commands with the shell saying "Operation not permitted". Running "ls -l /dev/dri" in the container outputs the same as in the pve shell but the 3 files/things listed are owned by "nobody" and part of "nogroup", whereas in the pve shell they are all owned by "root". Does my inability to run Step 5.6 commands relate to this?
 
I recently upgraded the HDDs on my Proxmox server and I needed to install Plex again so I followed my recipe above and it did not work. I had to do a couple of additional steps so here is my revised method:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:

Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128

If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a (privileged) container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file

change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell for the next steps. Again, if you get "No such file or directory" or similar then something went wrong.

5.5 Install the Intel drivers:
https://github.com/intel/compute-runtime/releases

5.6 Change the group and mode of /dev/dri:

Code:
/bin/chgrp video /dev/dri
/bin/chmod 755 /dev/dri
/bin/chmod 660 /dev/dri/*

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!

Awesome content! Helped me a lot!
I have one question. Is it possible to simultaneously enable Quick Sync Transcoding through the LXC as you presented and passthrough iGPU to a Windows VM? In other words, is it possible to achieve the aforementioned result without disabling IOMMU?
 
Last edited:
Awesome content! Helped me a lot!
I have one question. Is it possible to simultaneously enable Quick Sync Transcoding through the LXC as you presented and passthrough iGPU to a Windows VM? In other words, is it possible to achieve the aforementioned result without disabling IOMMU?
Why do you have to disable the IOMMU? This disables my PCI graphics card.
 
I recently upgraded the HDDs on my Proxmox server and I needed to install Plex again so I followed my recipe above and it did not work. I had to do a couple of additional steps so here is my revised method:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:

Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128

If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a (privileged) container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file

change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell for the next steps. Again, if you get "No such file or directory" or similar then something went wrong.

5.5 Install the Intel drivers:
https://github.com/intel/compute-runtime/releases

5.6 Change the group and mode of /dev/dri:

Code:
/bin/chgrp video /dev/dri
/bin/chmod 755 /dev/dri
/bin/chmod 660 /dev/dri/*

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
Follow this to a T and it worked flawlessly . Thanks
 
Here are the steps I did to enable Intel Quicksync/Hardware Transcoding and install Plex:

1. Restart your machine and enter BIOS. Enable intel integrated graphics and disable IOMMU. Save settings and exit BIOS (usually F10 key).

2. In ProxMox open a PVE shell and run "ls -l /dev/dri" at the command prompt. You should see something similar to this:
Code:
drwxr-xr-x 2 root root         80 Nov 15 18:23 by-path
crw-rw---- 1 root video  226,   0 Nov 15 18:23 card0
crw-rw---- 1 root render 226, 128 Nov 15 18:23 renderD128
If you get "No such file or directory" or similar, Intel graphics is not enabled correctly.

3. Create a container (right click pve and select Create CT). Use Ubuntu 20.04 standard as template. I used 8GB disk size and 2GB memory (can be changed later). Select DHCP (ipv4) in the network tab. Start the container and stop it again. Don't install plex yet.

4. Open a pve shell and edit the container config file "/etc/pve/lxc/100.conf" (replace 100 with the ID of your container). Add these lines to the bottom of the file:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
change 226 and 128 if needed so the numbers are the same as in the output of the "ls" command in 2.

5. Start the container and open a shell in it. Run "ls -l /dev/dri" and you should get a similar result as in 2. Stay in the shell until next step. Again, if you get "No such file or directory" or similar then something went wrong.

6. Add the plex repositories as described under "DEB-based distros (Ubuntu, etc.)" here:
https://support.plex.tv/articles/23...ing-for-supported-linux-server-distributions/

Install plex using this command "apt-get install plexmediaserver"
Verify that plex was added to the group of the graphics (in my case video and syslog):
cat /etc/group | grep plex

You are done!
I registered to thank you!!
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!