atar-axis / xpadneo

Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S)
https://atar-axis.github.io/xpadneo/
GNU General Public License v3.0
1.87k stars 110 forks source link

Controller rumble has stopped working #461

Closed RobotRoss closed 3 months ago

RobotRoss commented 4 months ago

Version of xpadneo

Controller Model

Connection mode

Installed Software

Protocol Information

Please help us identify at which layer the problem can be found if you want to report mapping errors or if the controller fails to be detected:

Please describe how it is failing below in the next sections.

Severity / Impact

Describe the Bug

Gamepad rumble no longer seems to work as of the past day or so. Not sure what's changed - haven't done any system updates that might cause it to stop working. Tried a clean reinstall of xpadneo using the latest git, same problem.

Rumble support is advertised, but does not work.

Steps to Reproduce

Connect controller via Bluetooth, test rumble in a game or via gamepad tester.

Expected Behavior

Rumble to work.

Screenshots / GIFs / Videos

System Information

# uname -a
#Linux fedora 6.7.4-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Feb  5 22:21:14 UTC 2024 x86_64 GNU/Linux
# xxd -c20 -g1 /sys/module/hid_xpadneo/drivers/hid:xpadneo/0005:045E:*/report_descriptor | tee >(cksum)
00000000: 05 01 09 05 a1 01 85 01 09 01 a1 00 09 30 09 31 15 00 27 ff  .............0.1..'.
00000014: ff 00 00 95 02 75 10 81 02 c0 09 01 a1 00 09 33 09 34 15 00  .....u.........3.4..
00000028: 27 ff ff 00 00 95 02 75 10 81 02 c0 05 01 09 32 15 00 26 ff  '......u.......2..&.
0000003c: 03 95 01 75 0a 81 02 15 00 25 00 75 06 95 01 81 03 05 01 09  ...u.....%.u........
00000050: 35 15 00 26 ff 03 95 01 75 0a 81 02 15 00 25 00 75 06 95 01  5..&....u.....%.u...
00000064: 81 03 05 01 09 39 15 01 25 08 35 00 46 3b 01 66 14 00 75 04  .....9..%.5.F;.f..u.
00000078: 95 01 81 42 75 04 95 01 15 00 25 00 35 00 45 00 65 00 81 03  ...Bu.....%.5.E.e...
0000008c: 05 09 19 01 29 0a 15 00 25 01 75 01 95 0a 81 02 15 00 25 00  ....)...%.u.......%.
000000a0: 75 06 95 01 81 03 05 01 09 80 85 02 a1 00 09 85 15 00 25 01  u.................%.
000000b4: 95 01 75 01 81 02 15 00 25 00 75 07 95 01 81 03 c0 05 0f 09  ..u.....%.u.........
000000c8: 21 85 03 a1 02 09 97 15 00 25 01 75 04 95 01 91 02 15 00 25  !........%.u.......%
000000dc: 00 75 04 95 01 91 03 09 70 15 00 25 64 75 08 95 04 91 02 09  .u......p..%du......
000000f0: 50 66 01 10 55 0e 15 00 26 ff 00 75 08 95 01 91 02 09 a7 15  Pf..U...&..u........
00000104: 00 26 ff 00 75 08 95 01 91 02 65 00 55 00 09 7c 15 00 26 ff  .&..u.....e.U..|..&.
00000118: 00 75 08 95 01 91 02 c0 85 04 05 06 09 20 15 00 26 ff 00 75  .u........... ..&..u
0000012c: 08 95 01 81 02 c0                                            ......
3445511648 1458

Controller and Bluetooth Information

Additional Context

xpadneo-btmon.txt xpadneo-dmesg.txt xpadneo-lsusb.txt

kakra commented 4 months ago

Try ff_connect_notify=0 as a module parameter, there's a race condition in SDL2 for games using the wrong API for rumble detection. Or turn your controller on before starting the game. If you're using Steam Input, try turning it off. There have been reports where rumble doesn't work when Steam Input is enabled (not limited to xpadneo).

Also, controllers usually disable rumble when battery runs low: Did you charge the controller?

kakra commented 4 months ago

Closing as duplicate of https://github.com/atar-axis/xpadneo/issues/444

RobotRoss commented 4 months ago

Sorry - this is an issue separate to that. Rumble no longer works regardless of the status of that setting. The controller is fully charged. Rumble works on the controller when plugged into the computer (i.e. not through xpadneo)

kakra commented 4 months ago

Sorry - this is an issue separate to that. Rumble no longer works regardless of the status of that setting. The controller is fully charged. Rumble works on the controller when plugged into the computer (i.e. not through xpadneo)

@RobotRoss Can you try the steps outlined in https://github.com/atar-axis/xpadneo/issues/462#issuecomment-1960482157 (hidraw tester), and reply back here?

RobotRoss commented 4 months ago

I think I may have randomly stumbled into what may be causing the issue, seems like xpadneo isn't always taking control of the controller, so the generic kernel driver is used instead (which doesn't support rumble)

dmesg output when rumble doesn't work:

[10271.305322] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[10271.305327] Bluetooth: HIDP socket layer initialized
[10271.305863] hid-generic 0005:045E:02E0.0012: unknown main item tag 0x0
[10271.306027] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input51
[10271.306234] hid-generic 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[10271.356214] microsoft 0005:045E:02E0.0012: unknown main item tag 0x0
[10271.356317] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input52
[10271.356433] microsoft 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[10271.357929] loaded hid-xpadneo 6
[10274.597600] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input53

dmesg when rumble does work:

[10732.280315] microsoft 0005:045E:02E0.0013: unknown main item tag 0x0
[10732.280477] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0013/input/input54
[10732.280721] microsoft 0005:045E:02E0.0013: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[10732.300156] xpadneo 0005:045E:02E0.0013: buggy firmware detected, please upgrade to the latest version
[10732.300159] xpadneo 0005:045E:02E0.0013: pretending XB1S Windows wireless mode (changed PID from 0x02E0 to 0x028E)
[10732.300161] xpadneo 0005:045E:02E0.0013: working around wrong SDL2 mappings (changed version from 0x00000903 to 0x00001130)
[10732.300164] xpadneo 0005:045E:02E0.0013: report descriptor size: 307 bytes
[10732.300165] xpadneo 0005:045E:02E0.0013: fixing up report descriptor size
[10732.300226] xpadneo 0005:045E:02E0.0013: battery detected
[10732.300228] xpadneo 0005:045E:02E0.0013: enabling compliance with Linux Gamepad Specification
[10732.300267] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0013/input/input55
[10732.300390] xpadneo 0005:045E:02E0.0013: input,hidraw17: BLUETOOTH HID v11.30 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[10732.300394] xpadneo 0005:045E:02E0.0013: controller quirks: 0x00000083
[10732.300396] xpadneo 0005:045E:02E0.0013: GuliKit Controller XW [98:b6:ea:43:62:34] connected
DiamivaeBro commented 4 months ago

Strange,i have same problem but dmesg is

[  154.324257] xpadneo 0005:045E:02FD.0003: Xbox Wireless Controller [98:b6:ea:40:7b:c0] connected
[  169.437251] xpadneo 0005:045E:02FD.0003: reverting to original version (changed version from 0x00001130 to 0x00000903)
[  169.437263] xpadneo 0005:045E:02FD.0003: reverting to original product (changed PID from 0x028E to 0x02FD)
[  288.005364] xpadneo 0005:045E:02FD.0004: buggy firmware detected, please upgrade to the latest version
[  288.005376] xpadneo 0005:045E:02FD.0004: pretending XB1S Windows wireless mode (changed PID from 0x02FD to 0x028E)
[  288.005382] xpadneo 0005:045E:02FD.0004: working around wrong SDL2 mappings (changed version from 0x00000903 to 0x00001130)
[  288.005389] xpadneo 0005:045E:02FD.0004: report descriptor size: 335 bytes
[  288.005394] xpadneo 0005:045E:02FD.0004: fixing up report descriptor size
[  288.005397] xpadneo 0005:045E:02FD.0004: fixing up Rx axis
[  288.005401] xpadneo 0005:045E:02FD.0004: fixing up Ry axis
[  288.005405] xpadneo 0005:045E:02FD.0004: fixing up Z axis
[  288.005408] xpadneo 0005:045E:02FD.0004: fixing up Rz axis
[  288.005412] xpadneo 0005:045E:02FD.0004: fixing up button mapping
[  288.005734] xpadneo 0005:045E:02FD.0004: battery detected
[  288.005737] xpadneo 0005:045E:02FD.0004: gamepad detected
[  288.005739] xpadneo 0005:045E:02FD.0004: enabling compliance with Linux Gamepad Specification
[  288.005797] input: Xbox Wireless Controller as /devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3/3-4/3-4:1.0/bluetooth/hci0/hci0:4/0005:045E:02FD.0004/input/input28
[  288.006506] xpadneo 0005:045E:02FD.0004: consumer control detected
[  288.006562] input: Xbox Wireless Controller Consumer Control as /devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3/3-4/3-4:1.0/bluetooth/hci0/hci0:4/0005:045E:02FD.0004/input/input29
[  288.006845] xpadneo 0005:045E:02FD.0004: input,hidraw1: BLUETOOTH HID v11.30 Gamepad [Xbox Wireless Controller] on 74:4c:a1:c9:e1:5e
[  288.006980] input: Xbox Wireless Controller Keyboard as /devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3/3-4/3-4:1.0/bluetooth/hci0/hci0:4/0005:045E:02FD.0004/input/input30
[  288.007122] xpadneo 0005:045E:02FD.0004: keyboard added
[  288.007132] xpadneo 0005:045E:02FD.0004: controller quirks: 0x00000095
[  288.007138] xpadneo xpadneo_welcome_rumble start
[  288.998128] xpadneo xpadneo_welcome_rumble took 990ms
[  288.998178] xpadneo 0005:045E:02FD.0004: Xbox Wireless Controller [98:b6:ea:40:7b:c0] connected

Vibration in hidraw working

kakra commented 4 months ago
[  288.007132] xpadneo 0005:045E:02FD.0004: controller quirks: 0x00000095

Try rmmod hid-xpadneo && modprobe hid-xpadneo quirks=98:b6:ea:40:7b:c0-128, it should then say 0x00000015 for quirk flags in dmesg. Retry if your controller does rumble now. Maybe they fixed something with the motor mask in their firmwares.

If this works, try the hidraw test program to see if the motor masking bits (buttons 1-4) actually match the indicated motors. With early versions of OUI 98:b6:ea we had those bits flipped reverse.

Maybe also try ... quirks=98:b6:ea:40:7b:c0-132 and ... quirks=98:b6:ea:40:7b:c0-4. I just discovered I may have introduced a bug with one of the latest commits.

kakra commented 4 months ago

Please re-open, if the latest commit doesn't fix your problem.

RobotRoss commented 4 months ago

The bug hasn't been patched by the latest commit.

Vibration in hidraw works fine, but game rumble doesn't work. Occasionally game rumble might work, but I'd say that there's a 90% chance when connecting the controller that it doesn't.

Rumble works consistently on a Dualshock 4 that I also have over bluetooth, and works in games okay.

Another couple dmesg samples:

