DeepStream 8.0 + WSL2 + Docker: “S_EXT_CTRLS for CUDA_GPU_ID failed” – hardware decoding not working

Hello NVIDIA Devs,

I am trying to run DeepStream 8.0 inside a Docker container on WSL2 Ubuntu 24.04 with my RTX 4060 GPU. I can successfully load the TensorRT model, and the GPU is visible (nvidia-smi works) inside WSL2 and inside the container, but hardware decoding (NVDEC/NVMM) fails with the following error:

*** Inside cb_newpad name=video/x-raw
Opening in BLOCKING MODE 
Error while setting IOCTL
Invalid control
S_EXT_CTRLS for CUDA_GPU_ID failed
Resetting source -1, attempts: 1

Here are my setup details:

  • Windows 11 Build: 10.0.26100.7171

  • WSL2 Version: 2.6.2.0

  • WSL2 Kernel Version: 6.6.87.2-1

  • WSLg Version: 1.0.71

  • Direct3D Version: 1.611.1-81528511

  • GPU: NVIDIA GeForce RTX 4060

  • NVIDIA Driver on Windows: 576.52 (CUDA 12.9) – Clean installation, Game Ready

  • Docker Version: 29.1.2, build 890dcca

  • DeepStream 8.0 container: nvcr.io/nvidia/deepstream:8.0-gc-triton-devel

  • TensorRT: working fine (model engine loads successfully)

  • Issue: NVDEC hardware decoding fails; frames are not decoded, and the pipeline cannot start.

  • GPU visibility: nvidia-smi works correctly both in WSL2 and inside the container

  • GStreamer plugin: nvv4l2decoder exists (gst-inspect-1.0 | grep nvv4l2decoder confirms it is installed)

Additional Info:

  • NVDEC/NVMM plugins (nvv4l2decoder) appear not fully supported in WSL2, even though the GPU is visible and TensorRT works.

  • On a native Ubuntu 24.04 machine, the exact same container works correctly with hardware decoding.

  • Linux NVIDIA drivers are not installed in WSL2, only the Windows driver, as recommended.

Question:
Is there a known workaround or solution to enable hardware decoding with DeepStream 8.0 on WSL2, or is this a limitation of WSL2’s V4L2/NVMM support?
Would using Ubuntu natively be the only way to get NVDEC hardware decoding working, or is there a container-side or WSL2 workaround?

Thank you very much for your help!

It will work properly if you follow the steps below DeepStream On WSL. But we have only done a full test on the GeForce RTX-3050 and will give it a try on the RTX-40xx series as well.

Thank you for your reply.

I have followed exactly all the steps described in the DeepStream on WSL guide, including the recommended WSL2 configuration, NVIDIA driver versions, and container setup.
Despite this, the issue persists on my RTX 4060: TensorRT works correctly, but NVDEC / NVMM hardware decoding still fails with the S_EXT_CTRLS for CUDA_GPU_ID failed error.

Since you mentioned that full testing was only done on the RTX 3050, could you please confirm whether:

  1. RTX 40-series GPUs are currently unsupported for NVDEC / V4L2 decoding inside WSL2,
    or

  2. There is an additional patch, workaround, or experimental configuration that I can try on my side?

I’d be happy to run any diagnostic commands or provide logs if needed.

Thank you again for your assistance.

I have tried that on the 4070 Ti. I followed the instructions in our document and it works normally. Did you pay attention to whether any errors occurred when following the procedure?
And could you try the nvcr.io/nvidia/deepstream:8.0-triton-multiarch docker image?

There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks.