Bug 512605

Summary: KRDP failed if nvidia-vaapi-driver (or libva-nvidia-driver) was installed
Product: [Plasma] KRdp Reporter: Trần Nam Tuấn (Bill) <tuantran1632001>
Component: generalAssignee: Unassigned bugs <unassigned-bugs-null>
Status: REPORTED ---    
Severity: normal CC: ahiemstra, noahbartlett21, postix
Priority: NOR    
Version First Reported In: 6.5.3   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Trimmed journal
Trimmed journal when forcing libx264

Description Trần Nam Tuấn (Bill) 2025-11-25 20:04:46 UTC
Created attachment 187171 [details]
Trimmed journal

I tried connecting from my laptop to my PC and could only see a blank (sometime blue, sometime black) screen. The client was KRDC. This used to work several months ago.


SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.5.3
KDE Frameworks Version: 6.20.0
Qt Version: 6.10.0
Kernel Version: 6.17.8-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 12 × AMD Ryzen 5 3600X 6-Core Processor
Memory: 16 GiB of RAM (15.5 GiB usable)
Graphics Processor: NVIDIA GeForce GTX 1660 (nividia-open driver)
Manufacturer: Micro-Star International Co., Ltd.
Product Name: MS-7B85
System Version: 1.0
Comment 1 Trần Nam Tuấn (Bill) 2025-11-27 09:52:12 UTC
I have updated the tittle to reflect what I think to be the issue. If nvidia-vaapi-driver is installed (https://github.com/elFarto/nvidia-vaapi-driver/), the issue will occur. It's strange since this was not a problem in the past.

Without the driver installed, KRDP just fallback to using software encoding. I don't see a way to force KRDP to use software encoding, nor I can find a way to stop KRDP from using the driver.
Comment 2 Arjen Hiemstra 2025-11-27 10:27:58 UTC
You can force the software encoder with the environment variable KPIPEWIRE_FORCE_ENCODER=libx264 . As to the vaapi driver, KPipeWire prefers using hardware encoding if it is available. One possibility is that the vaapi driver now initializes correctly, which breaks KPipeWire's failure detection as that relies on the driver not properly initializing.
Comment 3 Trần Nam Tuấn (Bill) 2025-11-27 15:57:16 UTC
Created attachment 187209 [details]
Trimmed journal when forcing libx264

(In reply to Arjen Hiemstra from comment #2)
> You can force the software encoder with the environment variable KPIPEWIRE_FORCE_ENCODER=libx264 .
Unfortunately, that did not work. I could see in the journal that libx264 was forced but the same "kwin_wayland[1072]: "DP-3" Received stream buffer that does not contain user data" error message still occurred. The only way to resolve this problem was to completely remove the driver. Which I would prefer not to as it allows Firefox to use hardware decoding.
Comment 4 noah 2025-12-15 05:37:49 UTC
Would just like to add to this with output from forcing the software encoder

└─$ kinfo                     
Operating System: Arch Linux 
KDE Plasma Version: 6.5.4
KDE Frameworks Version: 6.21.0
Qt Version: 6.10.1
Kernel Version: 6.17.9-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 20 × Intel® Core™ Ultra 7 265K
Memory: 64 GiB of RAM (62.2 GiB usable)
Graphics Processor 1: NVIDIA GeForce RTX 4090/PCIe/SSE2
Graphics Processor 2: NVIDIA GeForce RTX 4090/PCIe/SSE2
                                                            

└─$ KPIPEWIRE_FORCE_ENCODER=libx264 /usr/bin/krdpserver
org.kde.krdp: Listening for connections on QHostAddress(QHostAddress::Any) 3390
qt.qpa.services: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.kde.krdp-server'")
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: *************************************************
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: This build is using [experimental] build options:
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: * 'WITH_VAAPI=ON'
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: *
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: [experimental] build options might crash the application
[22:28:47:359] [282158:00044e2e] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x559355507de0]: *************************************************
org.kde.krdp: Session setup completed, start processing...
org.kde.krdp: New client connected:  UNIX platform Native X Server
org.kde.krdp: Attempting authenticating user with PAM
org.kde.krdp: PAM authentication succeeded for user "noah"
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QApplication(0x7fffefd5cdd0), parent's thread is QThread(0x559355128400), current thread is QThread(0x7f5080001040)
org.kde.krdp: Video stream initialized
org.kde.krdp: Initializing Freedesktop Portal Session
org.kde.krdp: Received caps:
org.kde.krdp:   RDPGFX_CAPVERSION_8 AVC: false YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_81 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_10 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_101 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_102 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_103 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_104 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_105 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_106 AVC: true YUV420: true
org.kde.krdp:   UNKNOWN_VERSION AVC: false YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_107 AVC: true YUV420: true
org.kde.krdp: Selected caps: RDPGFX_CAPVERSION_107
org.kde.krdp: Started Freedesktop Portal session
kpipewire_vaapi_logging: VAAPI: VA-API NVDEC driver [direct backend] in use for device "/dev/dri/renderD128"
kpipewire_record_logging: Forcing encoder to "libx264"
[libx264 @ 0x7f505c061b00] -qscale is ignored, -crf is recommended.
[libx264 @ 0x7f505c061b00] MB rate (33600000) > level limit (16711680)
[libx264 @ 0x7f505c061b00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f505c061b00] profile Constrained Baseline, level 6.2, 4:2:0, 8-bit
[22:29:13:213] [282158:00044e70] [ERROR][com.freerdp.core.transport] - [transport_read_layer]: BIO_read retries exceeded
[22:29:13:213] [282158:00044e70] [ERROR][com.freerdp.core.peer] - [transport_read_layer]: ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]
org.kde.krdp: Unable to check file descriptor
org.kde.krdp: Closing session
org.kde.krdp: Closing Freedesktop Portal Session
^C                                            

same issue - just figured I'd try and add some extra context. It does at least look like it uses the software encoding, but the behavior remains unchanged. I have also tried this on a 3070.

Found this worked though (with logs)
└─$   LIBVA_DRIVERS_PATH=/nonexistent \
  LIBVA_DRIVER_NAME=dummy \
  KPIPEWIRE_FORCE_ENCODER=libx264 \
  /usr/bin/krdpserver

org.kde.krdp: Listening for connections on QHostAddress(QHostAddress::Any) 3390
qt.qpa.services: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.kde.krdp-server'")
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: *************************************************
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: This build is using [experimental] build options:
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: * 'WITH_VAAPI=ON'
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: *
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: [experimental] build options might crash the application
[22:35:05:414] [284264:00045668] [WARN][com.freerdp.core.rdp] - [log_build_warn][0x5560d21cd900]: *************************************************
org.kde.krdp: Session setup completed, start processing...
org.kde.krdp: New client connected:  UNIX platform Native X Server
org.kde.krdp: Attempting authenticating user with PAM
org.kde.krdp: PAM authentication succeeded for user "noah"
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QApplication(0x7fff1807f7d0), parent's thread is QThread(0x5560d1dee400), current thread is QThread(0x7f49e4001040)
org.kde.krdp: Video stream initialized
org.kde.krdp: Initializing Freedesktop Portal Session
org.kde.krdp: Started Freedesktop Portal session
kpipewire_vaapi_logging: VAAPI: Failed to initialize display
kpipewire_vaapi_logging: VAAPI: Failed to initialize display
kpipewire_vaapi_logging: DRM device not found
org.kde.krdp: Received caps:
org.kde.krdp:   RDPGFX_CAPVERSION_8 AVC: false YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_81 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_10 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_101 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_102 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_103 AVC: true YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_104 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_105 AVC: true YUV420: true
org.kde.krdp:   RDPGFX_CAPVERSION_106 AVC: true YUV420: true
org.kde.krdp:   UNKNOWN_VERSION AVC: false YUV420: false
org.kde.krdp:   RDPGFX_CAPVERSION_107 AVC: true YUV420: true
org.kde.krdp: Selected caps: RDPGFX_CAPVERSION_107
kpipewire_record_logging: Forcing encoder to "libx264"
[libx264 @ 0x7f49dc061dc0] -qscale is ignored, -crf is recommended.
[libx264 @ 0x7f49dc061dc0] MB rate (33600000) > level limit (16711680)
[libx264 @ 0x7f49dc061dc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f49dc061dc0] profile Constrained Baseline, level 6.2, 4:2:0, 8-bit
kpipewire_dmabuf_logging: eglChooseConfig returned this many configs: 1
[22:35:18:775] [284264:000456ab] [ERROR][com.freerdp.core.transport] - [transport_read_layer]: BIO_read retries exceeded
[22:35:18:775] [284264:000456ab] [ERROR][com.freerdp.core.peer] - [transport_read_layer]: ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]
org.kde.krdp: Unable to check file descriptor
org.kde.krdp: Closing session
org.kde.krdp: Closing Freedesktop Portal Session
[libx264 @ 0x7f49dc061dc0] frame I:2     Avg QP:17.50  size:1294826
[libx264 @ 0x7f49dc061dc0] frame P:122   Avg QP:17.92  size:  7992
[libx264 @ 0x7f49dc061dc0] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264 @ 0x7f49dc061dc0] mb P  I16..4:  0.1%  0.0%  0.0%  P16..4:  6.5%  0.0%  0.0%  0.0%  0.0%    skip:93.5%
[libx264 @ 0x7f49dc061dc0] coded y,uvDC,uvAC intra: 43.7% 39.7% 38.2% inter: 0.3% 6.1% 0.1%
[libx264 @ 0x7f49dc061dc0] i16 v,h,dc,p: 54% 23% 17%  6%
[libx264 @ 0x7f49dc061dc0] i8c dc,h,v,p: 72% 18%  7%  4%
[libx264 @ 0x7f49dc061dc0] kb/s:229978.95
^C                                                 

cheers!