Dual Sense #5303
InquiringMinds-AI
started this conversation in
General
Dual Sense
#5303
Replies: 1 comment
|
The issue of gamepads not working stems from incorrect data being read from the device due to bitness checks in the kernel. Asahi Linux runs a kernel patch to work around the problem. FEX can't solve this problem from userspace. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
So, I was on the canonical snap, but i decided i wanted to get a fresher version of FEX to see if it would solve for problems I was having. I can immediately tell that things are faster loading and.. smoother? but, my dual sense controller is being detected and read by steam, but not the games. so, I set Claude Code on figuring it out, and after trying alot of things, we got it working. Here's the report on that which I asked Claude Code for.
Fix: DualSense (PS5) Controller Not Working in Proton Games Under FEX-Emu
Problem
When running Steam via FEX-Emu on ARM64 (e.g., NVIDIA DGX Spark, Snapdragon X, other aarch64 devices), the DualSense controller is detected by Steam — the controller test screen shows all inputs correctly — but no Proton/Wine games receive controller input. This happens regardless of whether Steam Input is enabled or disabled.
Environment
ppa:fex-emu/fex)steam-launcherpackage)Root Cause
Wine's
winebus.syshas two backends for detecting controllers:/dev/hidraw*and registers it withis_gamepad = 0is_gamepad = 1Under FEX-Emu, the SDL backend fails to create its device after the hidraw backend has already registered the controller. The failure appears to be specific to running under FEX's x86-64 emulation — the same Proton versions work fine on native x86-64.
Since the hidraw backend registered the controller with
is_gamepad = 0, Windows games using XInput, DirectInput, or Windows.Gaming.Input APIs don't see a gamepad. The controller exists in Wine's HID subsystem but is not recognized as a game controller.Diagnosis
You can confirm this is your issue by launching a game with debug logging:
In
~/steam-APPID.log, look for:If you see the SDL backend failing to create the device while hidraw succeeded with
is_gamepad 0, this fix applies to you.Fix
Disable Wine's hidraw backend so that SDL is the sole controller handler. This is done by adding a registry key to each Proton prefix.
Manual Fix (Single Game)
Edit the file:
Find the section:
Add this line inside that section:
Script Fix (All Games)
Save this as
fix-proton-controllers.shand run it:Re-run this script whenever you install a new game, as new Proton prefixes won't have the fix.
Notes
Additional FEX + Steam Tips
~/.fex-emu/Config.jsonfor GPU acceleration:{ "Config": { "RootFS": "Ubuntu_24_04.sqsh", "ThunkConfig": "/usr/share/fex-emu/ThunksDB.json" }, "ThunksDB": { "GL": 1, "Vulkan": 1, "drm": 1 } }wrong ELF class: ELFCLASS64). For games that freeze or crash on video playback, add to launch options:kernel.apparmor_restrict_unprivileged_userns=0on Ubuntu 24.04. Set via:All reactions