Another Intel Alder Lake igpu passthrough post (Plex)

stephanb

New Member
Oct 15, 2024
2
0
1
I followed so many guides and websites it would be futile to list them here. This is where I'm at:

I configured grub with GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
I blacklisted the i915 driver on the pve host.
I configured the VM with the raw igpu PCI device
I see the PCI device inside the VM (lspci)
I installed the intel-media-va-driver-non-free driver on the VM

Still can't get Plex transcoding to recognize it. When I run vainfo, I get this:
Code:
$ vainfo
Trying display: wayland
Trying display: x11
error: can't connect to X server!
error: failed to initialize display

Any ideas what I'm missing on the pve or the vm?
I'm trying to build this out on this little thing: https://www.amazon.com/dp/B0D5M4X4FS
 
Last edited:
I followed so many guides and websites it would be futile to list them here. This is where I'm at:

I configured grub with GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
I blacklisted the i915 driver on the pve host.
I configured the VM with the raw igpu PCI device
I see the PCI device inside the VM (lspci)
I installed the intel-media-va-driver-non-free driver on the VM

Still can't get Plex transcoding to recognize it. When I run vainfo, I get this:
Code:
$ vainfo
Trying display: wayland
Trying display: x11
error: can't connect to X server!
error: failed to initialize display

Any ideas what I'm missing on the pve or the vm?
I'm trying to build this out on this little thing: https://www.amazon.com/dp/B0D5M4X4FS
I'm using these guides which work flawlessly. Derek Seaman's Guide. And for the containers, like Plex, I use Jim's Garage - LXC GPU passthrough. I have Plex, Homebridge, Scrypted and 2 Windows 11 workstations using iGPU passthrough on my Alder Lake Proxmox servers.

Regards Marc
 
Last edited:
  • Like
Reactions: stephanb
I'm using these guides which work flawlessly. Derek Seaman's Guide. And for the containers, like Plex, I use Jim's Garage - LXC GPU passthrough. I have Plex, Homebridge, Scrypted and 2 Windows 11 workstations using iGPU passthrough on my Alder Lake Proxmox servers.

Regards Marc
Thank you. I finally got it to work, but I have tried so many things that I lost what actually fixed it. I'll scrap and rebuild, and try this.
 
Hello - I am trying to pass through my alder lake igpu. I am wanting to do this to utilize it with Immich on ubuntu 25 in an LXC contianer. I was trying to follow Jim's garage example, HOWEVER... I have already worked to pass thru an SMB share and as such I have already done some group mapping. When I try both it breaks the lxc. I know i just need to map both device groups logically but as a newb I am not processing well enough to get it done right. Here is what is IN my LXC config:

Code:
arch: amd64
cores: 6
dev0: /dev/dri/renderD128
features: nesting=1
hostname: Ubuntu-Docker
memory: 4096
mp0: /mnt/pve/Stack-Immich,mp=/mnt/Immich
nameserver: 192.168.50.254
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.50.1,hwaddr=BC:24:11:BD:2C:0>
onboot: 1
ostype: ubuntu
rootfs: local-zfs:subvol-102-disk-0,size=120G
searchdomain: 192.168.50.252
swap: 512
unprivileged: 1
lxc.idmap: u 0 100000 1005
lxc.idmap: g 0 100000 1005
lxc.idmap: u 1005 1005 1
lxc.idmap: g 1005 1005 1
lxc.idmap: u 1006 101006 64530
lxc.idmap: g 1006 101006 64530

