Monday, September 10, 2018

XBOX One and Steam Controller Bluetooth Disconnects Under Linux

This morning I was messing around with Steam Big Picture mode (under Fedora 28 Linux) and my Steam Controller. I was having trouble syncing the controller via Bluetooth LE. Gnome's Bluetooth setting pane could find the controller but it would continuously disconnect and reconnect. After a bit I was stumped and went to get my XBOX One S controller. Much to my dismay it wouldn't even connect despite being recognized by Gnome settings. Again I was stumped.

I finally threw in the towel and went to Google for help. I searched around a bit and found Ubuntu bug report #1769423. This was the exact problem I was having and luckily provided a kernel parameter to help mend the situation. To make it easy on anyone who stumbles upon this post I'll outline how to fix this problem below.

First open Gnome Terminal and type in this command.
sudo -s
This will drop you to a root shell. While in this shell don't dick around or do anything stupid. You can royally e'ff up your system. After you're in the root shell you'll want to type in the below command.
echo 1 > /sys/module/bluetooth/parameters/disable_ertm
This command disables ERTM within Bluetooth's protocols. ERTM stand for enhanced retransmission mode. It is an improved version of retransmission and flow control modes. ERTM is required when using an AMP (Alternate MAC/PHY), such as 802.11abgn. If you're using AMP then this might cause a problem. For my needs I had no use for ERTM so disabling it was fine. The above command will have to be done with every reboot unless you add a kernel parameter disabling ERTM from the get go. If you want to disable ERTM at boot time you can do so by editing the grub file located in /etc/default/. Just add bluetooth.disable_ertm=1 in the GRUB_CMDLINE_LINUX section of the config file. I put it at the begining of the "rhgb quiet" part. Make sure it's between the " ". If confused check out the image below.

When you're finished editing /etc/default/grub you'll want to update grub to reflect the changes. Just type grub-mkconfig into the root shell. This command will display some text and finish. Make sure you exit or close the terminal after you finish. Like I said you can destroy your Linux install while messing around with the root shell if you're not careful.

And that's the end of the story. The above fixed my problem and got me back to gaming. Keep in mind the above info is for Fedora 28. It's may or may not pertain to other Linux distros.

No comments:

Post a Comment