Bluetooth Audio Breaking Up Fix

So I use my Bose bluetooth headset to listen to audio while working on my linux rig. I have had an issue with audio breaking up badly at times and on Ubuntu based distros would even cause the PC to freeze up. At any rate the audio break issue continued for me on EndeavorOS and I spent allot of time searching for a fix. Finally began reading the Arch guides on bluetooth and found out about the 50-bluez-config.lua file! @ /usr/share/wireplumber/bluetooth.lua.d/ I then went looking through the config piece and found the --["session.suspend-timeout-seconds"] which is set to 5 by default. I set it to 0 – 0 disables suspend then reboot and this seems to have resolved the issue. I will continue testing over the next few days and hopefully it will continue to be working normally. Just thought I would share this for those of you who use bluetooth headsets and are having the same issue.

3 Likes

/usr/share/wireplumber/bluetooth.lua.d/50-bluez-config.lua

is the file you edited?

Yes that is correct. I corrected my file path in the original post.

1 Like

@joekamprad can we have this set to 0 in Endeavour by default?

Please don’t. We shouldn’t fix individual device quirks by changing the otherwise working default (datapoint: me) for everybody.

This should probably go under “Troubleshooting” into the Arch wiki. Or EOS should maintain a pkg with a wireplumber config script specifically targeting reported devices. An EOS “general-pipewire-wireplumber-quirks” package fixing known device issues could actually a nice distro feature.

2 Likes

Real Bugs should get fixed upstream and users should report with providing needed details.

And this default with 5 is somehow a power saving feature. . . Plus I am sure it will get solved soon (or should :wink: )

2 Likes

I can’t find it in /usr/share/wireplumber/bluetooth.lua.d/. Where?


Wireplumber 0.5 changed the configuration system, that means a new file layout and configuration snippets.

Going from this documentation example put a file into ~/.config/wireplumber/wireplumber.conf.d/my-bluetooth-config.conf containing:

monitor.bluez.rules = [
  {
    matches = [
      {
        ## Matches all sources.
        node.name = "~bluez_input.*"
      }
      {
        ## Matches all sinks.
        node.name = "~bluez_output.*"
      }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
      }
    }
  }
]

Restart wireplumber (or better do a full reboot) and it should work.

I have tried it, but my bluetooth headset still stuttering. My OS become freeze because of it.

  • In my ~/.config, the wireplumber and wireplumber.conf.d folder are not exist. So I create it.
  • Make a new file my-bluetooth-config.conf inside it.
  • Fill in the file with the code you provided.
  • Reboot.

I don’t know whether my EndeavorOS use wireplumber or not.