protonscr

Kingdom Come: Deliverance II

protonopen appid 1771300Game compatibility - UnofficialRegressionXAudio2
ValveSoftware/Proton#8727 · opened 2025-05-23 by D-Studio-21th · updated 2026-08-23 · 23 comments · github · game page · search this game
DD-Studio-21th 2025-05-23 github

Compatibility Report

  • Name of the game with compatibility issues: Kingdom Come Deliverance 2
  • Steam AppID of the game: 1771300

System Information

I confirm:

  • [V] that I haven't found an existing compatibility report for this game.
  • [V] that I have checked whether there are updates for my system available.

steam-1771300.log

Symptoms

After 5 minutes of playing, the game starts freezing.

Reproduction

SSeud 2025-06-07 github

I have a different issue with this game and was told to post it here.

EDIT : Thanks to @JacobSvenningsen I also upgraded Mesa to 25.1.2 and the issue seems to have disappeared !

System Information

OS : Debian Trixie (13)
CPU : AMD Ryzen 7 9800X3D
GPU : AMD RX 7800 XT
Mesa version : 25.0.5 [Issue fixed with 25.1.2]
Kernel version : 6.12.27
Proton version : Tested with 9.0.4, Experimental and Hotfix
Game version : 1.3.2 (Latest)
No mods used
Steam Runtime System Information

Description

I purchased the game around the end of April and enjoyed it bug-free for around a week, then I did a system update and since then, every time I load the game, a single PAK file will fail to load entirely. In game this means missing textures and models (showing as white blobs), and occasionally crashes during loading if it hits a critical file.

In the logs, this shows as a plethora of lines with "[ERROR] ReadFile returned 1". But the truly bizarre part of the bug ? Every time the game is launched, the affected PAK file changes, meaning a whole new set of corrupted textures. And of course the previously affected PAK file miraculously works again so it's not a matter of corrupted files.

Affected files (for now)

data\characters.pak
data\hlod_prefab.pak
data\ipl_characters-part2.pak
data\ipl_characters-part3.pak
data\ipl_objects-part0.pak
data\ipl_objects-part1.pak
data\ipl_objects-part3.pak
data\ipl_objects-part4.pak

Reproduction

Start a new game or load a save

Things I tried

  • System updates
  • Validating game files (including deleting all PAK files to force re-download)
  • Purging shader cache

Examples

Launch No 1 (Notice the missing texture on the guard)
Image
Game log

Launch No 2 (Notice the missing texture for the road, buildings and vegetation in the center)
Image
Game log

Additional files

Proton log
DPKG log of the related update

JJacobSvenningsen 2025-06-08 github

Managed to resolve it.
Went ahead and followed some bad practice and installed the mesa packages from Kisak PPA, bringing Mesa to 25.1.2
Currently it's working using that version of Mesa and using Proton 10.0-1 (beta).

Original post:

I have a different issue which prevents the game from working altogether.

System Information

OS : Debian Sid
CPU : AMD Ryzen 9 7900X3D
GPU : AMD RX 7800 XT
Mesa version : Initially 25.0.5-2. Then upgraded to 25.1.0-1
Kernel version : Initially 6.12.30-1. Then tried upgrading to 6.15.1
Proton version : Tested with 9.0.4, 10.0-1 (beta), Experimental, Hotfix and even Glorious Eggroll 10-4
Game version : 1.3.2 (Latest)
System diagnostics

Description

Back in February and March, I played the game extensively with no real issue, but trying to run the game again yesterday, I'm greeted with one of three outcomes:

  • The splashscreen shows up and nothing more happens
  • A black screen pops up. Alt-tabbing reveals the splashscreen is still present
  • Intro logos are being displayed and as soon as the EULA, DLC screen information, or the main menu is reached, it freezes.

When the last outcome occurs, the music is still playing and the cursor can be moved. Pressing one of the buttons, plays a sound which could indicate that the button was actually pressed.
It feels driver related, and it might not be Proton specific. Scouring the internet, it seems Windows users are reporting similar issues, which sometimes are reported to be fixed by a reboot, removing the game's shader cache or a driver update. Deleting the game's shader cache can lead to the last outcome (freeze at main menu) to become more likely, but doesn't resolve anything.

Tried upgrading mesa, the kernel, tried different proton version and reinstalling the game to another drive.

Additional files

Log when the main menu is reached
vulkaninfo
kcd.log
kcd_launcher.log

SSeud 2025-06-08 github

Managed to resolve it. Went ahead and followed some bad practice and installed the mesa packages from Kisak PPA, bringing Mesa to 25.1.2 Currently it's working using that version of Mesa and using Proton 10.0-1 (beta).

Holy crap you just fixed my issue too ! Looks like it is a problem with Mesa 25.0 then.

Kkisak-valve maintainer 2025-10-22 github

Kingdom Come: Deliverance II – freeze after Maleshov exit cutscene

Issue transferred from https://github.com/ValveSoftware/Proton/issues/9128.
@NoahPladys posted on 2025-10-22T21:59:34:

Compatibility Report

  • Name of the game with compatibility issues: Kingdom Come: Deliverance II
  • Steam AppID of the game: 1771300

System Information

  • GPU: Nvidia RTX 5070 Ti
  • Video driver version: 580.95.05 (also tested 580.82.09)
  • Kernel version: Linux 6.17.3-arch2-1
  • Link to full system information report as Gist: System Info Runtime Report
  • Proton version: Proton Experimental, (also Proton Hotfix, Proton 9.0 - 4, Proton-GE 10-21)

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Symptoms

When exiting the game at Maleshov, it is supposed to play a cutscene, fade to black, and fade into a new cutscene. I get the first cutscene, a fade to black (followed by a ~2 second freeze of any video on my pc, e.g. a youtube video playing on my second monitor), and then just that same black screen for the entirety of the session. At this point there is nothing to do and I have to close the game. Skipping the cutscene before it has finished works and just bring you right back in the game. Seems like it just breaks on the cutscene transition.

Reproduction

Just exit the gate at Maleshov after clearing the guards and signalling Capon to come down. Do not skip the cutscene

Troubleshooting attempted

  • Verified game files
  • Switched Proton versions (Experimental, Hotfix, 9.0, GE 10-21)
  • Cleared shadercache + rebuilt prefix
  • Tried both driver versions 580.95 ↔ 580.82.09
  • Disabled NVAPI (DXVK_ENABLE_NVAPI=0)
  • Enabled PROTON_MEDIA_USE_GST=1

One exception that kind of fixed it (but made the game unplayable), is forcing DX11 with PROTON_USE_DXVK=1 DXVK_ASYNC=1 %command% -dx11. This gave me a black screen, but by blindly clicking and moving to the gate, I managed to start the cutscene and by the audio of the clips I heard that the second clip started playing, so it must be something with DX12

Ttapionx 2025-12-13 github

the bluetooth Xbox controller is not seen by the game

SSamPurple22 2025-12-14 github

Same here on Arch Linux with Proton 10.0-3. Steam input is disabled.
Connected Gulikit ES Pro controller (Xbox controller) via Bluetooth or USB cable does not work in game, seems related to the last patch, according to this thread

A workaround for now is launching the game with:

SteamDeck=1 %command%

My Dualsense controller works OK, both via Bluetooth or USB cable.

Mmorvael 2025-12-15 github

Indeed, the controller doesn't work on Linux, and Warhorse will likely not address it, as it's unsupported platform, so all hope in Proton.

Ggrodius 2025-12-27 github

Considering the growth of steamos and the new steam machine I'd think they would put some resources into supporting linux.

I can use ge proton 9-27 with SteamDeck=1 %command% but using proton 9 for whatever reason causes laggyness that I don't see in proton 10 with kb/mouse.

Kkisak-valve maintainer 2025-12-30 github

Kingdom Come Deliverance 2 - Xbox Controller not recognized, PS5 controller is.

Issue transferred from https://github.com/ValveSoftware/Proton/issues/9350.
@fsyy posted on 2025-12-30T17:27:18:

Compatibility Report

  • Name of the game with compatibility issues: Kingdome Come Deliverance 2
  • Steam AppID of the game:

steam-1771300.log

1771300

System Information

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Symptoms

KCD2 started to not recognizing my xbox controller anymore. I tried updating to latest firmware of the controller, which did not help. Disabling/Enabling steam input did not help. But in the game settings in the controller submenu, it said mouse and scrolling down Dual Sense (no dual sense connected). So i plugged in my PS5 controller and voila, it worked.

Edit: I forgot to add that i did not see that behaviour in any other games i play with the xbox controllers.

Reproduction

I do not exactly know how to reproduce, it suddenly occured. On my system it is reproducible using either (lsusb) this: Microsoft Corp. Xbox One Controller nor that one: Microsoft Corp. Xbox Controller.

Support of developer stops when they hear linux.

Ffsyy 2025-12-30 github

i see there is more xbox issues. As a sidenote, i'm using both of them with an usb cable.

Kkisak-valve maintainer 2026-01-28 github

CryEngine DX12 rendering regression on NVIDIA Turing (GTX 1650) after Proton Experimental 10.0-4

Issue transferred from https://github.com/ValveSoftware/Proton/issues/9445.
@sorenfrey-blip posted on 2026-01-28T18:56:12:

After updating Proton Experimental from 10.0-3 to 10.0-4, Kingdom Come: Deliverance II exhibits severe DX12 rendering issues on NVIDIA Turing GPUs (GTX 1650). Symptoms include missing terrain, broken depth buffer (seeing sky/stars through ground), untextured buildings, simplified/repeating landscape, and intermittent map streaming failures.

The issue did not start abruptly with the update; intermittent fallback rendering and streaming issues were already present several days earlier, but Proton Experimental 10.0-4 made the issue persistent and severe.

OS: Linux Mint 22.x (Ubuntu 24.04 base)
Kernel: 6.14.x
GPU: NVIDIA GeForce GTX 1650 (Turing)
Driver: NVIDIA 535.274.02
CPU: Intel i5-9300H
RAM: 16 GB
Display Server: X11

Proton Experimental 10.0-4 (regression)
Proton Experimental 10.0-3 (worked acceptably, intermittent issues only)
Proton 9.x (launches, visuals degraded)
GE-Proton 10-29 (fails with D3D feature level 12.0 error)

Kingdom Come: Deliverance II
DX12 via vkd3d-proton

I confirm:

  • [✓ ] that I haven't found an existing compatibility report for this game.
  • [ ✓] that I have checked whether there are updates for my system available.

Symptoms

  • Terrain not rendering or partially missing
  • Sky/stars visible through ground
  • Buildings rendering without textures (smooth placeholder materials)
  • Landscape appearing overly simplified or repeated
  • World map sometimes failing to load
  • Behavior varies between launches (timing-dependent)
  • No GPU crashes or system instability

Reproduction

  1. Use NVIDIA GTX 1650 with driver 535.274.02
  2. Launch Kingdom Come: Deliverance II with Proton Experimental >= 10.0-4
  3. Start or load a game
  4. Observe terrain, depth, and texture behavior

Expected results
Correct terrain rendering, stable depth buffer, proper texture streaming, and reliable map loading.

Actual Result
Broken depth buffer, missing terrain, fallback geometry/materials, inconsistent map streaming.

Workarounds Tried
: Clearing all shader and pipeline caches

  • Reinstalling the game
  • Switching Proton versions
  • GE-Proton with NVAPI enabled
  • Disabling esync/fsync (stabilizes launch and saves, does not fix visuals)
  • Forcing DX11 (crashes)

Regression
Yes. Proton Experimental 10.0-3 worked better. Regression observed after update to 10.0-4.

Additional Notes
GPU and driver verified healthy (nvidia-smi, glmark2).
Other Vulkan/DXVK titles work correctly.
Appears to be a vkd3d-proton + CryEngine DX12 regression affecting NVIDIA Turing GPUs.

Kkisak-valve maintainer 2026-01-28 github

Hello @sorenfrey-blip, please add PROTON_LOG=1 %command% to the game's launch options, reproduce the regression, and attach the generated $HOME/steam-$APPID.log to this issue report as a file. (Proton logs compress well if needed.) Also, please copy the contents of Steam Runtime Diagnostics from Steam (Steam -> Help -> Steam Runtime Diagnostics) and put it in a gist, then include a link to the gist in this issue report.

A screenshot or two of the misrendering would also be useful. It might be interesting to check how the game behaves with a more recent NVIDIA driver series.

Ssorenfrey-blip 2026-01-29 github
Ssorenfrey-blip 2026-01-29 github
Image Image Image Image Image
Ssorenfrey-blip 2026-01-30 github

Updating gfx driver worked

SSprtnDio 2026-02-27 github

Controller workaround, works for my Handheld with Nobara, should work on other devices too.
https://github.com/SprtnDio/kcd2controllerfix_linux_handheld

Kkisak-valve maintainer 2026-04-10 github

Kingdom Come: Deliverance II (1771300) — camera flies uncontrollably due to dinput8 MOUSE_VIRTUAL_DESKTOP fixme

Issue transferred from https://github.com/ValveSoftware/Proton/issues/9655.
@Dr-Obek posted on 2026-04-10T13:13:14:

Compatibility Report

  • Name of the game with compatibility issues: Kingdom Come: Deliverance II
  • Steam AppID of the game: 1771300

System Information

  • GPU: NVIDIA GeForce RTX 5070 Laptop GPU (8 GB VRAM)
  • Video driver version: NVIDIA 580.126.18 (open), OpenGL 4.6
  • Kernel version: 6.18.7-76061807-generic
  • Link to full system information report as [Gist](https://gist.github.com/):
  • Proton version: Tested with Proton Experimental (10.1000-200) and Proton 10.0-4 — both affected
  • OS: Pop!_OS 24.04 LTS (COSMIC desktop, Wayland-only)
  • CPU: AMD Ryzen AI 9 HX 370 (24 logical / 12 physical)
  • Hardware: Framework Laptop 16

I confirm:

  • [x] that I haven't found an existing compatibility report for this game. (Note: #8727 exists for KCD2 but covers a different issue — freezing after 5 minutes, not mouse/camera input.)
  • [x] that I have checked whether there are updates for my system available.

Symptoms

Camera/mouse input is intermittently broken. On some launches, the camera flies uncontrollably when touching the mouse. On other launches, mouse works perfectly. The issue occurs on both native Wayland and XWayland (PROTON_USE_WAYLAND=0).

Root cause: Wine's dinput_mouse_rawinput_hook intercepts WM_INPUT messages and returns absolute screen coordinates instead of relative deltas via the unimplemented MOUSE_VIRTUAL_DESKTOP flag.

The game registers raw input for mouse via its own code (RegisterRawInputDevices, usage 0x2) AND creates a DirectInput8 mouse device. Wine's dinput8 installs a WH_INPUT hook that intercepts WM_INPUT before the game's own handler processes them. The hook has a known unimplemented MOUSE_VIRTUAL_DESKTOP flag (fixme) which causes absolute coordinates to be reported as relative deltas (inferred from behavior: values accumulate ~1320/frame, consistent with cursor position being added each frame).

The issue is intermittent — it appears to depend on focus timing during startup. When the dinput8 mouse device is not acquired (e.g., window doesn't have focus at the right moment), the WH_INPUT hook doesn't process mouse messages, and the game's own raw input handler works correctly.

Reproduction

  1. Install KCD2 on a Wayland Linux system (Pop!_OS 24.04 LTS, COSMIC compositor)
  2. Launch the game repeatedly
  3. On some launches, the camera immediately flies upward/sideways uncontrollably when touching the mouse
  4. On other launches, mouse works perfectly

Broken Launch — Wine Debug Trace

Launch options: WINEDEBUG=+rawinput,+dinput,+event %command%

Full debug log attached. Key sequence:

1. Focus established on game window:

0130:trace:event:set_focus setting foreground window to 0x100dc
0130:trace:event:X11DRV_FocusIn window 0x100dc/6600004 FocusIn serial 290

2. DirectInput creates mouse device with DISCL_FOREGROUND:

0130:trace:dinput:mouse_create_device dinput ..., guid {6f1d2b60-...}
0130:trace:dinput:_dump_cooperativelevel_DI  cooperative level : DISCL_FOREGROUND DISCL_NONEXCLUSIVE

3. Game thread registers raw input for mouse:

02b4:trace:rawinput:NtUserRegisterRawInputDevices device 0: page 0x1, usage 0x2, flags 0, target 0x200aa.

4. dinput's WH_INPUT hook immediately intercepts with broken absolute coordinates:

02b4:trace:dinput:dinput_mouse_rawinput_hook iface ..., wparam 0, lparam 0x14, ri ...
02b4:fixme:dinput:dinput_mouse_rawinput_hook Unimplemented MOUSE_VIRTUAL_DESKTOP flag
02b4:trace:dinput:dinput_mouse_rawinput_hook buttons 00 00 00 00 00, x -404, y -578, w +0

Values accumulate every frame (x -376, x -750, x -1126...). These appear to be absolute cursor positions, not relative deltas.

Working Launch

When the game works correctly, dinput_mouse_rawinput_hook is never called. The game's own raw input handler processes WM_INPUT directly without dinput8 intercepting.

The difference is likely focus timing: if the dinput8 mouse device is not acquired when WM_INPUT messages arrive, the hook doesn't process them, and the game works correctly. This has not been conclusively proven.

Analysis

  1. dinput_mouse_rawinput_hook in dlls/dinput/mouse.c has MOUSE_VIRTUAL_DESKTOP marked as fixme — unimplemented
  2. When the flag is set, raw input data appears to contain absolute screen coordinates, but the hook likely treats them as relative deltas (inferred from behavior: values accumulate ~1320/frame, consistent with cursor position being added each frame)
  3. The game uses BOTH dinput8 mouse AND its own RegisterRawInputDevices for mouse (usage 0x2)
  4. Wine's dinput8 WH_INPUT hook intercepts WM_INPUT messages before the game's handler
  5. Whether this happens appears to depend on DISCL_FOREGROUND acquisition timing — likely a race condition during startup (in working launches the hook never fires; in broken launches it fires immediately)

Workarounds Attempted (None Effective)

  • PROTON_USE_WAYLAND=0 (XWayland) — same bug
  • WINEDLLOVERRIDES="dinput8=d" — game fails to load WHGame.dll
  • WINEDLLOVERRIDES="dinput8=n" — only 32-bit native available via winetricks, game is 64-bit
  • WINEDLLOVERRIDES="dinput8=b" — same as default
  • Wine registry HKCU\Software\\Wine\\DirectInput\\RawInput=disable — not respected
  • Wine registry MouseWarpOverride=enable/force — no effect
  • CryEngine cvar i_mouse_buffered 1 — doesn't fix at runtime
  • Deleting shader cache — changes startup timing, sometimes avoids the race condition temporarily
  • Resetting Wine prefix — no effect

Suggested Fix

Implement MOUSE_VIRTUAL_DESKTOP flag handling in dinput_mouse_rawinput_hook (dlls/dinput/mouse.c). When the flag is present, the raw input data contains absolute coordinates and should be converted to relative deltas (current position minus previous position) before being passed to the game.

Alternatively, prevent dinput8's WH_INPUT hook from intercepting WM_INPUT messages when the game has registered its own raw input handler for the same device via RegisterRawInputDevices.


@Dr-Obek commented on 2026-04-10T13:14:48:

DDr-Obek 2026-04-10 github

I'm experiencing the same freeze symptom. Game runs fine for ~10-60 minutes, then the image freezes while audio continues playing. No Xid errors in kernel logs, no OOM, no compositor crash.

System

  • Framework Laptop 16, AMD Ryzen AI 9 HX 370, NVIDIA RTX 5070 Laptop GPU (8 GB VRAM)
  • NVIDIA 580.126.18 (open), kernel 6.18.7-76061807-generic
  • Pop!_OS 24.04 LTS (COSMIC, Wayland)
  • Proton Experimental (10.1000-200) and Proton 10.0-4 — both affected
  • Game settings: Ultra, 2560x1600, DLSS upscaling, vsync on

GPU monitoring data during freeze

I ran nvidia-smi polling every 5 seconds. The freeze pattern is clear:

timestamp,                  memory.used, temperature.gpu, utilization.gpu
2026/04/06 15:26:49.567,    6296 MiB,    51,              51 %    ← normal gameplay
2026/04/06 15:26:54.591,    6296 MiB,    59,             100 %    ← freeze starts here
2026/04/06 15:27:04.637,    6296 MiB,    63,             100 %
2026/04/06 15:27:34.774,    6296 MiB,    66,             100 %    ← peak temp
2026/04/06 15:28:14.941,    6296 MiB,    47,             100 %    ← temp dropping
2026/04/06 15:29:55.312,    6296 MiB,    42,             100 %    ← still 100% but cold

Key observations:

  • GPU jumps from ~50% to 100% utilization at the moment of freeze
  • VRAM stays constant at 6296 MiB (not hitting the 8 GB limit)
  • Temperature drops from 66°C to 42°C while utilization stays at 100% — the GPU reports busy but isn't actually computing (silent hang)
  • No Xid errors in dmesg or journalctl
  • kernel.split_lock_mitigate=0 did not help

This looks like a silent GPU hang in the Vulkan presentation/submit path — the GPU is stuck in a loop reporting 100% but doing no real work.

OOreo412 2026-04-29 github

Compatibility Report

  • Name of the game with compatibility issues: Kingdom Come Deliverance 2
  • Steam AppID of the game: 1771300

System Information

I confirm:

  • [x] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available.

Symptoms

When starting the game, it will most likely crash sometime between starting and about a minute into the game. If I can get past about a minute of actually being loaded into a save, it'll work perfectly fine for however long I play it. I've played the game for hours without any issue once I've gotten past that initial chance of it crashing. I often have to restart my PC many times though to be able to get past that initial chance.

Reproduction

Every time I start the game, there's a chance that it crashes

KKarolisGl 2026-08-23 github

KCD2 controller bug — root cause found (Microsoft GameInput service fails under Proton/Wine)

This is a follow-up on the long-running controller thread. I found what appears to be the actual root cause of why no Xbox/compatible controller works in KCD2 1.5.6 under Proton, and it explains why the SteamDeck=1 / physical-DualSense workarounds behave as they do.

Summary

KCD2 (1.5.6, here the GOG build via a Steam non-Steam shortcut / Heroic, same .exe) uses the Microsoft GameInput API through its WhGdk.dll. Microsoft's GameInput redistributable is explicitly "Wine-aware" (v2.0+), and the real runtime does load under Proton when the redistributable is installed into the game's active prefix. However, its companion GameInputRedistService.exe starts and then immediately exits because it depends on Windows components Wine/Proton does not provide. Because the service cannot stay running, GameInput enumerates zero devices, and the game permanently reports:

Input device added: 4, controller type: 3, is connected: 0, name: 'xinput0'
Input device added: 4, controller type: 4, is connected: 0, name: 'scepad0'

No controller (real or uinput/uhid-emulated; Xbox, DualSense, Steam Deck presentation, or Steam Input) can be enumerated through this path.

Evidence (from WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput, attached log)

The controller itself enumerates correctly at Wine's HID/SDL level (here an emulated DualSense 054c:0ce6 emitting valid 64-byte HID input reports to /dev/hidraw9):

hid:hidraw_device_create ... /dev/hidraw9, desc {vid 054c, pid 0ce6 ...}
hid:bus_main_thread creating hidraw device 054c:0ce6 with usages 0001:0005
hid:sdl_add_device controller id 0 ... desc {vid 054c, pid 0ce6 ... is_gamepad 1}

With the real GameInput redist installed and gameinput.dll overridden to native, the Wine stub message (fixme:ginput:GameInputCreate ... stub!) disappears and GameInputRedistService.exe starts:

PE ... Deferred gameinputredistservice
00000064 (D) C:\Program Files\Microsoft GameInput\x64\GameInputRedistService.exe

But the service then exits. Its dependencies fail:

fixme:combase:RoGetActivationFactory (L"WindowsUdk.Services.OneSettings.OneSettingsManager", {1ea95298-8257-597f-ac75-a3052e439cab}, ...): semi-stub
err:combase:RoGetActivationFactory Failed to find library for L"WindowsUdk.Services.OneSettings.OneSettingsManager"
err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\winebth": c0000142
fixme:service:scmdatabase_autostart_services Auto-start service L"winebth" failed to start: 1114

Result: GameInputRedistService cannot stay running, so the GameInput runtime enumerates no devices and the game never marks a pad connected.

Why the workarounds behave the way they do

  • Physical DualSense works / Xbox doesn't (seen across this thread): the game has a separate Sony path (scepad0) that reads the DualSense via HID directly; Xbox controllers have no such alternate path and are fully dependent on the GameInput service. So a real DualSense bypasses the broken service, but no Xbox controller can.
  • SteamDeck=1 does not make the game enumerate a controller — it only toggles a UI/input-layout flag. It does not fix the GameInput service.

Suggested fix direction

  1. Provide a Wine stub/implementation for WindowsUdk.Services.OneSettings.OneSettingsManager (or make the GameInput service tolerate its absence rather than exiting).
  2. Fix winebth (Bluetooth HID host driver) so it loads and reports HID devices.
  3. Alternatively, implement Wine's own GameInputCreate to enumerate HID/SDL gamepads directly, bypassing the native service requirement.

Note on the prefix

The GOG game here actually runs in a nested prefix (compatdata/2798862691/pfx/pfx/, the inner pfx), not the outer pfx. DLL overrides and the GameInput redist must be placed in the inner prefix for them to take effect. This is easy to miss and may affect other reports.

Attached: steam-2798862691.log.gz (full WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput trace, gzipped).

KKarolisGl 2026-08-23 github

Full WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput trace from the root-cause run (gzipped, base64-encoded):

https://gist.github.com/KarolisGl/ccd99e7a8932d03661f909e7984310d3

Decode with:

curl -L <gist-raw-url> | base64 -d > steam-2798862691.log.gz && gunzip steam-2798862691.log.gz
KKarolisGl 2026-08-23 github

Follow-up: verified working fix (DualSense emulation + enabling hidraw)

Following my earlier post on the GameInput service: I now have a verified working fix on KCD2 1.5.6 (GOG build via Steam non-Steam shortcut / Heroic). Input works in-game. It does not require fixing the GameInput service — it routes input through the game's separate Sony (scepad0) path instead.

What works

Two parts are required together:

  1. Present an Xbox controller as a native DualSense using InputPlumber's ds5 UHID target. This creates a real Sony Interactive Entertainment DualSense Wireless Controller (054c:0ce6) + /dev/hidraw node with valid 64-byte HID reports.

  2. Enable hidraw in the prefix — Proton ships DisableHidraw=1 (SDL-only) by default, which hides Sony devices from Wine's native hidraw path. Set it to 0:

    • $PREFIX/pfx/system.reg, key [System\\ControlSet001\\Services\\winebus]
    • "DisableHidraw"=dword:00000000

With both, kcd.log changes from scepad0 ... connected: 0 to:

CScePad::SetControllerType(), m_ControllerType: DualSense

and the pad connects and works in-game.

Why this matches the thread's observations

  • A physical DualSense works because the game reads Sony pads via HID (scepad0); hidraw is exactly that path. The emulated DualSense satisfies the same path.
  • Xbox controllers fail because the game has no working Sony path for them and the Xbox/GameInput path is broken — this fix sidesteps both by turning the Xbox into a DualSense.

Notes / caveats

  • PS button prompts appear in-game (the game detects a real DualSense identity). controls_force_xbox_layout=1 in attributes.xml does not override this — KCD2 has full native DualSense support and uses PS prompts whenever it detects the Sony device. There is no config that shows Xbox prompts while a DualSense identity is connected.
  • InputPlumber's ds5 UHID target binds to a real udev-backed controller. A pure uinput virtual source is not bound by the udev dev_node matcher.
  • Full step-by-step (including running InputPlumber as a normal user via an isolated D-Bus session): see https://github.com/SprtnDio/kcd2controllerfix_linux_handheld for the profile approach + the DisableHidraw=0 registry change above.

Hope this saves someone the multi-week rabbit hole.