-
Notifications
You must be signed in to change notification settings - Fork 118
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
xbox series x controller connected but not working #259
Comments
I'd like to attach to this issue because I have the same problem with my Series X Controller and my Raspberry PI 4 (Rasbian buster / RetroPie). Some time it says connected but the X keeps blinking and sometimes it's in a connection loop and keeps trying to connect. System information# uname -a
Linux retropie 5.4.72-v7l+ #1356 SMP Thu Oct 22 13:57:51 BST 2020 armv7l GNU/Linux # xxd -c20 -g1 /sys/module/hid_xpadneo/drivers/hid:xpadneo/0005:045E:*/report_descriptor | tee >(cksum)
Controller and Bluetooth information |
Good to see I am not the only one :) A different machine with an Intel Wireless 7260 chipset gives me similar issues. I did manage to get the report_descriptor:
|
This is not an xpadneo issue, apparently. Secretly, I wish it would, then we could do something about it. But I found myself in a similar situation lately. But I was able to get it back to a working state by repeating the following steps until the link key appeared successfully in
I needed to repeat the steps for 5-10 times until the controllers successfully connected again, and after reboot, it would even auto-connect again now without waiting 30-60s. It looks like repeating the steps often enough clears some internal broken state in the controller, or it depends on the timing you're doing the steps at. Sometimes, it also works using the KDE GUI to pair the device by going through the "new device wizard" instead of using connect to select one from the devices shown. Whatever I did, it was important to remove the device first with |
Thanks! I tried your suggestion many times now, but no link key shows up. Do you think that the the missing link key is also causing the connect/disconnect loop later? The output of btmon makes me think it might be related (missing PIN or Key missing, so encryption fails, so the device disconnects):
What if we get a working link key from when the device is connected to Windows? Would that work? Also, what piece of software do you think is failing here? The bluetoothctl backend? The bluetooth driver? Something else? |
Yes, I think it's possible to get the link key from the Windows registry and put it into the Bluetooth info file - but I'm not sure if the format needs to be converted. But I think it's possible according to the very early development stages of this driver. Also, I do not remember where it is stored. Did you turn off ERTM? Otherwise, it won't work at all because the device disconnects due to invalid configuration profiles requested (which will result in a similar loop). Another difference may be that I'm using the L2CAP patch instead of disabling ERTM. It's in the misc folder. |
Also, there have been firmware updates fixing Bluetooth pairing and connection stability for the older models, maybe check if your model already has an update available. Windows will install firmware updates to the controller only in USB or GIP-dongle mode, not in Bluetooth mode. |
Same here. I have ERTM disabled. I tried your suggestion several time without success. |
I'm not sure what exactly fails here. It's in the Bluetooth stack for sure - but if that's the kernel or the bluez daemon, I'm not sure. If we look at Android which uses the Linux kernel but a different Bluetooth stack (fluoride), and seeing that the controller pairs without problems there, it looks like the problem is in the bluez daemon. OTOH, the controller seems to behave differently based on the Bluetooth stack it sees, and after all seeing that the L2CAP patch works around one of the problems points to the kernel. It may be a bad combination of all three: The kernel, the bluez daemon, and the firmware. If you manage to pair the controller by transferring the link key from Windows to Linux, it may be interesting to see if the controller presents us a different HID descriptor - and thus may have a "Windows mode". Maybe we should check if the Linux kernel of Android uses some Bluetooth patches to support its fluoride daemon better. I haven't yet been able to compile fluoride in Linux. |
Skimming through the commits to |
I tried to compile fluoride but without success, i get error using gn as a build system. |
Now my controller works. I don't now how but it's fixed. |
What did you do? |
I upgraded the firmware of the controller with the windows app in a virtual machine. The upgrade was unsuccessful but now in linux bluetooth works. |
Yeah, there may a problem with updating in a virtual machine in that the controller reboots into a flash mode, and thus disconnects from the VM. You'd need to immediately re-connect it in that case for the firmware update to be successful. |
Only a little thing is changed: |
ooops, i hope everything is ok |
Should be, if no firmware is being sent in that mode, nothing happens and the device will boot back normally after re-plugging it.
Looks like MS likes to shuffle buttons around again on firmware update. We should inspect that and fix the button, and if we cannot properly detect one or the other firmware, I'd prefer going with what the newer firmware provides. |
also X and Y are inverted |
Also had this problem, booted into my windows 10, updated the controller's firmware, fixed all issues... It seems the xbox sx require the update in order to function properly, as before the update it would connect and dc multiple times(not always rumbling). |
I booted into Win 10 and updated the firmware too but unfortunately I still can't get mine to work in Linux :( |
Similiar issue, on first pairing I noticed
in journalctl, so I tried adding 0B13 entries to udev and modprobe. My controller now vibrates but the pairing light never stops flashing and it never appears in steam. |
See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
Should be fixed in my queued commits. I was seeing a similar problem for XBE2, and that resulted from an SDL2 upgrade that put the controller into its database. |
Having the same issue, I upgraded the firmware in Windows but that didn't make any difference.
|
I'd say you are in the reconnect loop then currently. The udev error is there because the device is already gone, our driver wasn't even loaded yet. Do you see the link key in the Bluetooth database? |
Found some time to look at this again. I extracted the key information from the windows registry and added a LinkKey section to the There is no LinkKey section in the bluetooth info file. |
I'm suspecting that there is some internal state that gets cleared by luck sometimes, otherwise I cannot explain the seemingly random behaviors. The link key section shouldn't be missing, tho. You might by lucky to get it when trying to pair again. |
I can confirm that booting into Windows, pairing the controller, and then unpairing it while it's connected fixes the failure to pair. Steps I followed:
|
I have similar issues as reported in this bug: pairing/connecting seems successful, the controller rumbles, but "X" button continues flashing and there's no More remarkably, setting I tried Linux 5.12rc2, which as the L2CAP patch, along with both
report_descriptor
|
There are a lot of Bluetooth patches floating around currently, we may need to wait until 5.12.0 settled. Especially, there are patches working on BLE and privacy mode. |
@kakra I see. Can you link to any patches in particular that you think can help? Thanks! |
@intgr I've created a project about all known Bluetooth problems which may be useful but I cannot pinpoint any particular commits to fixing any particular problem. The commits are more like general improvements, and the sum of those may make the controller work more reliably (or the opposite for that matter). When we get to know about particular kernel versions fixing a problem, I'll add columns to the project identifying the kernel or Bluez version and will move issues there. In general, it seems like onboard Bluetooth chipsets are more problematic than USB Bluetooth dongles. This may be due to many onboard chips requiring firmware, there are some commits around firmware loading bugs in the bluetooth kernel list. You may also want to try updating the linux-firmware package. But apparently there's not much more we can do except sit and wait, and yes, take note of any observations. |
See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
See-also: #259 Signed-off-by: Kai Krakow <kai@kaishome.de>
See-also: #259 Signed-off-by: Kai Krakow <kai@kaishome.de>
I updated the Xbox series x controller firmware and edited all bluetooth related environment variables just to get pairing issue and controller light stayed blinking. My other controller, Xbox One S controller works without any issues. Then I remembered that I have extra bluetooth dongle and I disabled the onboard bluetooth chipset. Now both of my controllers are working with this usb dongle.
So there are pairing issues with Series X controller when using the Intel Corp. AX200 Bluetooth chipset but it pairs just fine the xbox one controller. |
On Retropie with current updates (kernel 5.10.17) and bluez 5.58, it's not possible to pair/connect to Xbox Wireless Controller (4416). The Dude on #279 has the same controller it seems ( the MAC of these controllers begin with 44:16:xx ) so my question just got answered. |
There may still be subtle differences with chipset revision or actual implementation. Usually, those chipset share the same OEM MAC but have custom board designs, different firmware versions or slightly different wiring and quirks. That's probably why the btusb driver supports such vast amounts of very different dongles: In the end, it's mostly the same chip design and they work all kind of the same. |
See #295 (comment) for a workaround proposed by stobb3s and also mentioned in https://bbs.archlinux.org/viewtopic.php?pid=1678405#p1678405 as early as 2016! |
Now it seems to be working with kernel 5.14 and following BT config
|
@rinnaz Which bluez version? |
Can you add some details? |
@kakra bluez 5.53 @ahmtcn123 Sure. Let me know if you are interested in something specific
Modifying |
This may be due to using |
Tests showed that device privacy is actually not needed for the Xbox BLE controller. But the device seems to support JustWorks re-pairing. See-also: atar-axis#295 See-also: atar-axis#259 Signed-off-by: Kai Krakow <kai@kaishome.de>
Closing old Bluetooth issues, please report to the bluez project if the problem persists. |
Version of xpadneo
v0.9-1-g84cabe9
Severity / Impact
Critical
Describe the bug
Connecting the new xbox series x controller fails. Pairing seems successful (the gamepad rumbles), but the X button on the controller continues to blink. Both dmesg and bluetoothctl claim the device is connected. The gamepad is also visible in jspad (there is a /dev/js0), but I am unable to get any interaction with the device.
Disconnecting and reconnecting brings the device in a reconnect loop.
I am on Ubuntu 20.04.1 (LTS). I tried with both my onboard Intel Dual Band Wireless-AC 3168 and a CSR8510 A10 Bluetooth dongle (same results). Today, I updated the controller's firmware to whatever is the latest version. The controller connects perfectly to my Android device.
Steps to Reproduce
See xpadneo-bluetoothctl.txt below. Basically just following the README.
Expected behavior
The device should connect (it seems it does?) and I should be able to use it.
System information
Controller and Bluetooth information
Additional context
Happy to help debugging this issue further!
The text was updated successfully, but these errors were encountered: