Ga naar inhoud

🏎️ Aoostar WTR Max Part 3: AMD Radeon 780M iGPU Passthrough

Dit projectverslag beschrijft de exacte, stapsgewijze realisatie om de geΓ―ntegreerde AMD Radeon 780M iGPU van de Ryzen 7 8845HS processor door te geven aan een onbevoorrechte (Unprivileged) LXC-container binnen Proxmox VE 9 (Kernel 7.0.6-2). Dit maakt hardware-geaccelereerde 4K HDR-transcoding en AV1-decoding mogelijk binnen Plex en Jellyfin, zonder belasting van de CPU.


πŸŽ›οΈ Fase 1: BIOS Configuratie (AOOSTAR WTR Max)

Voordat Proxmox met de grafische hardware kan communiceren, moet de firmware van de AOOSTAR mini-pc correct worden ingesteld om voldoende videogeheugen (VRAM) toe te wijzen aan de iGPU.

  1. Boot in de BIOS: Start de AOOSTAR op en tik herhaaldelijk op de Delete of F2 toets op je toetsenbord.
  2. Virtualisatie Activeren:
    • Navigeer naar: Advanced βž” CPU Configuration.
    • Zorg dat SVM Mode (Secure Virtual Machine / AMD-V) op Enabled staat.
  3. iGPU Geheugen Toewijzen (UMA Frame Buffer):
    • Navigeer naar: Advanced βž” AMD CBS βž” NBIO Common Options βž” GFFX Configuration.
    • Zet iGPU Configuration op UMA_SPECIFIED.
    • Zet UMA Frame Buffer Size op 4G. (Dit is de absolute aanbeveling voor 4K HDR-transcoding en voldoende headroom voor VPP-tonemapping op de RDNA3-architectuur).
  4. Opslaan en Afsluiten: Druk op F10, bevestig de wijzigingen en herstart het systeem richting Proxmox.

πŸ’» Fase 2: Proxmox VE 9 Host Configuratie

Proxmox 9 maakt gebruik van moderne kernel-architecturen waarbij de firmware-afhandeling gestroomlijnd is. Installeer geen externe Debian-grafische pakketten op de host om systeemconflicten te voorkomen. Open de SSH-terminal van je Proxmox-host.

1. Proxmox Firmware Updaten

Zorg dat de host beschikt over de allernieuwste firmware-pakketten met native ondersteuning voor AMD RDNA3-chips:

apt update && apt install -y pve-firmware

2. Hardware Detectie Controleren

Verifieer of de Proxmox-host de grafische controller fysiek herkent:

lspci -nn | grep -i vga
De output moet een regel bevatten zoals: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 (rev c1) of vergelijkbaar.

3. GID (Groeps-ID) voor Video en Render Achterhalen

Controleer de apparaatbestanden op de host en noteer de numerieke groeps-ID's:

ls -l /dev/dri
Bekijk goed of je systeem card0 of card1 gebruikt. Haal daarna de exacte numerieke ID's op met:
stat -c "%g" /dev/dri/card*
stat -c "%g" /dev/dri/renderD128
Standaard Proxmox VE 9 systemen geven meestal 44 (video) en 993 (render) terug. We gebruiken deze ID's in de rest van deze gids.


βš™οΈ Fase 3: LXC Container Configuratie & GID Mapping

Omdat de container onbevoorrecht (Unprivileged) is, blokkeert Proxmox 9 standaard elke hardware-toegang via cgroups. We moeten de passthrough expliciet toestaan en de gebruikersrechten (ID-mapping) tussen de host en de container rechttrekken.

  1. Stoppen: Zet de Plex- of Jellyfin LXC-container volledig uit.
  2. ID Leases Toestaan op de Host: Geef de root-gebruiker van de host toestemming om de hardwaregroepen door te mappen naar de container. Voer deze twee commando's uit op de Proxmox-host:
    echo "root:44:1" >> /etc/subgid
    echo "root:993:1" >> /etc/subgid
    
  3. Container Config Bestandsbeheer: Open het configuratiebestand van de container op de Proxmox-host (vervang 100 door jouw echte LXC-ID):
    nano /etc/pve/lxc/100.conf
    
  4. Passthrough & ID-Maps Toevoegen: Plak de volgende regels helemaal onderaan het bestand. (Pas card1 eventueel aan naar card0 op basis van je resultaten uit Fase 2):

# 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 (Essentieel voor 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
Sla het bestand op via Ctrl + O en sluit af met Ctrl + X.


πŸ§ͺ Fase 4: Rechten in de Container Inregelen

Nu starten we de LXC-container op en openen we de console binnen de container om de drivers en mediaserver-rechten te configureren.

1. Grafische Utilities Installeren

apt update && apt install -y va-driver-all vainfo radeontop nvtop

2. Mediaserver Gebruiker Toevoegen aan Hardware Groepen

Dwing het systeem om de applicatie-gebruiker toegang te geven tot de videokaart-nodes:

# Voor een Jellyfin container:
usermod -aG video,render jellyfin

# Voor een Plex container:
usermod -aG video,render plex

3. Passthrough Valideren

Controleer of de driver correct initialiseert binnen de container:

vainfo
Als alles klopt, zie je een schone lijst met ondersteunde profielen (zoals VAEntrypointEncSlice en VAEntrypointDecoderEntry). Krijg je een permissiefout? Herstart de container en controleer Fase 3.


🚦 Fase 5: Mediaserver Dashboard Activeren

Voor Jellyfin

Opmerking: Gebruik de officiΓ«le Jellyfin repository voor de installatie van jellyfin-ffmpeg6. De standaard Debian/Ubuntu repository ffmpeg mist de juiste RDNA3 AV1 en HDR-naar-SDR tonemapping code.

  1. Open de Jellyfin Web UI.
  2. Navigeer naar: Dashboard βž” Playback.
  3. Zet Hardware Acceleration op Video Acceleration API (VAAPI).
  4. Zet VAAPI Device exact op: /dev/dri/renderD128.
  5. Vink alle codecs aan die de Radeon 780M ondersteunt: H264, HEVC, MPEG2, VC1, VP9, AV1.
  6. Vink Enable VPP Tone mapping aan om HDR-content efficiΓ«nt via de iGPU om te zetten naar SDR.
  7. Klik onderaan op Save.

Voor Plex (Plex Pass Vereist)

  1. Open de Plex Web UI.
  2. Navigeer naar: Settings βž” Transcoder.
  3. Vink Hardware acceleration when available aan.
  4. Vink Hardware-accelerated video encoding aan.
  5. Selecteer de Auto / Advanced Micro Devices hardware transcoder uit het drop-down menu.
  6. Klik op Save Changes.

πŸ“Š Fase 6: Monitoring & Validatie

Opmerking: Door strenge beveiligingseisen binnen onbevoorrechte containers onder Kernel 7.x, kan nvtop binnen de container soms geen kernel-permissies krijgen om de GPU-belasting uit te lezen. Het wordt sterk aanbevolen om de status direct vanaf de Proxmox-host te monitoren.

  1. Open de terminal shell van de Proxmox Host.
  2. Start de performance monitor:
    nvtop
    
  3. Open een video-client (Plex of Jellyfin app), speel een zware 4K-film af en verlaag handmatig de kwaliteit in het menu van de speler om transcoding af te dwingen.
  4. Kijk naar de grafiek van nvtop op de host. Het GPU-percentage schiet direct omhoog. Je AMD Radeon 780M is nu officieel en succesvol aan het werk!