I'm using Ubuntu 24.04.4 LTS with Nvidia 580.159.03 driver. Streaming is still not working. Is there a workaround to this?
I'm able to use nvenc using ffmpeg. These two commands work perfectly and i can see ffmpeg pop up on nvidia-smi.
ffmpeg -y -i input.mp4 -c:v h264_nvenc -preset slow -rc vbr -cq 24 -b:v 0 output.mp4
ffmpeg -y -i input.mp4 -c:v av1_nvenc -preset slow -rc vbr -cq 24 -b:v 0 output.mp4
Steam still continues to crash.
Let's recap what the issue is about.
When trying to use hardware encoding with an Nvidia GPU, the Steam tries to use the 32bit VA-API nvidia_drv_video.so driver, as seen in the logs:
[2026-05-13 18:36:18][256.660500] Created encoder VAAPI for codec 4
[2026-05-13 18:36:18][256.660517] CGameStreamVideoStageVAAPI: Reinitializing 1280x800 at 15000 Kbit/s and 60.00 FPS with quality 0
[2026-05-13 18:36:18][256.661146] ffmpeg verbose: libva: VA-API version 1.22.0
[2026-05-13 18:36:18][256.661162] ffmpeg verbose: libva: Trying to open /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so
[2026-05-13 18:36:18][256.661178] ffmpeg verbose: libva: va_openDriver() returns -1
[2026-05-13 18:36:18][256.661184] ffmpeg error: Failed to initialise VAAPI connection: -1 (unknown libva error).
[2026-05-13 18:36:18][256.661448] CGameStreamVideoStageVAAPI: Failed to create device context: Input/output error
[2026-05-13 18:36:18][256.661463] Failed to pre-process frame
the (unknown libva error). seems to indicate that the driver cannot be found at all.
On a multi-arch Debian system we can make it available by installing the nvidia-vaapi-driver:i386 package:
sudo apt-get install nvidia-vaapi-driver:i386
After that the error changes:
[2026-05-13 19:18:49][448.950419] Created encoder VAAPI for codec 4
[2026-05-13 19:18:49][448.950435] CGameStreamVideoStageVAAPI: Reinitializing 1280x800 at 15000 Kbit/s and 60.00 FPS with quality 0
[2026-05-13 19:18:49][448.950648] ffmpeg verbose: libva: VA-API version 1.22.0
[2026-05-13 19:18:49][448.950665] ffmpeg verbose: libva: Trying to open /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so
[2026-05-13 19:18:49][448.951548] ffmpeg verbose: libva: Found init function __vaDriverInit_1_0
[2026-05-13 19:18:49][448.951556] ffmpeg error: libva: /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so init failed
[2026-05-13 19:18:49][448.951562] ffmpeg verbose: libva: va_openDriver() returns 1
[2026-05-13 19:18:49][448.951567] ffmpeg error: Failed to initialise VAAPI connection: 1 (operation failed).
[2026-05-13 19:18:49][448.951755] CGameStreamVideoStageVAAPI: Failed to create device context: Input/output error
[2026-05-13 19:18:49][448.951760] Failed to pre-process frame
A minimal reproducer on the host could be obtained on a multi-arch Debian system by installing vainfo:i386:
$ sudo apt-get install vainfo:i386
$ vainfo --display x11
Trying display: x11
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva error: /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so init failed
libva info: va_openDriver() returns 1
vaInitialize failed with error code 1 (operation failed),exit
Now, strace could tell us more about what is missing:
$ strace vainfo --display x11
...
write(2, "Cannot load libcuda.so.1\n", 25Cannot load libcuda.so.1
And on my system I was indeed missing libcuda1:i386 and libnvcuvid1:i386.
However even after satisfying all the deps, something is still missing:
$ strace vainfo --display x11
...
openat(AT_FDCWD, "/dev/dri/renderD128", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 10
ioctl(10, DRM_IOCTL_VERSION, 0xff8fbfd8) = 0
ioctl(10, DRM_IOCTL_GET_CAP, 0xff8fbffc) = 0
openat(AT_FDCWD, "/dev/nvidiactl", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 11
openat(AT_FDCWD, "/dev/nvidia0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 12
ioctl(11, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0xd2, 0x48), 0xff8fbeb0) = 0
ioctl(10, DRM_IOCTL_IVPU_BO_INFO or DRM_IOCTL_XE_VM_CREATE, 0xff8fbe78) = 0
ioctl(11, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x2b, 0x30), 0xff8fbdd8) = 0
ioctl(11, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0xd4, 0x4), 0xff8fbe78) = 0
ioctl(11, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x2b, 0x30), 0xff8fbdd8) = 0
close(11) = 0
close(12) = 0
ioctl(0, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x2a, 0x20), 0xff8fbeb8) = -1 ENOTTY (ioctl non appropriata per il device)
write(2, "libva error: /usr/lib/i386-linux"..., 73libva error: /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so init failed
) = 73
write(2, "libva info: va_openDriver() retu"..., 38libva info: va_openDriver() returns 1
) = 38
write(2, "vaInitialize failed with error c"..., 62vaInitialize failed with error code 1 (operation failed),exit
A more complete reproducer could be with ffmpeg:i386:
$ sudo aptitde install ffmpeg:i386
$ ffmpeg -vaapi_device /dev/dri/renderD128 -i in.mp4 -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:v h264_vaapi -b:v 5M -c:a copy out_vaapi.mp4
...
[AVHWDeviceContext @ 0x5832d1c0] libva: /usr/lib/i386-linux-gnu/dri/nvidia_drv_video.so init failed
[AVHWDeviceContext @ 0x5832d1c0] Failed to initialise VAAPI connection: 1 (operation failed).
The 64bit nvidia_drv_video.so can be initialized, but it only offers the NVDEC backend, so encoding will not work anyway, even with 64bit ffmpeg:
$ sudo aptitude install vainfo:amd64
$ vainfo --display x11
Trying display: x11
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
...
Maybe Steam should try to use the ffmpeg NVENC driver directly when setting up the encoder on NVIDIA machines.
My understanding is that the expected code paths for video encoding/decoding are:
VA-API on Nvidia has never been very reliable, and it depends on a third-party VA-API module that isn't maintained by Nvidia and has a lot of external dependencies.
Similarly the Nvidia-specific interfaces mostly aren't available on non-Nvidia drivers, or if they are available, they don't work particularly well. Mesa used to have VDPAU drivers, but they were removed in 2025.
It's unfortunate that accelerated video has split into two "worlds" like this, but it is what it is.
NVENC - No CUDA support
I believe this is the real problem here: Steam is trying to use NVENC as its first-preference implementation of video encoding on Nvidia GPUs, but it didn't work, for whatever reason.
Everything involving VA-API (libva) is probably just a distraction here, because if what Steam was trying to do had worked the way it is meant to, it would never have had to fall back to VA-API.
Maybe Steam should try to use the ffmpeg NVENC driver directly
I think it already does? Notice that in the original reporter's log snippets, NVENC - No CUDA support is logged before anything that mentions VA-API.
On a multi-arch Debian system we can make it available by installing the
nvidia-vaapi-driver:i386package:
Note that even if nvidia-vaapi-driver can work on the host system, it won't work inside a pressure-vessel (Steam Linux Runtime) container. We have code that specifically ignores/disables nvidia_drv_video.so, because its dependencies include GStreamer, and pulling in all of GStreamer would defeat the ABI-stability reasons why we want to use a container.
The confusion about VAAPI came from the fact that on my system I was not getting the message:
NVENC - No CUDA support
but the first encoder Steam tried was VAAPI with nvidia_drv_video.so.
Only after I installed libnvidia-encode1:i386 I started getting the message, which now makes sense.
So this prompted another test.
NVENC is working fine with ffmpeg:amd64:
$ sudo apt-get install ffmpeg:amd64
$ ffmpeg -i in.mp4 -c:v h264_nvenc -c:a copy out_nvenc.mp4
ffmpeg version 7.1.4-0+deb13u1 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-19)
...
[out#0/mp4 @ 0x561283c78700] video:1492KiB audio:90KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.474832%
frame= 171 fps=0.0 q=36.0 Lsize= 1590KiB time=00:00:05.60 bitrate=2325.8kbits/s speed=9.13x
but it does not work with ffmpeg:i386:
$ sudo apt-get install ffmpeg:i386
$ ffmpeg -i in.mp4 -c:v h264_nvenc -c:a copy out_nvenc.mp4
ffmpeg version 7.1.4-0+deb13u1 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-19)
...
[h264_nvenc @ 0x573c0f00] dl_fn->cuda_dl->cuInit(0) failed -> CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
[vost#0:0/h264_nvenc @ 0x5740ef40] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[vf#0:0 @ 0x573c0180] Error sending frames to consumers: Unknown error occurred
[vf#0:0 @ 0x573c0180] Task finished with error code: -1313558101 (Unknown error occurred)
[vf#0:0 @ 0x573c0180] Terminating thread with return code -1313558101 (Unknown error occurred)
[vost#0:0/h264_nvenc @ 0x5740ef40] Could not open encoder before EOF
[vost#0:0/h264_nvenc @ 0x5740ef40] Task finished with error code: -22 (Invalid argument)
[vost#0:0/h264_nvenc @ 0x5740ef40] Terminating thread with return code -22 (Invalid argument)
[out#0/mp4 @ 0x5740dfc0] 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!
We get an error similar to the one from Steam, even after installing libcuda1:i386 and libcudart12:i386.
So I guess the issue is that newer Nvidia drivers/GPU don't work with i386 userspace?
It looks like cuda is phasing out 32bit support since cuda 12, in
https://nvidia.custhelp.com/app/answers/detail/a_id/5615/~/support-plan-for-32-bit-cuda in particular we can read:
CUDA Driver will not support 32-bit CUDA applications on GeForce RTX 50 series (Blackwell) and newer architectures.
And this covers at least my case, since I have an NVIDIA GeForce RTX 5070, and @Reverberation1 who seems to have a Nvidia GeForce RTX 5090, not sure about @rajasrijan.
If Steam started using a 64bit build of ffmpeg/cuda this should be solved?
If Steam started using a 64bit build of ffmpeg/cuda this should be solved?
Does it work better if you use the Steam beta client, and then enable Settings → Interface → Advanced → Use experimental SteamRT3 Steam Client? That new version is mostly 64-bit: there are still some 32-bit components, notably reaper (#13015), but the main Steam process is 64-bit.
(Be aware that the experimental client has some known regressions in other areas, many of which are being worked on - see issues labelled "SteamRT3" or "steamrt3c" on this issue tracker.)
I'm not sure offhand which process it is that actually loads the Nvidia libraries and does the encoding when Steam is acting as a streaming server. @ao2, perhaps it would be useful if you could look into that?
Switching to experimental SteamRT3 Steam Client is fixing the streaming issue, but none of the games are launching (native or proton).
Switching to
experimental SteamRT3 Steam Clientis fixing the streaming issue
That's good to hear, I think that confirms what @ao2 said about 32-bit CUDA no longer being supported for newer GPUs.
none of the games are launching (native or proton)
Please open a separate issue for that, with your system details and logs - that sounds like a different regression that should be addressed before the new client leaves this experimental phase.
As proof that NVENC works with the experimental SteamRT3 Steam client:
[2026-05-18 12:04:09][140.613233] Created encoder NVENC for codec 4
[2026-05-18 12:04:09][140.630738] Video Encoder Changed
[2026-05-18 12:04:09][140.631917] >>> Capture method set to Desktop Black Frame + NVENC H264
And in my case games launch fine when I have empty Launch Options, so @rajasrijan you might want to check that too.
I noticed that in-game streaming works with some titles like GhostRunner, but it doesn't work with some other games like Portal, but this is yet another separate issue.
Nothing extracted yet.
Your system information
Please describe your issue in as much detail as possible:
When attempting to host a Remote Play session from this Linux host to a Steam Deck, the host fails to initialise hardware encoding (
NVENC). Despite having correct drivers (v590.48.01) installed, the Steam client appears unable to locate or initialise the 32-bit CUDA/Encode libraries required for the stream.The system then attempts to initialize
VAAPIas a fallback, but this also fails. Consequently, Steam falls back to software encoding -libx264.Troubleshooting Attempted:
I have attempted the following steps to resolve the missing 32-bit library issue, but none have succeeded:
Relevant Log Snippet from streaming_log.txt:
Steps for reproducing this issue: