Jellyfin container works with NVIDIA GPU 1, but not GPU 0 - spongeboy03 - 2025-11-22
I'm having an issue when trying to change my jellyfin container from using my Tesla A2 to using my RTX 3090 (Both Ampere). Here is the output of nvidia-smi:
Code: Fri Nov 21 20:02:46 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.105.08 Driver Version: 580.105.08 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3090 Off | 00000000:01:00.0 Off | N/A |
| 31% 43C P8 17W / 350W | 15MiB / 24576MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A2 Off | 00000000:02:00.0 Off | 0 |
| 0% 38C P8 6W / 60W | 14MiB / 15356MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1669 G /usr/lib/xorg/Xorg 4MiB |
| 1 N/A N/A 1669 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------------------+
Here is my docker compose file. I tried adding the /dev/ mounts specified in the hardware acceleration page but it didn't fix it.
Code: services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- ./config:/config
- ./cache:/cache
# Media
- type: bind
source: /mnt/omvpool/Movies
target: /Movies
# NVIDIA GPU device mounts
- /dev/nvidia-caps:/dev/nvidia-caps
- /dev/nvidia0:/dev/nvidia0
- /dev/nvidiactl:/dev/nvidiactl
- /dev/nvidia-modeset:/dev/nvidia-modeset
- /dev/nvidia-uvm:/dev/nvidia-uvm
- /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
restart: "unless-stopped"
environment:
- JELLYFIN_PublishedServerUrl=http://jellyfin.mithrak.us
extra_hosts:
- "host.docker.internal:host-gateway"
runtime: nvidia
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ["0"]
capabilities: [gpu]
When I start the container with device_ids: ["1"], playback works flawlessly, but when I change it to use my 3090, it has a fatal error. I exec'ed into the container to see if jellyfin ffmpeg could use it for simple decodes, and I get this error:
Quote:[hevc @ 0x7f35548dd400] decoder->cvdl->cuvidGetDecoderCaps(&caps) failed -> CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
[hevc @ 0x7f35548dd400] Failed setup for format cuda: hwaccel initialisation returned error.
[hevc_nvenc @ 0x7f35548dc600] OpenEncodeSessionEx failed: unsupported device (2): (no details)
[vost#0:0/hevc_nvenc @ 0x7f353fa7b100] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[vf#0:0 @ 0x7f3566281dc0] Error sending frames to consumers: Function not implemented
[vf#0:0 @ 0x7f3566281dc0] Task finished with error code: -38 (Function not implemented)
[vf#0:0 @ 0x7f3566281dc0] Terminating thread with return code -38 (Function not implemented)
[vost#0:0/hevc_nvenc @ 0x7f353fa7b100] Could not open encoder before EOF
[vost#0:0/hevc_nvenc @ 0x7f353fa7b100] Task finished with error code: -22 (Invalid argument)
[vost#0:0/hevc_nvenc @ 0x7f353fa7b100] Terminating thread with return code -22 (Invalid argument)
[out#0/matroska @ 0x7f3566281ac0] Nothing was written into output file, because at least one of its streams received no packets.
frame= 0 fps=0.0 q=0.0 Lsize= 0KiB time=N/A bitrate=N/A speed=N/A
Conversion failed!
Here is the command I used to test it. I downloaded jellyfin ffmpeg on the Debian host and ran the same command on the same file, and it was able to decode fine.
Quote:/usr/lib/jellyfin-ffmpeg/ffmpeg \
-hwaccel cuda -hwaccel_output_format cuda \
-init_hw_device cuda=cu:0 \
-i /Movies/TEST_MOVIE.mkv \
-c:v hevc_nvenc -c:a copy \
-y "/cache/transcodes/test_output.mkv"
I am extremely curious as to why one gpu would work and not the other, when both are the same architecture, driver version, CUDA version, etc. The only difference between a working and non-working setup is that device_ids parameter.
|