Docker Apps and UUID issue with NVIDIA GPU after upgrade to 24.10 or 25.04

Just had this issue on 25.04-RC.1 with plex

I recently installed steam-headless which uses the same GPU that plex uses and since I installed steam-headless I had a reboot everything was still working. Then all apps had updates. When I went to update all the apps plex had this issue. If I remember correctly this was the first update plex had since I installed steam-headless.

This worked for me - Thank You.

Just wanted to chime in that as of 2025-05-28 running 25.04.0, I had to do this to FINALLY fix this issue. Also worth noting I had to run with -j instead of -job.
All my stream sessions seem to be working fine now.

For me I had to replace -job with --job.

TrueNAS 25.04

midclt call --job app.update APP_NAME '{"values": {"resources": {"gpus": {"use_all_gpus": false, "nvidia_gpu_selection": {"PCI_SLOT": {"use_gpu": true, "uuid": "GPU_UUID"}}}}}}'

Replace:

  • APP_NAME: is the name you entered in the application, for example “plex”.
  • PCI_SLOT: is the pci slot identified in the error, for example "0000:2d:00.0”. (search the error for 000 and this will likely show you your unique value. However, it’s likely 0000:01:00.01
  • GPU_UUID is the UUID matching the pci slot that you retrieved with the above command. To get this run midclt call app.gpu_choices | jq from shell and scroll until you see the uuid to your GPU.

Refresh the page and write out your command line.

Here is my example:

midclt call --job app.update plex '{"values": {"resources": {"gpus": {"use_all_gpus": false, "nvidia_gpu_selection": {"0000:01:00.0": {"use_gpu": true, "uuid": "GPU-29ceb82c-547a-4641-d76c-42bac66b20ef"}}}}}}'

I was then able to replace the app name with each App I wanted to assign the GPU to.

1 Like