I use 1005 to pass through the SMB. (used this guide https://pve.proxmox.com/wiki/Unprivileged_LXC_containers along with some tips from https://forum.proxmox.com/threads/l...-write-mapping-but-they-worked-before.142650/ to get the SMB share working).

Jim's garage (https://www.youtube.com/watch?v=0ZDr5h52OOE , https://github.com/JamesTurland/JimsGarage/tree/main/LXC/Jellyfin ) guides me to pass thru video 44 and render 104 (which I also confirmed) with the following:


Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 44
lxc.idmap: g 44 44 1
lxc.idmap: g 45 100045 62
lxc.idmap: g 107 104 1
lxc.idmap: g 108 100108 65428


In combination these break the LXC from starting. I know there is a way to make these idmaps work together but I'm just not experienced enough to do it on my own. Anyone offer a little help? I will try to learn from it and not ask silly simpleton questions such as this in the future.

Thanks in advance!
 
Last edited:
Hello - I am trying to pass through my alder lake igpu. I am wanting to do this to utilize it with Immich on ubuntu 25 in an LXC contianer. I was trying to follow Jim's garage example, HOWEVER... I have already worked to pass thru an SMB share and as such I have already done some group mapping. When I try both it breaks the lxc. I know i just need to map both device groups logically but as a newb I am not processing well enough to get it done right. Here is what is IN my LXC config:

Code:
arch: amd64
cores: 6
dev0: /dev/dri/renderD128
features: nesting=1
hostname: Ubuntu-Docker
memory: 4096
mp0: /mnt/pve/Stack-Immich,mp=/mnt/Immich
nameserver: 192.168.50.254
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.50.1,hwaddr=BC:24:11:BD:2C:0>
onboot: 1
ostype: ubuntu
rootfs: local-zfs:subvol-102-disk-0,size=120G
searchdomain: 192.168.50.252
swap: 512
unprivileged: 1
lxc.idmap: u 0 100000 1005
lxc.idmap: g 0 100000 1005
lxc.idmap: u 1005 1005 1
lxc.idmap: g 1005 1005 1
lxc.idmap: u 1006 101006 64530
lxc.idmap: g 1006 101006 64530

I use 1005 to pass through the SMB. (used this guide https://pve.proxmox.com/wiki/Unprivileged_LXC_containers along with some tips from https://forum.proxmox.com/threads/l...-write-mapping-but-they-worked-before.142650/ to get the SMB share working).

Jim's garage (https://www.youtube.com/watch?v=0ZDr5h52OOE , https://github.com/JamesTurland/JimsGarage/tree/main/LXC/Jellyfin ) guides me to pass thru video 44 and render 104 (which I also confirmed) with the following:


Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 44
lxc.idmap: g 44 44 1
lxc.idmap: g 45 100045 62
lxc.idmap: g 107 104 1
lxc.idmap: g 108 100108 65428


In combination these break the LXC from starting. I know there is a way to make these idmaps work together but I'm just not experienced enough to do it on my own. Anyone offer a little help? I will try to learn from it and not ask silly simpleton questions such as this in the future.

Thanks in advance!
You can't use renderD128 as that is for the host server. if you're passing through the iGPU correctly you can use renderD129 up to renderD135

Using this command you should see each iGPU: ls -l /dev/dri

total 0
drwxr-xr-x 2 root root 360 May 26 10:03 by-path
crw-rw---- 1 root video 226, 0 May 26 10:03 card0
crw-rw---- 1 root video 226, 1 May 26 10:03 card1
crw-rw---- 1 root video 226, 2 May 26 10:03 card2
crw-rw---- 1 root video 226, 3 May 26 10:03 card3
crw-rw---- 1 root video 226, 4 May 26 10:03 card4
crw-rw---- 1 root video 226, 5 May 26 10:03 card5
crw-rw---- 1 root video 226, 6 May 26 10:03 card6
crw-rw---- 1 root video 226, 7 May 26 10:03 card7
crw-rw-rw- 1 root render 226, 128 May 26 10:03 renderD128
crw-rw-rw- 1 root render 226, 129 May 26 10:03 renderD129
crw-rw-rw- 1 root render 226, 130 May 26 10:03 renderD130
crw-rw-rw- 1 root render 226, 131 May 26 10:03 renderD131
crw-rw-rw- 1 root render 226, 132 May 26 10:03 renderD132
crw-rw-rw- 1 root render 226, 133 May 26 10:03 renderD133
crw-rw-rw- 1 root render 226, 134 May 26 10:03 renderD134
crw-rw-rw- 1 root render 226, 135 May 26 10:03 renderD135

You should then be able to use this code renderD130. The '130' needs to match on the second and third lines.

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:130 rwm
lxc.mount.entry: /dev/dri/renderD130 dev/dri/renderD130 none bind,optional,create=file
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 44
lxc.idmap: g 44 44 1
lxc.idmap: g 45 100045 62
lxc.idmap: g 107 104 1
lxc.idmap: g 108 100108 65428

Regards Marc