Absolute newbie here (1 month of using proxmox) and this is my first post to proxmox forum as well.
I've been trying to get hardware acceleration up and running for days and seem to have made progress so thought I would add my two cents here. I have spent days going in circles with chatGPT on this one.
Using a GMKTEC G3 Plus (N150)
Created a virtual machine:
and installed ubuntu server (Ubuntu 25.10 (GNU/Linux 6.17.0-5-generic x86_64)) on my proxmox as a VM.
Step 1: Confirm Your GPU and Host Setup
On your Proxmox host, run:
lspci | grep -i vga
you should see something like:
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
Check the kernel module:
lsmod | grep i915
and the device nodes:
ls -l /dev/dri
You should see /dev/dri/card0 and /dev/dri/renderD128.
Step 2: Enable IOMMU on the Host
Edit your GRUB configuration:
nano /etc/default/grub
Find the line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
modify it to
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
Step 3: Verify IOMMU
After reboot, confirm it’s enabled:
dmesg | grep -e DMAR -e IOMMU
You should see lines like:
DMAR: IOMMU enabled
Step 4: Add GPU to the VM
In the Proxmox Web UI:
Select your Ubuntu VM.
Go to Hardware → Add → PCI Device.
Choose your GPU (Intel Corporation Alder Lake-N ...).
Tick all:
All Functions
Primary GPU (optional)
ROM-Bar (usually fine)\
PCI-Express
Click Add, then Start the VM.

PCI Device now is present
Step 5: Check GPU Inside the VM
SSH into your
Ubuntu 25.10 VM, then run:
lspci | grep -i vga
You should see the Intel GPU listed.
ls /dev/dri
You should see card0 and renderD128.
Step 6: Install Intel Drivers and VAAPI Support
sudo apt update
sudo apt install -y intel-media-va-driver-non-free vainfo vdpauinfo
Step 7: Give your user permission to access the GPU
On VM run:
sudo usermod -aG video,render [B][YOURUSERNAME][/B]
e.g
sudo usermod -aG video,render joseph
then reboot the VM and check
groups
it should show render.
Step 8: I never got here before
After that, try:
vainfo --display drm --device /dev/dri/renderD128
Expect something like:
Step 9: Jellyfin Docker
I then used this as my docker-compose:
YAML:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
network_mode: bridge
# GPU passthrough
devices:
- /dev/dri:/dev/dri
# Match host's render GID (992)
group_add:
- "992"
# Run as your user (UID 1000)
user: "1000:1000"
volumes:
- /srv/jellyfin/config:/config
- /srv/jellyfin/cache:/cache
- /mnt/media:/media
environment:
- TZ=Asia/Kuala_Lumpur
- PUID=1000
- PGID=1000
- JELLYFIN_PublishedServerUrl=http://192.168.20.54 # change to your VM IP
ports:
- 8096:8096
- 8920:8920
I can't seem to get intel_gpu_top working which chatGPT says is normal for passed through devices like this?
I get this in Jellyfin playing a 4k video in browser from main pc
and I get this in htop

With tone mapping enabled.
This is the farthest I've got in the past week I've been trying to do this. Previously I always got stuck at this section 8.
Is anyone able to confirm that this means hardware transcoding is working?
I'm surprised it is running at around 40% cpu but maybe I was expecting too much?
Hope this is helpful to anyone else in a similar position.