No support for codec h264

Server Version#: 1.41.3.9314
Player Version#: 4.141.0

After many days of waiting for items to arrive and digging through guides across the web, I finally have my plex installation completed…or so I thought. For the record, I’ve had plex working just fine on my TrueNAS jail for many years now but for a few reasons, one of them mainly wanting GPU transcoding, I moved the installation over to a docker container on a Proxmox VM (Ubuntu). Everything is moved over and plex is working fine. As of this writing, I have 2 people streaming direct.

I was able to install my ASRock Arc A310 card on my Supermicro X10DRC-LN4+ motherboard with E5-2640 v4 CPU and a crap ton of DDR4 ECC RAM.

Ive followed this guide to get my card passed through to the VM. On the host, I see

Kernel driver in use: vfio-pci

On the VM, I see:

01:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A310] (rev 05) (prog-if 00 [VGA controller])
        Subsystem: ASRock Incorporation DG2 [Arc A310]
        Physical Slot: 0
        Flags: bus master, fast devsel, latency 0, IRQ 42
        Memory at 80000000 (64-bit, non-prefetchable) [size=16M]
        Memory at 380000000000 (64-bit, prefetchable) [size=256M]
        Expansion ROM at <ignored> [disabled]
        Capabilities: <access denied>
        Kernel driver in use: i915
        Kernel modules: i915, xe

My compose.yml looks like so:

---
services:
  plex:
    container_name: plex
    privileged: true
    image: plexinc/pms-docker
    restart: unless-stopped
    devices:
      - /dev/dri:/dev/dri  # Pass the entire /dev/dri directory
    environment:
      - TZ=America/New_York
    network_mode: host
    volumes:
      - /home/dangerisgo/plex/config:/config
      - /mnt/plex/transcode:/transcode
      - /media:/media
      - /photos:/photos

I can see the card in plex and select it but plex does not use the card for transcoding. Looking through the logs, I see this snippet:

Jan 08, 2025 22:01:42.671 [132814676699960] DEBUG - [Req#344/Transcode] Codecs: hardware transcoding: testing API vaapi for device '/dev/dri/renderD128' (Intel DG2 [Arc A310])
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x41524742 -> bgra.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x42475241 -> argb.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x41424752 -> rgba.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x52474241 -> abgr.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x58524742 -> bgr0.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x42475258 -> 0rgb.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x58424752 -> rgb0.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x52474258 -> 0bgr.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30335241 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30334241 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30335258 -> x2rgb10le.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30334258 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x36314752 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x56555941 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x56555958 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30303859 -> gray.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x3231564e -> nv12.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x3132564e -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x32595559 -> yuyv422.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x59565955 -> uyvy422.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x32315659 -> yuv420p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30323449 -> yuv420p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x50313134 -> yuv411p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x48323234 -> yuv422p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x56323234 -> yuv440p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x50343434 -> yuv444p.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x33434d49 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30313050 -> p010le.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x32313050 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x36313050 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30313259 -> y210le.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x32313259 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x36313259 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x30313459 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x32313459 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x36313459 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x50424752 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Format 0x50524742 -> unknown.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Created surface 0.
Jan 08, 2025 22:01:42.673 [132814676699960] DEBUG - [Req#344/Transcode] [FFMPEG] - Direct mapping possible.
Jan 08, 2025 22:01:42.674 [132814676699960] INFO - [Req#344/Transcode] Preparing driver imd for GPU Intel DG2 [Arc A310]
Jan 08, 2025 22:01:42.674 [132814676699960] DEBUG - [Req#344/Transcode/DriverDL/imd] Skipping download; already exists
Jan 08, 2025 22:01:42.674 [132814676699960] DEBUG - [Req#344/Transcode] TPU: hardware transcoding: final decoder: vaapi, final encoder: 
Jan 08, 2025 22:01:42.695 [132814676699960] DEBUG - [Req#344/Transcode/JobRunner] Job running: FFMPEG_EXTERNAL_LIBS='/config/Library/Application\ Support/Plex\ Media\ Server/Codecs/e613bce-3d5ad59c62e771ae9cb5738e-linux-x86_64/' LIBVA_DRIVERS_PATH="/config/Library/Application Support/Plex Media Server/Cache/va-dri-linux-x86_64" X_PLEX_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "/usr/lib/plexmediaserver/Plex Transcoder" -codec:0 h264 -hwaccel:0 vaapi -hwaccel_fallback_threshold:0 10 -hwaccel_device:0 vaapi -codec:1 dca -analyzeduration 20000000 -probesize 20000000 -i "/media/HD Movies/Terminator.2.Judgement.Day.1991.Unrated.BluRay.Remux.1080p.AVC.DTS-HD.MA.5.1-ZQ/Terminator.2.Judgement.Day.1991.Unrated.BluRay.Remux.1080p.AVC.DTS-HD.MA.5.1-ZQ.mkv" -filter_complex "[0:0]scale=w=1920:h=1080:force_divisible_by=4[0];[0]format=pix_fmts=yuv420p|nv12[1]" -map "[1]" -metadata:s:0 language=eng -codec:0 libx264 -crf:0 23 -maxrate:0 7393k -bufsize:0 14786k -r:0 23.975999999999999 -preset:0 veryfast -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*1)" -filter_complex "[0:1] aresample=async=1:ochl='stereo':rematrix_maxval=0.000000dB:osr=48000[2]" -map "[2]" -metadata:s:1 language=eng -codec:1 aac -b:1 109k -f dash -seg_duration 1 -dash_segment_type mp4 -init_seg_name 'init-stream$RepresentationID$.m4s' -media_seg_name 'chunk-stream$RepresentationID$-$Number%05d$.m4s' -window_size 5 -delete_removed false -skip_to_segment 1 -time_delta 0.0625 -manifest_name "http://127.0.0.1:32400/video/:/transcode/session/g8nyuprkub6rdq4cw25ghppr/47594cc4-bad9-4fd5-9cb3-a3604fef7d71/manifest?X-Plex-Http-Pipeline=infinite" -avoid_negative_ts disabled -map_metadata -1 -map_chapters -1 dash -start_at_zero -copyts -vsync cfr -init_hw_device vaapi=vaapi:/dev/dri/renderD128,driver=iHD -filter_hw_device vaapi -y -nostats -loglevel quiet -loglevel_plex error -progressurl http://127.0.0.1:32400/video/:/transcode/session/g8nyuprkub6rdq4cw25ghppr/47594cc4-bad9-4fd5-9cb3-a3604fef7d71/progress
Jan 08, 2025 22:01:42.695 [132814676699960] DEBUG - [Req#344/Transcode/JobRunner] In directory: "/transcode/Transcode/Sessions/plex-transcode-g8nyuprkub6rdq4cw25ghppr-47594cc4-bad9-4fd5-9cb3-a3604fef7d71"
Jan 08, 2025 22:01:42.696 [132814676699960] DEBUG - [Req#344/Transcode/JobRunner] Jobs: Starting child process with pid 510
Jan 08, 2025 22:01:42.906 [132814659922744] DEBUG - [Req#35e] [Now] Adding 2 sessions.
Jan 08, 2025 22:01:42.907 [132814651534136] ERROR - [Req#357/Transcode/g8nyuprkub6rdq4cw25ghppr/47594cc4-bad9-4fd5-9cb3-a3604fef7d71] [h264 @ 0x783be7009b80] No support for codec h264 profile 100.
Jan 08, 2025 22:01:42.908 [132814815111992] DEBUG - Completed: [10.1.1.2:57381] 200 GET /status/sessions (26 live) #35e TLS GZIP 1ms 4822 bytes (pipelined: 59)
Jan 08, 2025 22:01:42.909 [132814659922744] ERROR - [Req#35f/Transcode/g8nyuprkub6rdq4cw25ghppr/47594cc4-bad9-4fd5-9cb3-a3604fef7d71] [h264 @ 0x783be7009b80] Failed setup for format vaapi: hwaccel initialisation returned error.
Jan 08, 2025 22:01:42.919 [132814638951224] DEBUG - Request: [10.1.1.2:57381 (Subnet)] GET /video/:/transcode/universal/session/g8nyuprkub6rdq4cw25ghppr/1/header (26 live) #360 TLS GZIP Signed-in
Jan 08, 2025 22:01:42.923 [132814605396792] DEBUG - Request: [10.1.1.2:57237 (Subnet)] GET /video/:/transcode/universal/session/g8nyuprkub6rdq4cw25ghppr/0/header (26 live) #2dd TLS GZIP Signed-in
Jan 08, 2025 22:01:42.972 [132814609591096] DEBUG - [Req#361/Transcode/g8nyuprkub6rdq4cw25ghppr/47594cc4-bad9-4fd5-9cb3-a3604fef7d71] Transcoder: session g8nyuprkub6rdq4cw25ghppr indicated fallback to software decoding

I’m not sure what “No support for codec h264 profile 100.” means but after doing some google searching, its essentially came up with nothing. Any help would be awesome!

As an update, I also tried installing it directly on the VM with the official installer, not running through docker, and I get the same results.

There is no H.264 profile 100.
The highest is 5.1

If you have h.264 identifying it’s level 100 then whoever touched it last doesn’t know what they’re doing.

recommend replacing the file.

Thanks for your reply Chuck. I’ve tried multiple files from various release groups all with the same result.

No support for codec vc1 profile 3.

Is another one I got on a different movie. I also got the h264 profile 100 on several other movies.

When trying to play a 4k HEVC movie, I got the following:

No support for codec hevc profile 2.
Jan 09, 2025 21:32:37.983 [124232457530168] ERROR - [Req#229e/Transcode] [FFMPEG] - Failed setup for format vaapi: hwaccel initialisation returned error.

As a follow-up, there is a profile 100 in h.264: Advanced Video Coding - Wikipedia

Let’s get a big hammer :smiling_imp:

  1. Stop Plex
  2. In the terminal, get into the “Plex Media Server” directory
  3. Now go into the “Codecs” directory
  4. You’ll see subdirectories for the codecs – DELETE THEM
  5. DO NOT– delete the .device_id file. This is your license key.
  6. Restart PMS

As for what to expect from your CPU:

  1. I have the E5-2690 v4 and 256 GB ECC RAM
  2. It will NOT do any hardware transcoding . The CPU doesn’t have it.
  3. What you’re showing me is that you have an ARC GPU.
  4. Plex doesn’t support them
  5. If you want to use it, it’s your responsibility to install Intel’s VAAPI drivers for the card.

Info for HEVC

I tried your big hammer steps but unfortunately, they did not work :frowning:
Do you have any other suggestions? Perhaps a bigger hammer??

Here’s more: I got a P400 off ebay today and put that in my system. Deleted the intel drivers and installed the official NVIDIA drivers. No go. Here is a snippet of the log:

Jan 10, 2025 06:08:21.425 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: testing h264_nvenc (encoder)
Jan 10, 2025 06:08:21.425 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: hardware transcoding: testing API nvenc for device 'pci:0000:01:00.0' (NVIDIA GP107GL [Quadro P400])
Jan 10, 2025 06:08:21.466 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] - cu->cuInit(0) failed
Jan 10, 2025 06:08:21.466 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] -  -> CUDA_ERROR_UNKNOWN: unknown error
Jan 10, 2025 06:08:21.466 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] - 
Jan 10, 2025 06:08:21.466 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Generic error in an external library
Jan 10, 2025 06:08:21.467 [124743455877944] DEBUG - [Req#2c2/Transcode] Could not create hardware context for h264_nvenc
Jan 10, 2025 06:08:21.467 [124743455877944] DEBUG - [Req#2c2/Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Jan 10, 2025 06:08:21.467 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: testing h264 (decoder) with hwdevice nvdec
Jan 10, 2025 06:08:21.467 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: hardware transcoding: testing API nvdec for device 'pci:0000:01:00.0' (NVIDIA GP107GL [Quadro P400])
Jan 10, 2025 06:08:21.502 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] - cu->cuInit(0) failed
Jan 10, 2025 06:08:21.502 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] -  -> CUDA_ERROR_UNKNOWN: unknown error
Jan 10, 2025 06:08:21.502 [124743455877944] ERROR - [Req#2c2/Transcode] [FFMPEG] - 
Jan 10, 2025 06:08:21.503 [124743455877944] DEBUG - [Req#2c2/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Generic error in an external library
Jan 10, 2025 06:08:21.503 [124743455877944] DEBUG - [Req#2c2/Transcode] Could not create hardware context for h264
Kernel driver in use: nvidia

Before the nvidia official drivers, I tried the ubuntu repository nvidia drivers. Same output as above.
I disabled secure boot on this most recent try since the official drivers complained about it, but that didnt affect the outcome.
I’m seriously at my wits end. I’m not sure what else to do.

My OS is Ubuntu Server 24.04.01 (non-minimized). Proxmox is 8.3.2. I completely took docker out of the equation at the moment, its the native app.

Did you do the GPU passthrough to the VM?

https://pve.proxmox.com/wiki/PCI_Passthrough

I must also ask,

  1. Why are you using Docker in a Ubuntu VM on Proxmox ?
    – You’re making it more difficult with the container in a VM

  2. Proxmox has the ‘tteck’ helper scripts which create Plex VMs very nicely .
    – I use that on my JasperLake box.

Within H.264, profiles are signaled in the Sequence Parameter Set, in a Profile Indication Field.

  • 66: Baseline profile
  • 77: Main profile
  • 88: Extended profile
  • 100: High profile
  • 110: High 10 profile
  • 122: High 4:2:2 profile
  • 244: High 4:4:4 profile

100 is just High profile, super common. My reaction at seeing 100 in the error message is that error messages are terse and something went wrong initializing the hardware for decode, not that anything is weird about the file.

I can’t help with the troubleshooting, you can trust Chuck. :slight_smile:

Yes, I did everything on that list.

And 1. I do use docker but not for these testing. All of this testing has been native. I do docker because I found it easier to update and work with. I know immediately where the data dir is, and very easy to move it around if/when I have to
2. I have never heard of that before. I’ll look into it!

As another update, I tried creating a new VM of Windows 10 following this guide and I’m getting Error 43 in device manager with the newest drivers. I uninstalled and went back to 451 drivers from 2020 but now my system failed to boot, so I need to wipe and start again. I guess my thought process was if I can get nvidia-smi working on ubuntu (I cannot) or the card working in windows, then I would be on the right path to getting it working with plex. (When I run nvidia-smi in Ubuntu, it shows “no devices were found”)

I use the vetted 550 drivers from Ubuntu

sudo apt install nvidia-driver-550

If those aren’t in the Ubuntu 20 list then look what is there.

apt list | grep nvidia-driver

the sequence here is:

  1. Pass the physical GPU through to the VM (Proxmox doesn’t touch it)
  2. Let Ubuntu install the host drivers in the VM
  3. Confirm the drivers see the card (nvidia-smi)

I just created a new VM. Exact steps I did

  1. Disabled Secure Boot.
  2. Config:
agent: 1
balloon: 0
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 4
cpu: host,hidden=1,flags=+pcid
efidisk0: local-lvm:vm-102-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:81:00.0,pcie=1,x-vga=1
hostpci1: 0000:81:00.1,pcie=1
ide2: none,media=cdrom
machine: q35
memory: 8192
meta: creation-qemu=9.0.2,ctime=1736537031
name: plex
net0: virtio=BC:24:11:C3:FA:46,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local-lvm:vm-102-disk-1,iothread=1,size=32G
scsihw: virtio-scsi-single
smbios1: uuid=8f61309f-52e0-4611-9667-79cdb9dcc5dc
sockets: 1
vmgenid: 7bd1■■■3-317d-45bd-a41d-f6b88ceac0f4
  1. Full install (not minimized) of Ubuntu Server 24.04.01
  2. Apt update/upgrade
  3. Blacklisted nouveau
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
  1. Update grub
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=""
# and changed it to
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
sudo update-grub
  1. sudo apt install nvidia-driver-550
  2. Reboot
  3. lspci -v shows:
01:00.0 VGA compatible controller: NVIDIA Corporation GP107GL [Quadro P400] (rev a1) (prog-if 00 [VGA controller])
        Subsystem: NVIDIA Corporation GP107GL [Quadro P400]
        Physical Slot: 0
        Flags: bus master, fast devsel, latency 0, IRQ 16
        Memory at 80000000 (32-bit, non-prefetchable) [size=16M]
        Memory at 380000000000 (64-bit, prefetchable) [size=256M]
        Memory at 380010000000 (64-bit, prefetchable) [size=32M]
        I/O ports at 8000 [size=128]
        Capabilities: [60] Power Management version 3
        Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [78] Express Legacy Endpoint, MSI 00
        Capabilities: [100] Virtual Channel
        Capabilities: [250] Latency Tolerance Reporting
        Capabilities: [128] Power Budgeting <?>
        Capabilities: [420] Advanced Error Reporting
        Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
        Kernel driver in use: nvidia
        Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
  1. nvidia-smi
    No devices were found

:frowning:

That output shows the Nvidia is not being passed into the VM.

It should also show this way:

[chuck@lizum ~.2000]$ sudo lshw -C display
  *-display                 
       description: VGA compatible controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: /dev/fb0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=nvidia latency=0 mode=3840x2160 resolution=3840,2160 visual=truecolor xres=3840 yres=2160
       resources: iomemory:600-5ff iomemory:640-63f irq:274 memory:83000000-83ffffff memory:6000000000-63ffffffff memory:6400000000-6401ffffff ioport:3000(size=128) memory:84000000-8407ffff
  *-display
       description: Display controller
       product: AlderLake-S GT1
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 0c
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm bus_master cap_list
       configuration: driver=i915 latency=0
       resources: iomemory:640-63f iomemory:400-3ff irq:273 memory:645b000000-645bffffff memory:4000000000-400fffffff ioport:4000(size=64) memory:4010000000-4016ffffff memory:4020000000-40ffffffff
[chuck@lizum ~.2001]$ 

My Nvidia is in PCIe slot 01:00 with iGPU in 00:02.

This is the output of lshw on my VM:

dangerisgo@plex:~$ sudo lshw -C display
[sudo] password for dangerisgo:
  *-display
       description: VGA compatible controller
       product: GP107GL [Quadro P400]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: iomemory:38000-37fff iomemory:38000-37fff irq:16 memory:80000000-80ffffff memory:380000000000-38000fffffff memory:380010000000-380011ffffff ioport:8000(size=128)

And on my proxmox host:

root@pve:~# lshw -C display
  *-display
       description: VGA compatible controller
       product: ASPEED Graphics Family
       vendor: ASPEED Technology, Inc.
       physical id: 0
       bus info: pci@0000:07:00.0
       logical name: /dev/fb0
       version: 30
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi vga_controller bus_master cap_list fb
       configuration: depth=32 latency=0 resolution=1024,768
       resources: memory:c6000000-c6ffffff memory:c7000000-c701ffff ioport:3000(size=128) memory:c0000-dffff
  *-display
       description: VGA compatible controller
       product: GP107GL [Quadro P400]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:81:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=vfio-pci latency=0
       resources: irq:34 memory:fa000000-faffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:f000(size=128) memory:fb000000-fb07ffff

The ASPEED is the IPMI from the SuperMicro. It can’t be used for any of this.

When in the VM, dpkg -l | grep nvidia shows nothing installed ?

I had a problem with my drivers once and I had to completely remove everything and start fresh with it

dangerisgo@plex:~$ sudo dpkg -l | grep nvidia
ii  libnvidia-cfg1-550:amd64             550.120-0ubuntu0.24.04.1                amd64        NVIDIA binary OpenGL/GLX configuration library
ii  libnvidia-common-550                 550.120-0ubuntu0.24.04.1                all          Shared files used by the NVIDIA libraries
ii  libnvidia-compute-550:amd64          550.120-0ubuntu0.24.04.1                amd64        NVIDIA libcompute package
ii  libnvidia-decode-550:amd64           550.120-0ubuntu0.24.04.1                amd64        NVIDIA Video Decoding runtime libraries
ii  libnvidia-egl-wayland1:amd64         1:1.1.13-1build1                        amd64        Wayland EGL External Platform library -- shared library
ii  libnvidia-encode-550:amd64           550.120-0ubuntu0.24.04.1                amd64        NVENC Video Encoding runtime library
ii  libnvidia-extra-550:amd64            550.120-0ubuntu0.24.04.1                amd64        Extra libraries for the NVIDIA driver
ii  libnvidia-fbc1-550:amd64             550.120-0ubuntu0.24.04.1                amd64        NVIDIA OpenGL-based Framebuffer Capture runtime library
ii  libnvidia-gl-550:amd64               550.120-0ubuntu0.24.04.1                amd64        NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  nvidia-compute-utils-550             550.120-0ubuntu0.24.04.1                amd64        NVIDIA compute utilities
ii  nvidia-dkms-550                      550.120-0ubuntu0.24.04.1                amd64        NVIDIA DKMS package
ii  nvidia-driver-550                    550.120-0ubuntu0.24.04.1                amd64        NVIDIA driver metapackage
ii  nvidia-firmware-550-550.120          550.120-0ubuntu0.24.04.1                amd64        Firmware files used by the kernel module
ii  nvidia-kernel-common-550             550.120-0ubuntu0.24.04.1                amd64        Shared files used with the kernel module
ii  nvidia-kernel-source-550             550.120-0ubuntu0.24.04.1                amd64        NVIDIA kernel source package
ii  nvidia-prime                         0.8.17.2                                all          Tools to enable NVIDIA's Prime
ii  nvidia-settings                      510.47.03-0ubuntu4                      amd64        Tool for configuring the NVIDIA graphics driver
ii  nvidia-utils-550                     550.120-0ubuntu0.24.04.1                amd64        NVIDIA driver support binaries
ii  screen-resolution-extra              0.18.3                                  all          Extension for the nvidia-settings control panel
ii  xserver-xorg-video-nvidia-550        550.120-0ubuntu0.24.04.1                amd64        NVIDIA binary Xorg driver

I’m not passing the ASPEED to the VM, so I shouldn’t have to worry about it, right?

550.120 is correct.

No, don’t worry about the ASPEED. We only use it for the IPMI console.

There is something stupid happening with ProxMox not passing it.

This is where my ability to help ends. My Proxmox system is a 4x4" mini PC nuc which I purchased to try and help

What has your experience been with installing plex in an LXC? A quick google search said people have to install the nvidia drivers on the host. Thoughts on that route?

What about any sort of isolation with a VM, like how one debugs with bad components?

I use LXCs extensively.

  1. Install the Nvidia drivers on the host (from a terminal / console window )
  2. Add the GPU to the LXC

For me, it’s as simple as this (I wrote a script I do it so much)

[chuck@lizum lxc.2002]$ cat add-gpu

#
# Argument #1 is LXC container to add

[ -z "$1" ] && "Error: missing container name" && exit 1

if [ "$(lxc list | grep "$1")" == "" ]; then
  echo "Error: Unknown container name '$1'"
  exit 2
fi

# Make certain /dev/dri/renderD128 exists
if [ ! -e /dev/dri/renderD128 ]; then
  echo Error:  This host does not have hardware transcoding ability /dev/dri/renderD128
  exit 3
fi

Gid="$(stat -c %g /dev/dri/renderD128)"

# Add it
lxc config device add "$1" gpu gpu gid=$Gid
[chuck@lizum lxc.2003]$ 

The only thing left to do is get the UID/GID alignment of the container for media and HW alignment

  1. I create a username on the host
  2. I add that username to the group which owns /dev/dri (all the nodes in it)
  3. I then set that username as the UID/GID for the container
[chuck@lizum lxc.2005]$ cat SetUser 
#!/bin/bash
# set uid and gid for container

# specified a container name  ($1)
[ -z "$1" ] && echo "Usage: $0 ContainerName Username " && exit 1
[ -z "$2" ] && echo "Error: Username missing" && exit 2

# Confirm container
if [ "$(lxc list | grep "$1")" == "" ]; then
  echo "Error: Unknown container name '$1'"
  exit 2
fi

# make sure user exists
if [ "$(id "$2")" = "" ]; then

  echo \"$1\" is not a valid username
  exit 1

fi

Uid=$(id -u "$2")
Gid=$(id -g "$2")

# Now set for container ($1)
if [ "$(lxc list | grep "$1")" = "" ]; then
  echo \"$1\" is not a valid container name
  exit 2
fi

echo Setting  "uid $Uid 0\ngid $Gid 0" in container $1

printf "uid $Uid 0\ngid $Gid 0" | lxc config set "$1" raw.idmap -

echo Restarting container
lxc restart $1

Which nvidia drivers on the host to install? Ubuntu’s or NVIDIAs?

Is that first script ran on the host or the CT?

Install the Ubuntu vetted drivers.

The Nvidia .run file is difficult to manage when it comes to upgrading.