Plex LXC on a Intel NUC (Geekom Mini IT13) : /dev/dri/card0 change to /dev/dri/card1 after reboot #3235
Replies: 25 comments 48 replies
-
I dont have the same iGPU as you, I'm on alderlake but in my LXC i only link the renderer and not the video. HW transcoding works for me doing it that way. |
Beta Was this translation helpful? Give feedback.
-
Hello, Thanks in advance. edit : I just try to remove /dev/dri/card0 from the ressources allowed to the LXC. And Plex keep transcode with HW acceleration. |
Beta Was this translation helpful? Give feedback.
-
@MilesTEG1 On a side note: |
Beta Was this translation helpful? Give feedback.
-
@MilesTEG1 |
Beta Was this translation helpful? Give feedback.
-
I have the same issue on N6005 (may be not an issue..), then i have added both card0 and card1 in the LXC config file |
Beta Was this translation helpful? Give feedback.
-
I am using a privileged container
|
Beta Was this translation helpful? Give feedback.
-
@oliv99 My LXC is privileged too. As you can see, it doesn't work if /dev/dri/card1 doesn't exist. |
Beta Was this translation helpful? Give feedback.
-
Plex's PA office here ;)
In Setting - Server - Transcoding - Show Advanced, you can change the trancoding device (engine) from "Auto" to the specific device you want to use. This is how you can select an Nvidia (for example) on a machine with both Quick Sync Video and Nvidia card |
Beta Was this translation helpful? Give feedback.
-
Supplemental: I just remembered but don't know where it's documented. (Somewhere in the Plex forums) You have to blacklist one of the video drivers to get the passthrough right (card0 + renderD128) For me, on my Ubuntu host, LXD/LXC is trivial.
|
Beta Was this translation helpful? Give feedback.
-
If you're using Intel QSV (which I did on my NUC7i3BNH), you'll only need add it to the config of the container. As I showed above,
is the heart of what is done to enumerate it into the container. |
Beta Was this translation helpful? Give feedback.
-
Plex looks for card0 and renderD128 (which are how the pair is enumerated by the normal kernel. IF you have a stray secondary driver in the host, that's likely how you're getting card0, card1, and renderD128 This is my Nvidia host.
Always remember 'renderD128' = 'card0' + 128 (bit 7 set) -- that's how the enumeration works. |
Beta Was this translation helpful? Give feedback.
-
The script sets the correct groups for both privileged and unprivileged Hardware Acceleration Proxmox/install/plex-install.sh Lines 41 to 45 in 6e6a86a |
Beta Was this translation helpful? Give feedback.
-
HDR tone mapping is NOT currently working with the current Proxmox kernel. This must be disabled to get Hardware Acceleration working. #3162 |
Beta Was this translation helpful? Give feedback.
-
@ChuckPa: If I understand correctly, you are saying if I pass Because, that's what I intend to write in the script. And the latest answer you wrote tells me you seem to not correctly understand my problem... For a reason I ignore, Proxmox change the
On the Plex Forum, it was said that this issue was resolved, am I mistaken @ChuckPa? because when I set this option in Plex preferences, I still get HW acceleration. |
Beta Was this translation helpful? Give feedback.
-
To clarify, the Plex Media Server LXC script, whether privileged or unprivileged, assigns the card to either card0 or card1, depending on which is present. It also sets the correct groups. This setup has worked for many users. The card flip-flopping during reboot is uncommon. |
Beta Was this translation helpful? Give feedback.
-
We've changed the transcoder. If it can't tonemap in HW, it will proceed AS IF OFF. |
Beta Was this translation helpful? Give feedback.
-
Go into the PMS log.
Also, from the GUI, you will have TWO transcodes showing for the same item. (the code was developed oddly... we want to fix that) |
Beta Was this translation helpful? Give feedback.
-
DUDE!!!!
you have a configuration error (settings - server - transcoder - show advanced) |
Beta Was this translation helpful? Give feedback.
-
The default transcode directory is in Transcoder temp directories can never be placed on the network (inotify does not work - needed for Dolby) maybe best to bring this to the forum and get input from others |
Beta Was this translation helpful? Give feedback.
-
Hi all, |
Beta Was this translation helpful? Give feedback.
-
I believe I found an answer to this.
CONVERSELY
ROOT CAUSE:
SOLUTION: (more of a workaround) Install the Ubuntu HWE kernel. NOTE: |
Beta Was this translation helpful? Give feedback.
-
The workaround is because the Linux kernel is broken. This is Ubuntu 22.04.4 LTS HWE kernel.
The Xeon box, because it has no iGPU, requires I add a discrete (P2200) Here is where you see the kernel create the failure as it enumerates the devices into the filesystem.
What do you show in the EDIT: Here you can see the inode creation sequence and where it's broken. 'card0' does not belong here.
It's ALSO possible, with me running the new transcoder code , which has the new ICR in it, that ICR is capable of dealing with this. We have discussed this problem internally and know of a way to workaround the screwed up / broken kernel naming. Ask your distro folks (ProxMox) what they can do about the kernel & driver initialization enumeration sequence. |
Beta Was this translation helpful? Give feedback.
-
@MilesTEG1 Not sure if this helps, and I don't use plex, but I noticed that when I have a monitor connected to my host on boot, /dev/dri shows card1, and when I don't /dev/dri shows card0. Not sure if you had a monitor plugged in or not. |
Beta Was this translation helpful? Give feedback.
-
It's in the kernel. (been doing research) - simpledrm and simpleframebuffer Notice the redundancy
The result is When the CPU wants to enumerate QSV, we get card1 and renderD128. The nvidia then enumerates and gets Verified here.
|
Beta Was this translation helpful? Give feedback.
-
This issue is not related to either Plex or Proxmox. I have the same issue on a mini PC running Ubuntu 24.10, and it impacts both Plex and Jellyfin. I have several mini PCs in a server rack and I have an HDMI KVM switch. Sometimes when I reboot the 24.10 machine, I get /dev/dri/card0, sometimes I get card1. I've tried to force it to card0 by making sure my HDMI KVM switch was on the input for that machine so it detected a monitor connected, but I still got card1 after a reboot. I don't know if maybe I need to leave it on a different input for longer before I reboot or what, but it seems random to me, rather than related to a monitor being connect, at least in my case. I did not have this issue with Ubuntu 24.04, so I believe it was something introduced with the new kernal (6.11?) or it could be related to something else that was also updated between 24.04 and 24.10.... Is it possible to write a script that will always symlink card1 to card0 if card0 doesn't exist? Then create a service for it so it runs at boot? Obviously it would be a hacky workaround, if it even worked, but until the root cause is identified and issue corrected... |
Beta Was this translation helpful? Give feedback.
-
Hello,
I'm using the LXC Plex script installation, it works great, but I'm confronted to a problem with my NUC, a Geekom Mini IGT13, with Intel Core i9-13900H (Raptor Lake), and iGPU Intel Iris Xe 1.50 GHz.
The
/dev/dri/card0
change to/dev/dri/card1
after a reboot of the proxmox host, and change back to/dev/dri/card0
after another reboot, and etc...It's annoying, because Plex LXC won't start if the device is
/dev/dri/card1
and set to/dev/dri/card0
in the LXC ressources section.Do you have a workaround for me?
I tried to create a link inside de LXC but it's not persistent...
Here what I have on the proxmox host:
After a reboot, only the card0 change to card1, the by-path/pci-0000:00:02.0-card keep its name, but point to card1.
Thanks in advance.
Beta Was this translation helpful? Give feedback.
All reactions