Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controller rumble has stopped working #461

Closed
12 of 41 tasks
RobotRoss opened this issue Feb 18, 2024 · 21 comments
Closed
12 of 41 tasks

Controller rumble has stopped working #461

RobotRoss opened this issue Feb 18, 2024 · 21 comments

Comments

@RobotRoss
Copy link

RobotRoss commented Feb 18, 2024

Version of xpadneo

Controller Model

  • Xbox One S controller
  • Xbox Elite 2 controller
  • Xbox Series X|S controller
  • Other: Gulikit KingKong 2 Pro

Connection mode

  • Bluetooth connection
  • USB cable (not yet supported)
  • Xbox Dongle connection (not yet supported)

Installed Software

  • Anti-Micro (may affect button mappings)
  • OpenRGB (may mess up mappings and rumble stability)
  • Steam Input (enabled by default via Steam Desktop client)
  • Steam Link (usually via Raspberry Pi or other micro computers)
  • devices with QMK firmware (may affect udev rules, similar to OpenRGB)
  • netstick (shares input devices via network similar to Steam Link)
  • xboxdrv (user-space gamepad driver)
  • xone (kernel-space gamepad driver using the Xbox dongle or USB)
  • xow (alternative driver using the Xbox dongle)

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:

  • Steam Proton games are having issues
  • Steam Linux-native games are having issues
    • I don't use Steam or did not try
  • games running through Lutris, wine and/or Bottles are having issues
    • I don't use Lutris, Bottles, wine or did not try
  • Linux-native games are having issues
    • I don't use native games or did not try
  • Other software is having issues (describe software and issues below)
  • Running evtest is showing issues (describe the issues below)
    • Keep in mind that BTN_NORTH and BTN_WEST are intentionally swapped
  • Running jstest is showing issues (describe the issues below)
    • I don't have this tool or don't know how to use it
  • Running gamepad-tool is showing issues (post console output below)
    • I don't have this tool

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

Severity / Impact

  • I've read the docs and the bug reporting instructions
  • I've applied the latest firmware update to the controller
  • I've tried disabling or running without above mentioned software
  • It does not work at all
  • It used to work in a previous version
  • It mostly works but sometimes it doesn't
  • I found a work-around
  • I probably didn't figure it all out but it's too early to give up
  • I don't know how to ...
  • It's too complicated
  • Fantastic work but ...
  • I can code and I want to help

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
Copy link
Collaborator

kakra commented Feb 18, 2024

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
Copy link
Collaborator

kakra commented Feb 18, 2024

Closing as duplicate of #444

@kakra kakra closed this as not planned Won't fix, can't repro, duplicate, stale Feb 18, 2024
@kakra kakra added this to the v0.10 milestone Feb 19, 2024
@kakra kakra added this to To do in Compatibility and Compliance via automation Feb 19, 2024
@RobotRoss
Copy link
Author

RobotRoss commented Feb 19, 2024

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 kakra reopened this Feb 19, 2024
Compatibility and Compliance automation moved this from To do to In progress Feb 19, 2024
@kakra
Copy link
Collaborator

kakra commented Feb 22, 2024

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 #462 (comment) (hidraw tester), and reply back here?

@RobotRoss
Copy link
Author

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
Copy link

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
Copy link
Collaborator

kakra commented Feb 24, 2024

[  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 kakra closed this as completed in e7fc94f Feb 24, 2024
Compatibility and Compliance automation moved this from In progress to Done Feb 24, 2024
@kakra
Copy link
Collaborator

kakra commented Feb 24, 2024

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

@RobotRoss
Copy link
Author

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
Copy link
Collaborator

kakra commented Feb 29, 2024

[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.

@kakra kakra reopened this Feb 29, 2024
Compatibility and Compliance automation moved this from Done to In progress Feb 29, 2024
@RobotRoss
Copy link
Author

I'm using the dkms install via source.

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

@kakra
Copy link
Collaborator

kakra commented Feb 29, 2024

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
Copy link
Author

RobotRoss commented Mar 1, 2024

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
Copy link
Collaborator

kakra commented Mar 1, 2024

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
Copy link
Author

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
Copy link
Collaborator

kakra commented Mar 3, 2024

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

@RobotRoss
Copy link
Author

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
Copy link
Collaborator

kakra commented Mar 3, 2024

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
Copy link
Collaborator

kakra commented Mar 3, 2024

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
Copy link
Author

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
Copy link
Author

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!

Compatibility and Compliance automation moved this from In progress to Done Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants