My Jellyfin config has some YAML like this.
# Sometimes work
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
Occasionally when I reboot my server, I end up with no card0 and instead I have /dev/dri/card1. This breaks my Jellyfin server…
I noticed there is also dri/by-path, which I’m guessing is a more stable path than a card index… however, doing this doesn’t work for me.
# No work
devices:
- /dev/dri/by-path/pci-0000:00:02.0-render:/dev/dri/renderD128
- /dev/dri/by-path/pci-0000:00:02.0-card:/dev/dri/card0
I tried with and without quotes and the result is the same. Error to start. I’m guessing Docker is failing to correctly parse the string because of the colons in pci-0000:00:02.0-card…
How’s everyone else handling this problem? I’ve been updating my compose.yaml every time the index switches, card0 to card1 to card0… but this is getting annoying now. (This is a worse problem now that I’m running Fedora IoT!)
Any thoughts?
As an alternative to mounting full
/dev/dri, there are symlinks under/dev/dri/by-path/which you can use. IIUC they are linked by the used PCI slot, hence should be as stable as the physical order of the cards.I use this pattern in a compose file:
... devices: - source: /dev/dri/by-path/pci-XXX-render target: /dev/dri/renderD128 permissions: rwmJust mount
/dev/dri.Genius!
I had the same issue a while ago. :) I think the docs tell you to do it the way you had it, which is why it causes confusion.
This is also good because if you have a newer cpu it has integrated graphics built in, and you have a dedicated gpu card, will give you two devices here, which this will auto mount both.
jellyfin: container_name: jellyfin image: linuxserver/jellyfin:amd64-version-12.1ubu2604 expose: - 8096 networks: - media volumes: - ${DIR_LOCALTIME}:/etc/localtime:ro - ${DIR_container}/jellyfin/config:/config - ${DIR_media}/data:/media/data devices: # IntelQuickSync für TigerLake GT2 [Iris Xe Graphics] - /dev/dri/renderD128:/dev/dri/renderD128 - /dev/dri/card0:/dev/dri/card0 environment: PUID: 1200 PGID: 1300 #UMASK: 022 TZ: ${TZ} DOCKER_MODS: linuxserver/mods:jellyfin-opencl-intel JELLYFIN_PublishedServerUrl: "https://jellyfin/.$%7BDOMAIN_EXTERNAL%7D" deploy: resources: limits: memory: 10G group_add: - '44' - '992' labels: # Traefik: traefik.enable: true # Enable Traefik reverse proxy for the Traefik dashboard. traefik.http.services.jellyfin.loadbalancer.server.port: 8096 traefik.http.routers.jellyfin-public.entrypoints: 'https' traefik.http.routers.jellyfin-public.rule: 'Host(`jellyfin.${DOMAIN_EXTERNAL}`)' # Secondary domain traefik.http.routers.jellyfin-public2.entrypoints: 'https' traefik.http.routers.jellyfin-public2.rule: 'Host(`jellyfin.${DOMAIN_EXTERNAL2}`)' restart: unless-stoppedAfaik the card0 is only used for rendering to a desktop/monitor and for this purpose you should actually use the renderD128 path.
But not sure either about this stuff. Sort of works for me. At leastintel_gpu_topshows activity when transcoding :pIf you download hevc main 10 level 5.1 content or below you probably won’t need to transcode and can skip the whole problem 🧠
Removed by mod
Removed by mod
Removed by mod



