How to connect an Xbox One S controller via Bluetooth in Pop!_OS 18.04 (Ubuntu 18.04)
In Pop!_OS 18.04 (which is based on Ubuntu), connecting an Xbox One S controller via USB works out of the box and detected by Steam automatically. No additional steps necessary. I've been gaming mostly on my laptop so I've just being using a USB cable so I won't have to think about batteries.
However, I've recently moved to a new AirBnB with a nice big screen TV so I wanted to try it out and using a Bluetooth controller would of course be a better experience as I can sit far away from the TV. So I turned on Bluetooth and it automatically detected the Xbox controller and was able to pair it with my laptop successfully. But the Bluetooth connection kept disconnecting.
After some Google searching, it turns out there's a package you can install and a one-line configuration you can use to fix this issue. Since Pop!_OS is not so popular, I searched specifically for Ubuntu and found a few slight variations of the configuration required. After a couple of tries, this is the one that worked for me on 18.04:
Step 1: Install sysfsutils
sudo apt install sysfsutils
Step 2: Add the following at the end of /etc/sysfs.conf
module/bluetooth/parameters/disable_ertm=1
FYI: ERTM stands for "Enhanced Re-Transmission Mode" which is some Bluetooth feature.
Re-start, re-connect your controller, and you're all set!
This only needs to be done once and your Xbox One S controller will automatically connect as soon as you turn it on next time. No additional configuration needed on the Steam side, the games will automatically pick up the controller when they launch.
Happy gaming! :)