Arch Linux (GNOME)でBluetoothスピーカーの音質が悪くなる問題の解決

私は部屋では

で音楽を再生している。Arch Linux (GNOME)上でこれを使おうとしたところ、ペアリングと再生自体はできるのだが、音質が極端に悪くなってしまって困った。具体的には酷いノイズが乗る。

解決策を調べたのだが、再生ができないという報告はあっても音質が悪いという報告は見つからず、少し手間取った。 備忘録的に試したことと結論を記しておく。 解決策だけ知りたい人は、最後の結論だけ読めば大丈夫。

今までの操作

GNOMEの設定からBluetoothを有効化、GUI上でペアリング。同じく「サウンド」の「出力」でデバイスを選択すると、一応音は出る。 プロファイルがHSP/HFPA2DPの2種類選択できるが、どちらを選んでも酷いノイズが乗る。

試したこと

Bluetoothスピーカーやイヤホンについては、

Bluetooth ヘッドセット - ArchWiki

にArch Wikiの記事がある。

読んでみると、プロファイルにA2DPを選択すればいいらしい。しかしGNOME上から選択しても効果はない。 bluetoothctlで設定してみるが、結果は同じ。

pavucontrolというのをインストールしてみる。これはGUIでpulseaudioの設定ができるツールらしい。 開いてこちらでA2DPを選ぼうとすると、こちらでは無効(だったか?詳細は忘れた)と表示されている。 つまりA2DPに設定できていなかったのが原因らしい!

Bluetooth ヘッドセット - ArchWiki

の箇所にそれらしきことが書いてあるので、pacmdコマンドを試してみるが、エラーが出て失敗する。

そこで、「GDM ユーザーで pulseaudio ソケットをマスク」というのを試してみたところ、無事A2DPが選べるようになり、ノイズを消すことができた。

結論

「GDM ユーザーで pulseaudio ソケットをマスク」すればよい。 具体的には、

# mkdir -p ~gdm/.config/systemd/user
# ln -s /dev/null ~gdm/.config/systemd/user/pulseaudio.socket

を実行する。sudoでやらないと権限が足りないはず。 その後再起動してA2DPを選べば、問題は解決するはず。

残る問題

これをやっても何かの拍子に音声が遅延して乱れたりすることが非常に多い。 接続直後は問題ないのだが、音声が途切れたりすると起こるようだ。 結局相性が悪いのかもしれない。