Skip to content

Steam Deck controller not detected by SDL 3.2.24/sdl2-compat 2.32.56 and older Wine versions #14410

Description

@casasfernando

I'm launching games from Steam through Heroic Games Launcher (flatpak) on my Steam Deck and found that since last Heroic flatpak update (Freedesktop runtime 25.08 using SDL versions from the title), Steam Input is not working anymore (no inputs registered in Wine).
I'm using WineGE-8-26 as the compatibility layer and this setup was working fine with Freedesktop runtime 23.08 (SDL 2.28) but then it broke with Freedesktop runtime 24.08 (SDL 2.30) and remains broken on Freedesktop runtime 25.08 (SDL 3.2.24/sdl2-compat 2.32.56): https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/issues/1818

I tried to troubleshoot the problem by enabling SDL logging and it looks like the problem is SDL can't detect Steam Input's virtual controller (apologies if I'm not using the correct terminology). If I connect a PS4 controller to the Steam Deck and leave Steam Input enabled for it, SDL does detect the PS4 controller but since it's filtered/blacklisted (SDL_GAMECONTROLLER_IGNORE_DEVICES env var) by Steam Input it's not enabling it. If I disable Steam Input and the game supports the controller then it will work but unfortunately Steam Input is required for the Steam Deck controls and also for Steam Controller to work and can't be disabled.
In Wine log I saw the messages below (I can provide the full log if needed):

0090:trace:hid:bus_main_thread L"SDL" main loop starting
0090:trace:hid:sdl_bus_init args 0xdcf6a0
sdl2-compat 2.32.56, built on Nov 10 2011 at 15:00:00, talking to SDL3 3.2.24
sdl2-compat: This app appears to be named: wine-preloader
INFO: App name: SDL Application
INFO: App version: <unspecified>
INFO: App ID: <unspecified>
INFO: SDL revision: SDL-3.2.24-GIT-NOTFOUND
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
DEBUG: Container detected, disabling HIDAPI udev integration
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
DEBUG: Added HIDAPI device 'HJZ Mayflash Wiimote PC Adapter' VID 0x057e, PID 0x0306, bluetooth 0, version 256, serial NONE, interface 0, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw0, driver = NONE (DISABLED)
DEBUG: Added HIDAPI device 'HJZ Mayflash Wiimote PC Adapter' VID 0x057e, PID 0x0306, bluetooth 0, version 256, serial NONE, interface 1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw1, driver = NONE (DISABLED)
DEBUG: Added HIDAPI device 'HJZ Mayflash Wiimote PC Adapter' VID 0x057e, PID 0x0306, bluetooth 0, version 256, serial NONE, interface 2, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw2, driver = NONE (DISABLED)
DEBUG: Added HIDAPI device 'HJZ Mayflash Wiimote PC Adapter' VID 0x057e, PID 0x0306, bluetooth 0, version 256, serial NONE, interface 3, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw3, driver = NONE (DISABLED)
DEBUG: Added HIDAPI device 'Wireless Controller' VID 0x054c, PID 0x09cc, bluetooth 1, version 0, serial a4:ae:12:ec:5f:2c, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = /dev/hidraw6, driver = NONE (DISABLED)
007c:fixme:wineusb:query_id Unhandled ID query type 0x5.
DEBUG: Container detected, disabling udev integration
0090:trace:hid:bus_main_thread L"SDL" main loop started
0090:trace:hid:process_device_event Received action 605
0090:trace:hid:sdl_add_device ignoring {vid 054c, pid 09cc, version 0001, input -1, uid 00000000, is_gamepad 0}, in SDL blacklist
0090:trace:hid:process_device_event Received action 653

I searched the issues in the repo and tried some environment variables I found (e.g.: setting STEAM_COMPAT_PROTON=1 since SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1 was already defined) but nothing helped.

Any ideas on how to get this working again with SDL3 / sdl2-compat version mentioned in the title?

System details:

  • Hardware: Steam Deck OLED
  • Kernel: Linux 6.11.11-valve24-2-neptune-611-gfd0dd251480d
  • OS: SteamOS 3.7.17 (problem was the same with 3.7.15)

Thanks

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions