-
-
Notifications
You must be signed in to change notification settings - Fork 58
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
[Bug]: Xbox controllers using FW 5.x don't support rumble #69
Comments
Hey I hope this helps, I'll work on it a little more today and see if I can get somewhere with these
|
wondering if this helps anyone with anything... |
Thanks @wiredopposite , @microbmen Apparently it is easier that I thought. The "rumble report" seems to be the same. So in theory I just need to call |
seems to be work, closing it as fixed. Requires this patch in BTstack though: bluekitchen/btstack#574 |
Thanks, I'm testing it out and sending rumble with Steam works (I think it sends a 100% value), but when actually playing a game that sends varying rumble values it seems to disconnect the controller immediately and the gamepad state reported by Bluepad32 gets stuck on the last state reported by the controller. It works fine up until the rumble data is sent and it doesn't happen with non-Xbox controllers. I'm not sure if I did something wrong including the new version of BTStack and Bluepad32 in my ESP32 PlatformIO project, I replaced BTStack with PR 574 and Bluepad32 with commit 1bd46a7, is there something else I'd need to do? |
weird... which board are you using ? Also I'm a bit confused. How Steam and Bluepad32 are related ? |
I'm using a normal ESP32 dev board, connected via i2c to an RP2040 emulating an XInput controller (gets right/left uint8 motor values from host), those are sent to the ESP32 and setRumble is set based on the higher of those values.
I thought maybe I was updating rumble too often so I tried only polling rumble and calling setRumble once every 100ms, but that results in Xbox controller rumble working on the first setRumble call, but not any subsequent calls, while it still works normally on my other DS4/Dualsense controllers. That way the Xbox controller does not disconnect, it is weird. Edit: I wrote a simple test to send rumble to the controller every second, it sends the first one, then prints "Xbox: Failed to send rumble report, error=0xc" every other time, maybe you can tell me if this is actually a bug or if my project is just setup incorrectly: https://github.com/wiredopposite/bluepad32_rumbletest |
@wiredopposite ah... yep. how did you patch BTstack... you need my patch. Probably you patched it but forgot to "install" it ? |
Yes you're right, I'm not totally sure what exactly was wrong but after completely restarting fresh it's now working as expected, thanks |
What happened?
Rumble works in Xbox controllers when they are using firmware 3.x and 4.x
But not when using FW 5.x.
This is because v5.x is using BLE, and the the new way to rumble was not implemented
Bluepad32 Version
latest from develop branch
Bluepad32 version custom
Example: Using Git develop branch commit hash #xxxxxxx
Bluepad32 Platform
Other
Platform version
All
Controller
Xbox Wireless controller
ESP32 chip
ESP32
ESP32 board
ESP32-S3-WROOM1 DevKit from Lolin. This is the store URL: https://example.com
OS
None
Relevant log output
No response
Relevant sketch
No response
The text was updated successfully, but these errors were encountered: