Bluetooth is disabled by default in game mode

A recent Bazzite update about 2 weeks reset all the Steam settings and logged our user profiles out. Since then, bluetooth stopped working on boot. To get bluetooth working, I was having to unplug and re-plug in the USB bluetooth adaptor every time I turned the computer on.

I did some troubleshooting today. I booted the computer, then used a wired keyboard to go to desktop mode and view the KDE bluetooth settings. I noticed that my wireless controller connected fine after I switched to desktop mode. I restarted the computer, and in game mode went to the ‘Bluetooth’ settings. I noticed the toggle was off.

If anyone is having a similar problem, where their Steam settings got reset and now their controllers won’t connect unless they unplug and re-plug in their bluetooth adaptor, my solution was simple. Plug in a keyboard, and in game mode, go to Steam’s bluetooth settings and turn bluetooth on. Game mode will now automatically have bluetooth switched on whenever you restart.

If possible though, I would love to see bluetooth switched on by default in game mode, like it is in KDE desktop mode, so no one else runs into this situation.

Thanks

This happened to me again today after a Bazzite stable update. I got logged out of all Steam accounts and bluetooth was switched off.

I had to plug a wired mouse into my HTPC, then log into a Steam profile with the QR code, then go to ‘Settings > Bluetooth’, then turn on the bluetooth toggle.

I added this to the following Github issue: No bluetooth after update · Issue #3112 · ublue-os/bazzite · GitHub

There is another problem here. After turning on the PC, Bluetooth autopairing does not work, even if it is turned on. To connect the gamepad via Bluetooth, you need to go to the Bluetooth menu, it turns on the search, and only then the gamepad is connected. How can I make autopairing always work, like on steamdeck?

We need to pray to ChatGPT God. I found the solution with it:

Auto-connect Bluetooth Gamepad on Bazzite

This guide sets up your system so your Bluetooth gamepad connects automatically when turned on. It uses a udev rule for instant connection and a systemd timer (every 5 seconds) as a fallback.

Step 1: Create the auto-connect script

Create the script folder:

mkdir -p ~/.local/bin

Create the script:

nano ~/.local/bin/bt-autoconnect.sh

Paste the following code (replace 11:22:33:44:55:66 with your gamepad’s MAC address):

#!/usr/bin/env bash
DEVICE=“11:22:33:44:55:66” # replace with your gamepad MAC

Check if already connected

if bluetoothctl info “$DEVICE” | grep -q “Connected: yes”; then
exit 0
fi

logger “bt-autoconnect: trying to connect $DEVICE”
/usr/bin/bluetoothctl connect “$DEVICE”

Make it executable:

chmod +x ~/.local/bin/bt-autoconnect.sh

Step 2: Create the systemd unit

Create the systemd folder:

mkdir -p ~/.config/systemd/user

Create the service unit:

nano ~/.config/systemd/user/bt-autoconnect.service

Paste:

[Unit]
Description=Auto-connect Pro Controller

[Service]
Type=oneshot
ExecStart=%h/.local/bin/bt-autoconnect.sh

Step 3: Create the systemd timer (every 5 seconds)

Create the timer unit:

nano ~/.config/systemd/user/bt-autoconnect.timer

Paste:

[Unit]
Description=Fallback: try to connect gamepad every 5s

[Timer]
OnBootSec=5
OnUnitActiveSec=5s
Unit=bt-autoconnect.service

[Install]
WantedBy=default.target

Enable the timer:

systemctl --user daemon-reload
systemctl --user enable --now bt-autoconnect.timer

Step 4: Create the udev rule for instant connection

Create the udev rule file:

sudo nano /etc/udev/rules.d/99-bt-autoconnect.rules

Paste (replace 11:22:33:44:55:66 with your gamepad MAC):

ACTION==“add”, SUBSYSTEM==“bluetooth”, ATTR{address}==“11:22:33:44:55:66”, TAG+=“systemd”, ENV{SYSTEMD_USER_WANTS}+=“bt-autoconnect.service”

Reload udev rules:

sudo udevadm control --reload-rules
sudo udevadm trigger

:small_blue_diamond: How it works

udev: triggers the service immediately when the gamepad is turned on.

systemd timer: checks every 5 seconds and retries connecting if the first attempt failed.

:white_check_mark: With this setup, your Bluetooth gamepad should connect almost instantly and reliably every time.

I’m glad you found a workaround and thanks for sharing it. I hope your issue doesn’t come back after a Bazzite system update, which is what I experience.

For myself, I’m not sure that solves my issue of “Bluetooth turning off after a system update”. Or if it does, I’m guessing it shouldn’t need multiple system files and specific Bluetooth device MAC addresses to fix. I have 6 Bluetooth devices I connect to my machine (not all at once), and manually putting their MAC addresses into scripts doesn’t sound very scalable. For now I’ll stick with manually turning the Bluetooth toggle on with a wired mouse when it happens, and hope it gets fixed via a system update at some point.

Also, I have discovered a partial solution for my problem. You need to turn on the gamepad (for my situation) before the computer turns on. Apparently, the system searches for bt-devices before switching on. But if the gamepad turns off in the process, it won’t connect again by itself. You need the mouse, this is terrible.