Steam for Linux

Steam for Linux

Gu1ll0me Aug 3, 2019 @ 1:08pm
Xbox One S rumble support with bluetooth
Hi everybody,

My issue is about the rumble support for the Xbox One S controller connected using a bluetooth dongle in Linux. The problem is that the controller starts to rumble and never stop in games that supports rumble. I tested Helldivers-Proton, FEZ-Native and MGS5-Proton. The only way to stop the controller rumbling is to press the Xbox button for 5 seconds to power off the controller. I spend many hours to figure out where the problem could come from and I finally managed to reproduce it every time.

My system details:
Distro: ArchLinux (Linux arch 5.2.5-arch1-1-ARCH), KDE 5.16.4
Bluetooth dongle: Sabrent BT-UB40 (CSR chipset)
Steam Beta with Proton 4.11
Xbox configuration support: disabled
Enhanced Retransmission Mode (ERTM) fix applied[wiki.archlinux.org]

The first time I pair the controller and starts a game, it works like a charm. The IDENTIFY button in the Steam controller options makes the controller rumble and the problem never occurs in game. It happens as soon as I quit Steam or I exit Big Picture. When I run Steam again (or start Big Picture) without rebooting the system, the IDENTIFY button doesn't works anymore and each time I start Helldivers, the "always rumble" bug occurs when I try to start a game (when the shuttle is ejected from the main ship).

I found some workarounds to solve the problem and make the controller rumble acting normally:
  • Never use the Steam > Exit menu.
  • Kill Steam with the `kill -9` command.
  • After the problem occurs, delete the controller from the bluetooth control panel in KDE and pair it again.

If I never launch Steam and use Lutris to launch my non-Steam games (Cuphead or Witcher 3), the problem never occurs.

I also tried with the Xbox configuration support enabled but I completely lose the rumble support.

I also tested multiple bluetooth dongles:
  • StarTech USBBT1EDR4 (CSR chipset): Same behavior than the Sabrent dongle. The rumble works like a charm until I exit Steam.
  • All Broadcom chipset dongles I tested (Pluggable USB-BT4LE, Kinivo BTD-400 and ZEXMTE ZEXMTE012): The controller works great but without rumble support. The IDENTIFY button in Steam does nothing and no rumble in game.
  • 8BitDo adapter (??? chipset): Controller detected as a Xbox 360 controller. The problem never occurs but the XBox button starts to flash when I exit Steam and I can not use the controller anymore. I have to pair it again with the 8BitDo adapter button to use it again.
  • Mayflash Magic-NS (??? chipset): Exact same behavior than the 8BitDo adapter.
  • The official Microsoft Xbox Adapter[www.amazon.com]: Doesn't works at all. Can't pair the controller.

I also made several tests with the xpadneo driver[github.com]. This time, I can exit Steam and re-run it as many times as I want, the problem never occurs. Unfortunately, the "always rumble" bug comes back when I reboot the computer. I have to delete the controller from the bluetooth control panel in KDE and pair it again. The xpadneo driver also makes the rumble works on the Broadcom dongles: the rumble works with IDENTIFY option in Steam and also in game. Thanks to the main dev for his great work!

The bluetooth and rumble support for the Xbox One S controller seems good and the recent kernel integration[www.phoronix.com] is very promising.
Last edited by Gu1ll0me; Aug 3, 2019 @ 1:09pm
< >
Showing 1-6 of 6 comments
thetargos Aug 3, 2019 @ 2:08pm 
I can confirm most of your findings. Plus xbox support in Steam makes the controllers lose rumble in Proton, but not native games (I have two other 360 controllers, one wired, one wireless, plus one Xbox One S). Since my BT os broadcom, I need xpadneo to pair the controller. I have no issues with reboots, but I do not have the "always rumble issue", then again, my testing has been limited
Gu1ll0me Aug 3, 2019 @ 3:20pm 
I have not tested all possibilities me either. Disconnecting the controller from the bluetooth panel before exiting Steam seems to be a solution too.
robzombie91 Aug 3, 2019 @ 4:47pm 
Its not just steam, it does it on native apps and lutris games too, and im using a ctr dongle, ive heard that broadcom has it worse.
Gu1ll0me Aug 3, 2019 @ 5:11pm 
@robzombie91 I have never encountered this problem anywhere except with Steam. I should do more tests with Lutris and non-Steam games. The fast way for me to reproduce the problem was to launch Helldivers from Steam.
Last edited by Gu1ll0me; Aug 3, 2019 @ 5:12pm
thetargos Aug 3, 2019 @ 8:51pm 
Well, I can confirm: Proton without Xbox support running or without Steam running does have Rumble on my controller paired through BT with xpadneo, tested with Proton 4.11 and the default wine (~/.wine) profile with the control application and joystick test applet. Tested several times, connected by turning on the controller, disconnecting from the controller and through the BT control panel in my DE (GNOME, but I also use the Bluez application from XFCE), tested reconnecting without any major events (turn off and back on immediately) deleted the devices and paired again, so long as Steam is not running or I have not set support for Xbox gamepads in Steam, all works well. If steam is running and I have set Xbox gamepad support in it, rumble is disabled. Worth noting is that this happens for every controller I have, two xbox 360 controllers, one wired, one wireless with receiver, one DS4 through BT, one DS3 through BT, one WiiUPro through BT and one Game Cube controller with adapter [official and unofficial]

My BT dongle has a Broadcom chip (BCM20702A0) and thus far works very well.

My system:

Fedora 30, kernel 5.1.20
xpadneo
Proton 4.11
Wine 4.12.1-staging

With Wine all works OK. Even games under Steam for Windows with it.

Edit
Just tested some native games, RoTR and TR, Borderlands 2, Bioshock Infinite, Dungeon Defenders (native, not through Steam) work fine. Basically I am having issues with games through Proton.

Basically everyting works except for Proton on Steam and oddly enough that goes for all my gamepads.

Edit 2:
Indeed Xbox support in Steam is broked. Enabling it will yield every other controller without rumble support. Disabling it, will yield rumble support for my DS4, DS3 and WiiU controllers. How crazy is that?
Last edited by thetargos; Aug 3, 2019 @ 9:54pm
Marlock Aug 4, 2019 @ 2:20pm 
Originally posted by thetargos:
How crazy is that?
The day Valve makes their game controller support opensource...

I love all Valve has been doing for Linux gaming, but this is one piece of quirky code, that much is certain!

And unfortunately it seems as this feature will be held idefinitely in proprietary code as a unique selling point for Steam... It is understandable, afterall it is quite unique in their features, but sad that it can't be used elsewhere and more so because outside code contribuitions and upstreaming pieces of it seems hampered.
< >
Showing 1-6 of 6 comments
Per page: 1530 50

Date Posted: Aug 3, 2019 @ 1:08pm
Posts: 6