Xbox controller was perfect, now mappings wrong on Bluetooth, ok on USB

I’ve been playing games on Steam for months and I have TWO Xbox controllers that work fine with both USB and Bluetooth. Now they both still work fine with USB but are weird with Bluetooth…

I am running:
Linux version 5.15.60-1-MANJARO (builduser@fv-az462-678) (gcc (GCC) 12.1.1 20220730, GNU ld (GNU Binutils) 2.39) #1 SMP PREEMPT Thu Aug 11 13:14:05 UTC 2022

Details

  • For the past 5 months, my (2) Xbox controllers has been working perfectly over Bluetooth for all of my Steam games.
  • I DID have to update the firmware in both of the controllers on a Windows 10 machine.
  • Both controllers DO connect to Bluetooth and they DO rumble on connect.
  • Both controllers WORK but they exhibit the same behavior: some stick actions work, some stick actions are reversed, some buttons are mapped wrong.
  • This happened between SEP 1 and 4. I don’t remember exactly when it stopped working, but it WAS working normally on AUG 29 because I was live-streaming some Elden Ring on Twitch.
  • Both controllers work normally when connected via USB cables.
  • I can start the game using the controller with USB, then disconnect the USB cable and it will switch over to Bluetooth, rumble, and then the mappings are wrong and I can’t play the game. If I plug the USB cable back in, it returns to normal and I can play the game.

In case it helps, here’s my modinfo, up to, but not including the signing key:

# modinfo hid_xpadneo
filename:       /lib/modules/5.15.60-1-MANJARO/updates/dkms/hid-xpadneo.ko.xz
version:        0.9.4
description:    Linux kernel driver for Xbox ONE S+ gamepads (BT), incl. FF
author:         Kai Krakow <kai@kaishome.de>
author:         Florian Dollinger <dollinger.florian@gmx.de>
license:        GPL
srcversion:     E2618C906388296F82E12D6
alias:          hid:b0005g*v0000045Ep00000B13
alias:          hid:b0005g*v0000045Ep00000B22
alias:          hid:b0005g*v0000045Ep00000B05
alias:          hid:b0005g*v0000045Ep00000B20
alias:          hid:b0005g*v0000045Ep000002E0
alias:          hid:b0005g*v0000045Ep000002FD
depends:        ff-memless
retpoline:      Y
name:           hid_xpadneo
vermagic:       5.15.60-1-MANJARO SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         DKMS module signing key
...

I uninstalled xpadneo-dkms, rebooted, and reinstalled it. No errors. Same problem - inputs are mapped wrong.

Here’s the output from dmesg -wdH while connecting the Xbox controller via Bluetooth:

[<    9.904653>] xpadneo 0005:045E:0B13.000C: BLE firmware version 5.13
[<    0.000003>] xpadneo 0005:045E:0B13.000C: pretending XB1S Windows wireless mode (changed PID from 0x0B13 to 0x02FD)
[<    0.000001>] xpadneo 0005:045E:0B13.000C: working around wrong SDL2 mappings (changed version from 0x00000513 to 0x00001130)
[<    0.000001>] xpadneo 0005:045E:0B13.000C: report descriptor size: 283 bytes
[<    0.000001>] xpadneo 0005:045E:0B13.000C: fixing up Rx axis
[<    0.000001>] xpadneo 0005:045E:0B13.000C: fixing up Ry axis
[<    0.000001>] xpadneo 0005:045E:0B13.000C: fixing up Z axis
[<    0.000000>] xpadneo 0005:045E:0B13.000C: fixing up Rz axis
[<    0.000001>] xpadneo 0005:045E:0B13.000C: fixing up button mapping
[<    0.000067>] xpadneo 0005:045E:0B13.000C: enabling compliance with Linux Gamepad Specification
[<    0.000026>] input: Xbox Wireless Controller as /devices/virtual/misc/uhid/0005:045E:0B13.000C/input/input38
[<    0.000181>] xpadneo 0005:045E:0B13.000C: input,hidraw10: BLUETOOTH HID v11.30 Gamepad [Xbox Wireless Controller] on 98:3b:8f:97:4f:68
[<    0.000004>] xpadneo 0005:045E:0B13.000C: controller quirks: 0x00000050
[<    0.990135>] xpadneo 0005:045E:0B13.000C: Xbox Wireless Controller [14:cb:65:7f:11:d0] connected

Finally, I did a number of tests with the controller connected to Bluetooth, and it seemed to be working, so I decided to make a chart, using https://gamepad-tester.com/ to test all sticks and buttons, first using USB, then using Bluetooth:

XBOX Controller Test using https://gamepad-tester.com/

Controller      USB         Bluetooth
----------      ---         ---------
Left stick      
- up            axis 1-     axis 1-     same   
- down          axis 1+     axis 1+     same
- left          axis 0-     axis 0-     same
- right         axis 0+     axis 0+     same
- press         b9          b9          same

Right stick
- up            axis 4-     axis 4-     same
- down          axis 4+     axis 4+     same
- left          axis 3-     axis 3-     same
- right         axis 3+     axis 3+     same
- press         b10         b10         same

D-pad
- up            axis 7-     axis 7-     same
- down          axis 7+     axis 7+     same
- left          axis 6-     axis 6-     same
- right         axis 6+     axis 6+     same

X button        b2          b2          same
Y button        b3          b3          same
A button        b0          b0          same
B button        b1          b1          same

LT              axis 2-to+  axis 2-to+  same
LB              b4          b4          same

RT              axis 5-to+  axis 5-to+  same
RB              b5          b5          same

page            b6          b6          same
menu            b7          b7          same

As you can see, my controller is STILL working properly over Bluetooth, and all of the mappings are the SAME as USB! From here, I thought the problem must be a recent Steam update???

I posted on the Steam Forum and tried a number of suggestions with Steam General Controller settings, and per game settings. Nothing made a difference.

So now I’m back here and I’m ready to try anything you all can suggest.

Thanks!!

Well, after the recent update to xpadneo, everything is working fine again.