Jun 4 (edited) • Virtualization
Aoostar WTR Max 8845 part three enable IGPU for Plex/Jellyfin
Step-by-Step Guide: AMD Radeon 780M iGPU Passthrough to Unprivileged LXC (Proxmox 9 / Kernel 7.0.6-2)
Phase 1: BIOS Configuration (AOOSTAR WTR Max)Before Proxmox can interact with the hardware, the motherboard firmware must be configured to allocate sufficient resources to the iGPU.Boot into BIOS: Power on your AOOSTAR device and repeatedly tap the Delete or F2 key.Enable Virtualization:Navigate to Advanced > CPU Configuration.Ensure SVM Mode (Secure Virtual Machine / AMD-V) is set to Enabled.Configure iGPU Memory (UMA Frame Buffer):Navigate to Advanced > AMD CBS > NBIO Common Options > GFX Configuration.Set iGPU Configuration to UMA_SPECIFIED.Set UMA Frame Buffer Size to 4G (Highly recommended for 4K HDR transcoding and VPP tone mapping headroom on RDNA3).Save and Exit: Press F10, confirm saving changes, and reboot into Proxmox.
Phase 2: Proxmox VE 9 Host ConfigurationProxmox 9 utilizes modern kernel architectures where firmware handling is streamlined. Do not install external Debian graphics packages to avoid system conflicts.SSH into your Proxmox Host (or use the Proxmox Node Shell).Update Proxmox Firmware: Ensure the host has the latest official firmware packages which include native support for AMD RDNA3 chips:bash apt update && apt install -y pve-firmware
Verify iGPU Hardware Detection: Run the following command to verify the system sees the graphics controller:bash lspci -nn | grep -i vga
Expect an output containing: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 (rev c1) or similar.Identify GID (Group ID) for Video and Render: Check the device files and identify their host group ownership IDs:bash ls -l /dev/dri
Take note of whether your system uses card0 or card1. Next, get the exact numeric group IDs:bash stat -c "%g" /dev/dri/card*
stat -c "%g" /dev/dri/renderD128
Standard Proxmox VE 9 hosts usually output 44 for video and 993 for render. (We will use 44 and 993 for the rest of this guide; substitute yours if they differ).
Phase 3: LXC Container Configuration & GID Mapping because the container is unprivileged, Proxmox 9 strictly blocks hardware access via cgroups by default. You must explicitly allow the hardware pass-through and configure unprivileged user/group ID mapping.Shutdown your Plex/Jellyfin LXC container if it is currently running.Authorize ID Leases on the Host: Allow the host root user to map the hardware groups into an unprivileged namespace by running:
bash echo "root:44:1" >> /etc/subgid
echo "root:993:1" >> /etc/subgid
Open the Container Configuration File: On the Proxmox host terminal, edit the .conf file for your container (replace 100 with your actual LXC Container ID):bash nano /etc/pve/lxc/100.conf
Append Passthrough Directives & ID Maps: Add the following lines to the very bottom of the file (Adjust card1 to card0 if required based on your Phase 2 output):
# iGPU Passthrough Configuration
lxc.cgroup2.device.allow: c 226:1 rwm
lxc.cgroup2.device.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card1 dev/dri/card1 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
# Unprivileged GID Mapping (Essential for Proxmox 9)
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 44
lxc.idmap: g 44 44 1
lxc.idmap: g 45 100045 948
lxc.idmap: g 993 993 1
lxc.idmap: g 994 100994 64542
Save and Exit: Press Ctrl+O, Enter to save, and Ctrl+X to exit.
Phase 4: Container Permissions & Media Server SetupConfigure the internal environment inside the container so Plex or Jellyfin can safely interact with the mapped hardware nodes.Start the LXC Container and open its console.Install GPU Utilities:bash apt update && apt install -y va-driver-all vainfo radeontop nvtop
Fix Group Permissions: Add the media server system user to the video and render groups
bash# For Jellyfin:
usermod -aG video,render jellyfin
bash# For Plex:
usermod -aG video,render plex
Verify Passthrough within Container: Run vainfo to ensure the driver initializes correctly inside the environment:bash vainfo
You should see a clean list of supported entry points (such as VAEntrypointEncSlice and VAEntrypointDecoderEntry). If it prints permission errors, reboot the container and double-check your Phase 3 GID mapping.
Phase 5: Media Server Dashboard ActivationFor Jellyfin:Note: Ensure you are using the official Jellyfin repository to install jellyfin-ffmpeg6 or newer. Standard Debian/Ubuntu repository ffmpeg lacks proper RDNA3 AV1 and HDR-to-SDR tonemapping implementations.Open the Jellyfin Web UI.Navigate to Dashboard > Playback.Under Hardware Acceleration, select Video Acceleration API (VAAPI).Set VAAPI Device to: /dev/dri/renderD128.Check the boxes for codecs supported by the Radeon 780M (H264, HEVC, MPEG2, VC1, VP9, AV1).Enable VPP Tone mapping to transcode HDR content down to SDR efficiently using the GPU hardware.Click Save at the bottom.For Plex (Requires Plex Pass):Open the Plex Web UI.Navigate to Settings > Transcoder.Check the box for Hardware acceleration when available.Check Hardware-accelerated video encoding.Select the Auto / Advanced Micro Devices hardware transcoder device from the drop-down menu.Click Save Changes.
Phase 6: Monitoring and ValidationNote: Due to strict security inside unprivileged LXC containers under Kernel 7.02, nvtop inside the container may lack kernel permissions to read GPU loads. It is highly recommended to monitor stats directly from the host.Open the Proxmox Host terminal shell.Launch the performance monitor:bash nvtop.
Open your video client (Jellyfin/Plex app), play a high-bitrate 4K movie, and manually lower the quality setting in the player menu to force a transcoding process.Watch the nvtop graph on your host terminal. The GPU % will jump upwards, confirming that your AMD Radeon 780M is actively accelerating the stream!
5
1 comment
Ad de Jonge
5
Aoostar WTR Max 8845 part three enable IGPU for Plex/Jellyfin
Home Lab Explorers
skool.com/homelabexplorers
Build, break, and master home labs and the technologies behind them! Dive into self-hosting, Docker, Kubernetes, DevOps, virtualization, and beyond.
Leaderboard (30-day)
Powered by