Ubuntu24.04でBluetooth接続が切れる場合の対処

ALL
スポンサーリンク

Ubutnu24.04で Bluetooth接続が一定時間たつと切れたりしますが、これはサウンドデバイスがアイドル状態になってサスペンドしているためです。
サスペンドしないようにするには、次の設定を行います。

/usr/share/wireplumber/main.lua.d/90-enable-all.lua で load_script(“suspend-node.lua”) を次のようにしてコメントアウトします。

-- load_script("suspend-node.lua")

続けて ~/.config/wireplumber/bluetooth.lua.d/51-disable-suspension.lua を作成します。

mkdir -p ~/.config/wireplumber/bluetooth.lua.d/

の後に、51-disable-suspension.lua を次の内容で作成します。

table.insert (bluez_monitor.rules, {
  matches = {
    {
      { "node.name", "matches", "bluez_input.*" },
    },
    {
      { "node.name", "matches", "bluez_output.*" },
    },
  },
  apply_properties = {
    ["session.suspend-timeout-seconds"] = 0,
  },
})

wireplumber を再起動します。

systemctl --user restart wireplumber

wireplumber を再起動すると Bluetooth接続が切断されるので、再度接続します。

Bluetooth接続後に次のコマンドを実行し、出力結果に “session.suspend-timeout-seconds”: 0 の行があればOKです。

pw-dump | grep "timeout"

上記設定をしても、時々Bluetoothの切断が発生することがあります。その際は自動的に再接続が行われます。
この場合、syslogに次のように wireplumber で error 24 のログが残っています。

wireplumber[1912]: 0xaaaad2d0df68: error 24
wireplumber[1912]: Failed to release transport /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx/sep2/fd0: Method "Release" with signature "" on interface "org.bluez.MediaTransport1" doesn't exist

この切断は、どうもBluetoothプロトコルの L2CAP のバグで、回避策も無さそうなので修正を待たなくてはいけないです。

x86_64 5.83-2.fc41 – spa.bluez5.sink.media error 24 – Philips TAH4205 · Issue #1444 · bluez/bluez

参考

PipeWire – ArchWiki (再生開始時に明らかな音声の遅延やポップノイズ/音割れが発生する)

コメント