Kernel 6.17.4-200 Xbox 360 Wireless Controller d-pad problem

With kernel 6.17.4-200 the d-pad on Xbox 360 Wireless Controller is incorrectly mapped:

  • UP: button 14, physical LEFT button
  • DOWN: button 15, physical RIGHT button
  • LEFT: button 12, physical UP button
  • RIGHT: button 13, Physical DOWN button

Using kernel 6.16.12-200, the d-pad works as expected.

This behavior is very similar to this Manjaro post from August but in regard to different kernel versions: X360 controller dpad functions incorrectly on 6.15/6.16 kernels - Third-Party Software - Manjaro Linux Forum.

Any advice/guidance into correcting the behavior AND using the current kernel is much appreciated.

Attempted another machine and experienced the same behavior with kernel 6.17.4-200. Booting with kernel 6.16.10-200, the d-pad works as expected.

File a bug at bugzilla.redhat.com
and provide as much info about both systems.
Make sure to answer any questions asked of you there.

just fyi. I dont have this problem. I used to have bluetooth issues with mine until I updated firmware on a windows machine but never this dpad bug. Maybe we have different hardware revisions. Mine is model: ‘UK 1914’.
I’m using a bluetooth 5 dongle, not the microsoft wireless dongle.

I stumbled across some more info here: joystick: Improve Xbox controller mapping with xpad quirks by endrift · Pull Request #13305 · libsdl-org/SDL · GitHub. A GitHub user raised the exact issue I’m experiencing (Wireless Xbox 360 controller d-pad broken on Linux 6.17+ · Issue #14324 · libsdl-org/SDL · GitHub) and, if I’m comprehending correctly, has suggested a fix (Remove special-case Xbox 360 wireless controller mappings by turmoni · Pull Request #14339 · libsdl-org/SDL · GitHub).

I have two model 1403 controllers that I purchased over 13 years ago. They’re tanks. Both connect to the same 1086 wireless dongle that experienced the infamous blown fuse very soon after purchase. I ended up shorting it with a soldered bit of paperclip and it’s been perfect.

1 Like

You can define a custom mapping for SDL until this is resolved in SDL with an updated SDL3 release maybe next month.

Thanks for the suggestion. I haven’t had the opportunity to completely ingest the GitHub conversation and I’m not entirely certain I would understand it anyway. I’ll search for methods to build that custom mapping but would definitely appreciate any direction to reliable resource to assist me.

see PowerA Nintendo Switch Wired controller buttons mapped incorrectly - #5 by anotheruser how to set custom mappings. the testcontroller program is very useful to define mappings.
In this case however I suspect that it should be enough to copy the removed mappings from that PR on github and manually remap the d-pad buttons.

the mappings are:

030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,
030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,
030000005e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,
030000005e040000a102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,
030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,

copy that in to a custom controllerdb.txt edit the mappings for the d-pad to reflect the changes to xpad driver.

I guess you could also use the SDL2 Gamepad Tool by General Arcade to create the mapping or see the gamepad GUID for your controller(s).

Very much appreciated. I’ll have a look at it when I have the opportunity.

Bazzite fixed this in their Steam launch script here.

So I just created my own launch-steam.sh with the relevant lines:

#!/bin/bash

# Fix XBOX 360 Wireless Controller for kernels >= 6.17 and SDL < 3.4.x
export SDL_GAMECONTROLLERCONFIG=$(cat <<-END
060000000d0f00009601000000000000,Steam Controller (HHD),a:b0,b:b1,x:b2,y:b3,back:b6,guide:b8,start:b7,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,paddle1:b13,paddle2:b12,paddle3:b15,paddle4:b14,misc2:b11,misc3:b16,misc4:b17,crc:ea35,
0300a81c5e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,crc:1ca8,
$SDL_GAMECONTROLLERCONFIG
END
)

/usr/bin/steam

When I launch Steam with it, SDL_GAMECONTROLLERCONFIG gets set properly and the DPAD on my Xbox 360 Wireless controller is mapped correctly.

Let’s hope SDL makes a new release soon. :slight_smile: Or maybe someone can backport the SDL patch into Fedora and package it up.

This problem still persists. I’m using Kernel Linux 6.17.11and SDL version 3.2.24.

(If I test the gamepad with Steam’s test controller it shows the correct mappings, but when I run the games the horizontal and vertical are still switched).

The script above works like a charm though, Thanks!

The behavior persists with kernel 6.18.3-200.

I finally submitted a bug as suggested.

1 Like

My bug report was a duplicate of 2418684 – several controller issues fixed in SDL3-3.2.28.

Happy to report that the behavior is resolved after installing the noted patch!

FEDORA-2026-90221b4d44 (SDL stack update) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.

Fixed In Version: SDL3-3.4.0-3.fc42 → SDL3-3.4.0-3.fc42 SDL3-3.4.0-3.fc43

1 Like

The work that Fedora did with the SDL stack update has resolved the behavior observed within the Game Controllers section of KDE settings (and likely other things that rely on SDL3 installed in the system). However, 3rd party apps that have their own SDL stack are still broken for the Xbox 360 Wireless Controller. I still note similar behavior with anything launched through Steam as well as what I would call simple apps like the Space Cadet Pinball 3D Flatpak, both of which I am still employing the workaround described above.

I’m not an expert but I think this all leads to the change made in the Linux kernel starting with 6.17.4 and if that were addressed then everything would be fine. Alas, I’m out of hope so I’ll continue to use the workaround for as long as my controllers are working.

I found a solution for Steam without script: just enable Steam Input for the affected games and remap the D-pad in the controller settings. You can save a preset and reuse it for for other affected games.