Hello, New user trying truenas from zima os and @DjP-iX solved my issues with the correct command: ```
midclt call -j app.update jellyfin ‘{“values”: {“resources”: {“gpus”: {“use_all_gpus”: false, “nvidia_gpu_selection”: {“0000:01:00.0”: {“use_gpu”: true, “uuid”: “GPU-xxxxxxxxxxxxxxx”}}}}}}’


Thanks I love you

This worked for me, thank you!

Confirmed still working - on 25.04.1. thanks again OP!!

Thanks for the help. This fixed my issue updating the plex app. I’m not sure how this issue came about for me because I installed 24.10 new when I installed hexos for the first time. This error popped up after updating plex multiple times. I’ve never messed with the default config of plex so i find it odd the gpu became unrecognized. Ive also had issues with video codecs in plex that turned out to be permission issues so i wonder if the app didn’t have permission to change the gpu_uuid.

TrueNAS 25.04.1

howdy, I tried this command and keep getting:

truenas_admin@truenas[~]$ midclt call -j app.update jellyfin '{"values": {"resources": {"gpus": {"use_all_gpus": false, "nvidia_gpu_selection": {"0000:65:00.0": {"use_gpu": tru
e, "uuid": "GPU-294a3e3d-3154-2190-aae0-b13e22eaa5f8"}}}}}}'
Status: (none)
Status: (none)
Total Progress: [________________________________________] 0.00%Total Progress: [________________________________________] 0.00%
[EINVAL] update: Input should be a valid dictionary or instance of AppUpdate
truenas_admin@truenas[~]$ 

What am I missing here?

I still have issues with this topic and I try to dokument this as good as possible:

Background:
After upgrading to TrueNAS-SCALE-25.04.1, I encountered the known RenderError: Expected [uuid] to be set for GPU when assigning my NVIDIA T400 to Jellyfin. Following the solutoun in this thread, I successfully mapped the GPU using:

midclt call -j app.update jellyfin '{"values": {"resources": {"gpus": {"nvidia_gpu_selection": {"0000:01:00.0": {"uuid": "GPU-XXXX"}}}}}}'

The GPU is now detected in the container (nvidia-smi works), but Jellyfin refuses to use it for transcoding.

Current Issue:

  1. Symptoms
  • Playback Info shows no GPU decoder (only software fallback).
  • nvidia-smi shows no jellyfin-ffmpeg processes during streams.
  • Forced transcoding (720kbps test) fails with “Bitrate exceeds limit” but no GPU utilization.
  1. Validated Configurations
  • encoding.xml confirms NVENC is enabled.
  • GPU is visible in the container (docker exec nvidia-smi succeeds).
  • All 10-bit codecs are disabled; only H.264/HEVC 8-bit are allowed.

Request:

  1. Is this a known limitation of TrueNAS’s app template system?
  2. Are there hidden permissions or mount points needed for NVENC?
  3. Should we consider this a bug, or is there a workaround I’ve missed?

System:

  • TrueNAS-SCALE 25.04.1
  • NVIDIA T400 (Driver 550.142)
  • Jellyfin 10.10.7 (Official Chart)

i was having same issue and error that you were experincing not sure if you ever corrected it this is the command i am running that fixed it just replace with your info midclt call -j app.update frigate ‘{“values”: {“resources”: {“gpus”: {“use_all_gpus”: false, “nvidia_gpu_selection”: {“0000:01:00.0”: {“use_gpu”: true, “uuid”: “GPU-5224678a-612b-c82b-1640-b069c256828e”}}}}}}’

also the apps name is case sensitive

After upgrading TrueNAS, I’ve seen NVIDIA GPU UUID changes break Docker app configs. The fix was to update the container settings with the new UUID or switch to using the GPU’s PCI bus ID in the compose file. Keeping GPU drivers updated and re-checking nvidia-smi output after upgrades helps catch and resolve these issues quickly.

Just came here to say this also resolved the same issue I was having running TrueNAS 25.04.2.4 with an RTX A2000.

I also had to run the command using “midclt call -j” instead of “midclt call -jobs”

midclt call -j app.update plex '{“values”: {“resources”: {“gpus”: {“use_all_gpus”: false, “nvidia_gpu_selection”: {"0000:05:00.0”: {“use_gpu”: true, “uuid”: “GPU-2c71b444-af9b-4343-84ee-31dcb65ac03f}}}}}}’

I’m getting a error: I have no clue what i’m doing!!! ElectricEel-24.10.2.4 HecOS

[EBADMSG] Invalid method name
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 368, in on_message
serviceobj, methodobj = self.middleware._method_lookup(message[‘method’])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/utils/service/call.py”, line 20, in _method_lookup
raise CallError(‘Invalid method name’, errno.EBADMSG)
middlewared.service_exception.CallError: [EBADMSG] Invalid method name

Truenas 24.10 uses a different api and you have to use the -job flag instead of -j

so it should be

midclt call -job app.update plex '{“values”: {“resources”: {“gpus”: {“use_all_gpus”: false, “nvidia_gpu_selection”: {"0000:05:00.0”: {“use_gpu”: true, “uuid”: “GPU-2c71b444-af9b-4343-84ee-31dcb65ac03f}}}}}}’
2 Likes

I tried the command, but I get this error message.

root@freenas[~]# midclt call -j app.update plex ‘{“values”: {“resources”: {“gpus”: {“use_all_gpus”: false, “nvidia_gpu_selection”: {“0000:10:00.0”: {“use_gpu”: true, “uuid”: “GPU-cbe30b52-8699-63b7-3eb6-be6dd9c00e66”}}}}}}’
CRUDService.update() takes 5 positional arguments but 15 were given
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/ws_handler/rpc.py", line 323, in process_method_call
    result = await method.call(app, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/method.py", line 52, in call
    result = await self.middleware.call_with_audit(self.name, self.serviceobj, methodobj, params, app)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 911, in call_with_audit
    result = await self._call(method, serviceobj, methodobj, params, app=app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 720, in _call
    return await methodobj(*prepared_call.args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: CRUDService.update() takes 5 positional arguments but 15 were given

Here is what is displayed with the command.
midclt call app.gpu_choices | jq

root@freenas[~]# midclt call app.gpu_choices | jq                                                                                                                                                                              

{
  "0000:10:00.0": {
    "vendor": "NVIDIA",
    "description": "NVIDIA T400 4GB",
    "error": null,
    "vendor_specific_config": {
      "uuid": "GPU-cbe30b52-8699-63b7-3eb6-be6dd9c00e66"
    },
    "gpu_details": {
      "addr": {
        "pci_slot": "0000:10:00.0",
        "domain": "0000",
        "bus": "10",
        "slot": "00"
      },
      "description": "NVIDIA Corporation TU117GL [T400 4GB]",
      "devices": [
        {
          "pci_id": "10DE:1FF2",
          "pci_slot": "0000:10:00.0",
          "vm_pci_slot": "pci_0000_10_00_0"
        },
        {
          "pci_id": "10DE:10FA",
          "pci_slot": "0000:10:00.1",
          "vm_pci_slot": "pci_0000_10_00_1"
        }
      ],
      "vendor": "NVIDIA",
      "uses_system_critical_devices": false,
      "critical_reason": null,
      "available_to_host": true
    },
    "pci_slot": "0000:10:00.0"
  }
}

What am I doing wrong?

which version of truenas are you on? Depending on the version a different api is used and the command is different

I am on version 25.04

try with

midclt call -j app.update plex '{"values": {"resources": {"gpus": {"use_all_gpus": false, "nvidia_gpu_selection": {"0000:10:00.0": {"use_gpu": true, "uuid": "GPU-cbe30b52-8699-63b7-3eb6-be6dd9c00e66"}}}}}}'

I believe you used a wrong character. you used ‘ instead of ’

2 Likes

It works, thank you

1 Like