[98944.350298] microsoft 0005:045E:02E0.001C: unknown main item tag 0x0
[98944.350451] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.001C/input/input80
[98944.351208] microsoft 0005:045E:02E0.001C: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[98944.383844] xpadneo 0005:045E:02E0.001C: buggy firmware detected, please upgrade to the latest version
[98944.383848] xpadneo 0005:045E:02E0.001C: pretending XB1S Windows wireless mode (changed PID from 0x02E0 to 0x028E)
[98944.383851] xpadneo 0005:045E:02E0.001C: working around wrong SDL2 mappings (changed version from 0x00000903 to 0x00001130)
[98944.383854] xpadneo 0005:045E:02E0.001C: report descriptor size: 307 bytes
[98944.383856] xpadneo 0005:045E:02E0.001C: fixing up report descriptor size
[98944.383940] xpadneo 0005:045E:02E0.001C: battery detected
[98944.383942] xpadneo 0005:045E:02E0.001C: enabling compliance with Linux Gamepad Specification
[98944.384009] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.001C/input/input81
[98944.384220] xpadneo 0005:045E:02E0.001C: input,hidraw17: BLUETOOTH HID v11.30 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[98944.384226] xpadneo 0005:045E:02E0.001C: controller quirks: 0x00000083
[98944.384228] xpadneo 0005:045E:02E0.001C: GuliKit Controller XW [98:b6:ea:43:62:34] connected
[98947.732519] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input82
[13138.164602] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[13138.164607] Bluetooth: HIDP socket layer initialized
[13138.165056] hid-generic 0005:045E:02E0.0012: unknown main item tag 0x0
[13138.165168] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input51
[13138.165334] hid-generic 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[13138.205298] microsoft 0005:045E:02E0.0012: unknown main item tag 0x0
[13138.205397] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input52
[13138.205490] microsoft 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[13138.206776] loaded hid-xpadneo 6
[13143.056812] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input53
[13222.335680] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input54
[13535.936438] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input55
[13579.811228] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input56
kakra commented 4 months ago
[13143.056812] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input53
[13222.335680] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input54
[13535.936438] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input55
[13579.811228] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input56

This looks like Steam Input is taking over the controller. But this looks the same in the other log, so really the problem is with hid-microsoft attaching to the device instead of hid-xpadneo.

How did you install xpadneo? Did you use direct dkms install from source repository, or are you using a distribution package?

Ensure that these files (https://github.com/atar-axis/xpadneo/tree/master/hid-xpadneo/etc-udev-rules.d) exist in either of the following directories:

  1. If using a distribution package: /usr/lib/udev/rules.d
  2. If using direct install from source: /etc/udev/rules.d
  3. The files should not exist in both directories.

After you confirmed your system state, we can proceed with diagnosing your situation.

RobotRoss commented 4 months ago

I'm using the dkms install via source.

The udev rules are present in the correct directory and aren't duplicated.

kakra commented 4 months ago

Then please turn the controller off and reboot the system, so we end up with a clean initial state. Now run udevadm monitor -p | tee udevadm.log and turn the controller on. While it connects, a bunch of text logs are sent to the terminal and will also be stored in udevadm.log. Please attach this file.

The last or one of the last blocks should have something like DEVPATH=/devices/virtual/misc/uhid/0005:045E:0B13.001C (and no more sub paths). Copy the path after DEVPATH= and run the command udevadm info -a -p <paste-path-here> | tee udevinfo.log. Please attach the file udevinfo.log, too.

I'm not sure if I can already see a problem here. Maybe you'll have to repeat this for the other case when we see only hid-microsoft in dmesg. If you want to create two sets of files, please ensure to record only one connection attempt per file (and keep a backup copy of the first attempt for attaching here). No reboot between the following attempts is needed, just turn the controller off, run the udevadm commands, turn the controller back on, check dmesg if it recorded the other case, and if yes, we have the other case.

Thanks.

RobotRoss commented 4 months ago

I've attached the requested files.

I couldn't find anything under DEVPATH=/devices/virtual/misc, so I took a swing at one of the devices under /devices/pci0000:00/ udevadm.log udevinfo.log

dmesg:

[  264.106758] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[  264.106764] Bluetooth: HIDP socket layer initialized
[  264.107234] hid-generic 0005:045E:02E0.0012: unknown main item tag 0x0
[  264.107388] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input51
[  264.107702] hid-generic 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[  264.152281] microsoft 0005:045E:02E0.0012: unknown main item tag 0x0
[  264.152419] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0012/input/input52
[  264.152698] microsoft 0005:045E:02E0.0012: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[  264.154459] loaded hid-xpadneo 6
[  269.430795] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input53

Weirdly, my following attempt to connect did work. Attaching the logfiles for the attempt where rumble ended up working: udevadm2.log udevinfo2.log

dmesg:

[  918.030346] microsoft 0005:045E:02E0.0013: unknown main item tag 0x0
[  918.030487] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0013/input/input54
[  918.030743] microsoft 0005:045E:02E0.0013: input,hidraw17: BLUETOOTH HID v9.03 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[  918.069184] xpadneo 0005:045E:02E0.0013: buggy firmware detected, please upgrade to the latest version
[  918.069187] xpadneo 0005:045E:02E0.0013: pretending XB1S Windows wireless mode (changed PID from 0x02E0 to 0x028E)
[  918.069190] xpadneo 0005:045E:02E0.0013: working around wrong SDL2 mappings (changed version from 0x00000903 to 0x00001130)
[  918.069192] xpadneo 0005:045E:02E0.0013: report descriptor size: 307 bytes
[  918.069194] xpadneo 0005:045E:02E0.0013: fixing up report descriptor size
[  918.069259] xpadneo 0005:045E:02E0.0013: battery detected
[  918.069261] xpadneo 0005:045E:02E0.0013: enabling compliance with Linux Gamepad Specification
[  918.069304] input: GuliKit Controller XW as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:09:00.1/usb1/1-6/1-6:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0013/input/input55
[  918.069435] xpadneo 0005:045E:02E0.0013: input,hidraw17: BLUETOOTH HID v11.30 Gamepad [GuliKit Controller XW] on 50:eb:71:f8:ce:b4
[  918.069439] xpadneo 0005:045E:02E0.0013: controller quirks: 0x00000083
[  918.069442] xpadneo 0005:045E:02E0.0013: GuliKit Controller XW [98:b6:ea:43:62:34] connected
[  921.187117] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input56
kakra commented 4 months ago

Is it possible that only the first connect after a reboot ends up in the hid-microsoft driver and successive connections properly use hid-xpadneo?

If yes, please try adding the following file if your system uses systemd to boot:

# /etc/modules-load.d/xpadneo.conf
hid-xpadneo

Then reboot. I'd expect that now xpadneo correctly binds on the first connect.

Other problems about making successful connections at all should probably attributed to bluez and your Intel Wireless chipset instead and should be reported to the bluez project if you still experience that.

As long as xpadneo correctly binds to the device, rumble should work. Please test.

RobotRoss commented 4 months ago

Is it possible that only the first connect after a reboot ends up in the hid-microsoft driver and successive connections properly use hid-xpadneo?

Unfortunately not. It's seemingly random if rumble decides it wants to work or not, although mostly it doesn't work with occasional times it decides to work.

kakra commented 4 months ago

Maybe something is working concurrently on your system and races... Is hid-microsoft compiled in or is it a module?

RobotRoss commented 4 months ago

Compiled in kernel by the look of it:

modinfo hid-microsoft
filename:       /lib/modules/6.7.6-200.fc39.x86_64/kernel/drivers/hid/hid-microsoft.ko.xz
license:        GPL
rhelversion:    9.99
alias:          hid:b0005g*v0000045Ep000002E0
alias:          hid:b0005g*v0000045Ep00000B22
alias:          hid:b0005g*v0000045Ep00000B05
alias:          hid:b0005g*v0000045Ep00000B13
alias:          hid:b0005g*v0000045Ep00000B20
alias:          hid:b0005g*v0000045Ep000002FD
alias:          hid:b0005g*v0000045Ep0000091B
alias:          hid:b0005g*v0000045Ep00000701
alias:          hid:b0003g*v0000045Ep000000E3
alias:          hid:b0003g*v0000045Ep000007DA
alias:          hid:b0003g*v0000045Ep0000076C
alias:          hid:b0003g*v0000045Ep0000009D
alias:          hid:b0003g*v0000045Ep00000732
alias:          hid:b0003g*v0000045Ep00000750
alias:          hid:b0003g*v0000045Ep000000B4
alias:          hid:b0003g*v0000045Ep00000730
alias:          hid:b0003g*v0000045Ep00000713
alias:          hid:b0003g*v0000045Ep000000F9
alias:          hid:b0003g*v0000045Ep0000071D
alias:          hid:b0003g*v0000045Ep000000DC
alias:          hid:b0003g*v0000045Ep000000DB
alias:          hid:b0003g*v0000045Ep00000048
alias:          hid:b0003g*v0000045Ep0000003B
depends:        ff-memless
retpoline:      Y
intree:         Y
name:           hid_microsoft
vermagic:       6.7.6-200.fc39.x86_64 SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         Fedora kernel signing key
sig_key:        50:44:7E:08:B8:CC:5D:1C:5C:F0:9C:77:FD:79:BB:07:87:49:71:01
sig_hashalgo:   sha256
kakra commented 4 months ago

No, it's compiled as a module (but yes, as part of the kernel distribution, IOW, not an external module), otherwise it would say:

filename:       (builtin)
...

So if you don't depend on any other Microsoft input devices, you could try blacklisting the module (as a work-around, not a final solution):

# /etc/modprobe.d/no-hid-microsoft.conf
blacklist hid-microsoft

Then run sudo depmod -a and reboot to test again. Verify that hid-microsoft won't be loaded with lsmod. If this is an early boot driver (many input drivers are), you may need to recreate your initramfs/reinstall the boot loader.

Devices affected by this would still work via hid-generic but they won't use proper Microsoft quirk work-arounds for some functions, so YMMV if you use other genuine Microsoft input devices.

kakra commented 4 months ago

One other thing, please check if this file (https://github.com/atar-axis/xpadneo/blob/master/hid-xpadneo/etc-modprobe.d/xpadneo.conf) has been installed in these directories without duplicates, and identical contents:

  1. /usr/lib/modprobe.d or
  2. /etc/modprobe.d

It should ensure that hid-xpadneo is tried first (by loading it) when encountering any of those hardware IDs.

In your logs I can see the modalias showing in udev, so it should trigger loading xpadneo. I'd expect to see it loading as soon as the modalias shows up, but it only loads at bind time when already gone through hid-generic and rebinding to hid-microsoft - this may be too late. Blacklisting hid-microsoft would prevent that, but OTOH, hid-xpadneo should already load when the modalias is encountered (you can see that hidp is triggered probably because the HID bus is on the Bluetooth bus, immediately hid-xapdneo should follow). Maybe try manually loading hidp before connecting the controller.

RobotRoss commented 4 months ago

One other thing, please check if this file (https://github.com/atar-axis/xpadneo/blob/master/hid-xpadneo/etc-modprobe.d/xpadneo.conf) has been installed in these directories without duplicates, and identical contents:

1. `/usr/lib/modprobe.d` or

2. `/etc/modprobe.d`

It should ensure that hid-xpadneo is tried first (by loading it) when encountering any of those hardware IDs.

In your logs I can see the modalias showing in udev, so it should trigger loading xpadneo. I'd expect to see it loading as soon as the modalias shows up, but it only loads at bind time when already gone through hid-generic and rebinding to hid-microsoft - this may be too late. Blacklisting hid-microsoft would prevent that, but OTOH, hid-xpadneo should already load when the modalias is encountered (you can see that hidp is triggered probably because the HID bus is on the Bluetooth bus, immediately hid-xapdneo should follow). Maybe try manually loading hidp before connecting the controller.

Turns out there was a duplicate xpadneo.conf in /etc/modprobe.d which didn't match the contents of the github file.

Have deleted the duplicate and will report back.

RobotRoss commented 3 months ago

Near as I can tell, this issue is now resolved and I haven't had any more issues with the controller in the past couple weeks. Closing!