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.92k stars 111 forks source link

Xbox Elite Series 2 get's stuck moving the character and won't stop unless you turn the controller off, then back on. #319

Closed bjb1959 closed 2 years ago

bjb1959 commented 2 years ago

Version of xpadneo

v0.9-88-g2900363!

Controller Model

Xbox Elite Series 2

Connection mode

Bluetooth connection

Installed Software

Steam Input (enabled by default via Steam Desktop client)

Severity / Impact

It does not work at all It used to work

Describe the Bug

Issue with using the left stick and moving/running a character. after a minute or so of playing the character gets stuck running/moving in the direction you last pointed the stick in. So if you are running forward the character keeps running forward, left it runs in a big left circle, right, right circle etc. The only way to stop it is to turn the controller off and start it again but then the same issues happens again until eventually I switch to USB mode.

Steps to Reproduce

see above description

Expected Behavior

Want it to work as it did before installing xow

Screenshots / GIFs / Videos

System Information

Linux bartb1959-OMEN-by-HP-Desktop-PC-880-p0xx 5.10.0-051000-generic #202012132330 SMP Sun Dec 13 23:33:36 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux


<!-- Paste the output below the line prepended with # -->
```console
xxd: /sys/module/hid_xpadneo/drivers/hid:xpadneo/0005:045E:*/report_descriptor: No such file or directory

Controller and Bluetooth Information

[ 751.936215] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 751.936219] Bluetooth: HIDP socket layer initialized [ 753.054153] hid-generic 0005:045E:0B05.0009: unknown main item tag 0x0 [ 753.054318] input: Xbox Elite Wireless Controller as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input36 [ 753.054462] input: Xbox Elite Wireless Controller Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input37 [ 753.054540] input: Xbox Elite Wireless Controller Keyboard as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input39 [ 753.054629] hid-generic 0005:045E:0B05.0009: input,hidraw8: BLUETOOTH HID v9.03 Gamepad [Xbox Elite Wireless Controller] on 2c:6f:c9:1d:25:de [ 753.278376] loaded hid-xpadneo v0.9-88-g2900363 [ 753.278397] xpadneo 0005:045E:0B05.0009: pretending XB1S Windows wireless mode (changed PID from 0x0B05 to 0x02E0) [ 753.278399] xpadneo 0005:045E:0B05.0009: report descriptor size: 1225 bytes [ 753.278400] xpadneo 0005:045E:0B05.0009: fixing up report descriptor size [ 753.278401] xpadneo 0005:045E:0B05.0009: fixing up Rx axis [ 753.278401] xpadneo 0005:045E:0B05.0009: fixing up Ry axis [ 753.278402] xpadneo 0005:045E:0B05.0009: fixing up Z axis [ 753.278402] xpadneo 0005:045E:0B05.0009: fixing up Rz axis [ 753.278403] xpadneo 0005:045E:0B05.0009: fixing up button mapping [ 753.278974] xpadneo 0005:045E:0B05.0009: battery detected [ 753.278987] xpadneo 0005:045E:0B05.0009: gamepad detected [ 753.278988] xpadneo 0005:045E:0B05.0009: enabling compliance with Linux Gamepad Specification [ 753.279028] input: Xbox Elite Wireless Controller as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input40 [ 753.279107] xpadneo 0005:045E:0B05.0009: consumer control detected [ 753.279129] input: Xbox Elite Wireless Controller Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input41 [ 753.279169] xpadneo 0005:045E:0B05.0009: mapping profiles detected [ 753.279171] xpadneo 0005:045E:0B05.0009: keyboard detected [ 753.279193] input: Xbox Elite Wireless Controller Keyboard as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:9/0005:045E:0B05.0009/input/input43 [ 753.279261] xpadneo 0005:045E:0B05.0009: input,hidraw8: BLUETOOTH HID v9.03 Gamepad [Xbox Elite Wireless Controller] on 2c:6f:c9:1d:25:de [ 753.279263] xpadneo 0005:045E:0B05.0009: controller quirks: 0x00000018 [ 753.279264] xpadneo xpadneo_welcome_rumble start [ 754.261958] xpadneo xpadneo_welcome_rumble took 984ms [ 754.261981] xpadneo 0005:045E:0B05.0009: Xbox Elite Wireless Controller [f4:6a:d7:07:04:c9] connected [ 1036.447872] xpadneo 0005:045E:0B05.000A: pretending XB1S Windows wireless mode (changed PID from 0x0B05 to 0x02E0) [ 1036.447876] xpadneo 0005:045E:0B05.000A: report descriptor size: 1225 bytes [ 1036.447877] xpadneo 0005:045E:0B05.000A: fixing up report descriptor size [ 1036.447878] xpadneo 0005:045E:0B05.000A: fixing up Rx axis [ 1036.447878] xpadneo 0005:045E:0B05.000A: fixing up Ry axis [ 1036.447879] xpadneo 0005:045E:0B05.000A: fixing up Z axis [ 1036.447880] xpadneo 0005:045E:0B05.000A: fixing up Rz axis [ 1036.447880] xpadneo 0005:045E:0B05.000A: fixing up button mapping [ 1036.448471] xpadneo 0005:045E:0B05.000A: battery detected [ 1036.448485] xpadneo 0005:045E:0B05.000A: gamepad detected [ 1036.448486] xpadneo 0005:045E:0B05.000A: enabling compliance with Linux Gamepad Specification [ 1036.448529] input: Xbox Elite Wireless Controller as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:10/0005:045E:0B05.000A/input/input44 [ 1036.448623] xpadneo 0005:045E:0B05.000A: consumer control detected [ 1036.448652] input: Xbox Elite Wireless Controller Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:10/0005:045E:0B05.000A/input/input45 [ 1036.448687] xpadneo 0005:045E:0B05.000A: mapping profiles detected [ 1036.448690] xpadneo 0005:045E:0B05.000A: keyboard detected [ 1036.448718] input: Xbox Elite Wireless Controller Keyboard as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:10/0005:045E:0B05.000A/input/input47 [ 1036.448789] xpadneo 0005:045E:0B05.000A: input,hidraw8: BLUETOOTH HID v9.03 Gamepad [Xbox Elite Wireless Controller] on 2c:6f:c9:1d:25:de [ 1036.448791] xpadneo 0005:045E:0B05.000A: controller quirks: 0x00000018 [ 1036.448792] xpadneo xpadneo_welcome_rumble start [ 1037.431493] xpadneo xpadneo_welcome_rumble took 980ms [ 1037.431500] xpadneo 0005:045E:0B05.000A: Xbox Elite Wireless Controller [f4:6a:d7:07:04:c9] connected [ 2246.688986] xpadneo 0005:045E:0B05.000B: pretending XB1S Windows wireless mode (changed PID from 0x0B05 to 0x02E0) [ 2246.688990] xpadneo 0005:045E:0B05.000B: report descriptor size: 1225 bytes [ 2246.688991] xpadneo 0005:045E:0B05.000B: fixing up report descriptor size [ 2246.688992] xpadneo 0005:045E:0B05.000B: fixing up Rx axis [ 2246.688993] xpadneo 0005:045E:0B05.000B: fixing up Ry axis [ 2246.688994] xpadneo 0005:045E:0B05.000B: fixing up Z axis [ 2246.688994] xpadneo 0005:045E:0B05.000B: fixing up Rz axis [ 2246.688995] xpadneo 0005:045E:0B05.000B: fixing up button mapping [ 2246.689554] xpadneo 0005:045E:0B05.000B: battery detected [ 2246.689567] xpadneo 0005:045E:0B05.000B: gamepad detected [ 2246.689568] xpadneo 0005:045E:0B05.000B: enabling compliance with Linux Gamepad Specification [ 2246.689611] input: Xbox Elite Wireless Controller as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:11/0005:045E:0B05.000B/input/input48 [ 2246.689705] xpadneo 0005:045E:0B05.000B: consumer control detected [ 2246.689730] input: Xbox Elite Wireless Controller Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:11/0005:045E:0B05.000B/input/input49 [ 2246.689765] xpadneo 0005:045E:0B05.000B: mapping profiles detected [ 2246.689767] xpadneo 0005:045E:0B05.000B: keyboard detected [ 2246.689789] input: Xbox Elite Wireless Controller Keyboard as /devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:11/0005:045E:0B05.000B/input/input51 [ 2246.689860] xpadneo 0005:045E:0B05.000B: input,hidraw8: BLUETOOTH HID v9.03 Gamepad [Xbox Elite Wireless Controller] on 2c:6f:c9:1d:25:de [ 2246.689863] xpadneo 0005:045E:0B05.000B: controller quirks: 0x00000018 [ 2246.689864] xpadneo xpadneo_welcome_rumble start [ 2247.672518] xpadneo xpadneo_welcome_rumble took 984ms [ 2247.672524] xpadneo 0005:045E:0B05.000B: Xbox Elite Wireless Controller [f4:6a:d7:07:04:c9] connected

Device 003: ID 0bda:b00b Realtek Semiconductor Corp. Realtek Bluetooth 4.2 Adapter

Bus 001 Device 003: ID 0bda:b00b Realtek Semiconductor Corp. Realtek Bluetooth 4.2 Adapter Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 224 Wireless bDeviceSubClass 1 Radio Frequency bDeviceProtocol 1 Bluetooth bMaxPacketSize0 64 idVendor 0x0bda Realtek Semiconductor Corp. idProduct 0xb00b Realtek Bluetooth 4.2 Adapter bcdDevice 1.10 iManufacturer 1 Realtek iProduct 2 Bluetooth Radio iSerial 3 00e04c000001 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x00b1 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0009 1x 9 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0009 1x 9 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 2 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0011 1x 17 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0011 1x 17 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 3 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0019 1x 25 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0019 1x 25 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 4 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous can't get debug descriptor: Resource temporarily unavailable Synch Type None Usage Type Data wMaxPacketSize 0x0021 1x 33 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0021 1x 33 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 5 bNumEndpoints 2 bInterfaceClass 224 Wireless bInterfaceSubClass 1 Radio Frequency bInterfaceProtocol 1 Bluetooth iInterface 4 Bluetooth Radio Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0031 1x 49 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0031 1x 49 bytes bInterval 1 Device Status: 0x0001 Self Powered

Additional Context

kakra commented 2 years ago

This problem is tracked here: https://github.com/bluez/bluez/issues/123

It can be caused by radio interference from nearby Bluetooth devices running concurrent scanning requests, and it can also be caused by sending rumble commands to the controller. This problem cannot be fixed by xpadneo, it's somewhere in the Bluetooth stack of Linux and doesn't occur on other stacks (like Windows, or Android).

Using a different dongle may work around that problem, e.g. a CSR branded (however, there are a lot of CSR clones out there that may behave oddly). Reverting to an older kernel or older bluez packages may also work around that. The root cause hasn't been reliably identified yet.

bjb1959 commented 2 years ago

Any suggested brand of CSR dongle you recommend? I am ok with usb mode but it would be nice if I could get wireless to work consistantly.

kakra commented 2 years ago

I never tested the Realtek dongles... But I've been most successful with TP-LINK UB400 dongles which are actually CSR chipset inside. But the nature of the error suggests that this isn't really a one hardware vs another issue - the problem is more likely somewhere in the software stack - and MS may be involved here in how they implemented the controller firmware as I could lately reproduce some Bluetooth quirks with the controllers even on Windows using CSR 4.0 dongles.

kakra commented 2 years ago

BTW: There's probably a firmware update coming in the next months which upgrades all Xbox Bluetooth controllers to the Bluetooth LE protocol - that's the one used by Xbox Series X/S controllers, and it seems to work much more reliable with latest kernels and bluez versions. So you may just wait until the firmware update is officially available.

If you own a Xbox (or a friend does) and your account is enrolled in the Xbox Insiders program, it may be possible to update the firmware already to an alpha version. xpadneo can support these but the button mappings may be wrong (this is currently being worked on). If you have the chance to upgrade the firmware, be prepared to tinker around, you could help figuring out the needed patches for xpadneo to support the mappings correctly. We have an open pull request for upgrade Xbox One S controllers.

bjb1959 commented 2 years ago

thanks for the heads up. I'll just wait until the firmware rolls out for Ubuntu.

kakra commented 2 years ago

You won't get the firmware in Linux, you'd need to install it using an Xbox or a Windows machine. It will be applied to the controller, then you can pair it in Linux again.

bjb1959 commented 2 years ago

I have windows 10 and 11 installed on VMware so I can do it through one of those. Thanks.