LinuxのPipeWireを利用していてBluetoothのヘッドホンが音飛びする場合の対処(かもしれない)

Bluetooth Audio とLinux。なんとなく相性悪そうなやつですね。ただのイメージですが。

症状

音楽の再生時に音飛び(一時的に音が消える)減少が発生する。Bluetooth AudioのCodecが何であっても関係がない状態。SBCとかでも発生している。再生できる時もあるが基本的にはブツブツな感じ

  • PipeWire audio ( POP_OS 22.04 )
  • Bluetooth Audio head set

解決方法

Flatpakで入っている(ここが一番怪しいけど)ため以下の cd $HOME/.local/share/flatpak/runtime/org.freedesktop.Platform/x86_64/21.08/3e9184ebb14aa1a827518493704b7d45fb80136bcb31b6fac096f55be53048f3/files/share/pipewire/media-session.d/ ディレクトリに入っているファイルを修正する。ローカルに普通に入っている場合には /etc/pipewire などにあるはず

alsa-monitor.conf → session.suspend-timeout-seconds = 0 # 0 disables suspend
bluez-monitor.conf → session.suspend-timeout-seconds = 0 # 0 disables suspend

サスペンドしてしまうことによる原因がありそうなのでこの値を0に変更

pipewire.conf  → default.clock.rate = 44100 # default.clock.rate = 48000

これも何処かに書いてあったので修正(※こちらはなくても良いかもしれない)して、PCを再起動

結果

音飛びは減りました(というかほぼなくなりました)正確にどの対処であるとかほんとにFlatpakの場所を見ているのかとか確認していませんが状況的には改善していますのであっていたのかな。しばらく使っていてダメそうならまた原因を探したいと思います。

xremapを利用して特殊なショートカットをマッピングしてみる(Alt+c → Shift+Ctrl+c など )

スペースキーの左側の「ALT」キーを普段は「Katakana」キーにマッピングしています。これでIME側の設定で日本語を解除するのに利用しています(USキーボードを使用しておりmacosでの挙動を模倣しています)
やりたいことは次のようになります。

ショートカット変更後のキー
Katakana + cShift + Ctrl + c
Katakana + cShift + Ctrl + v

macOSでは、キーと Ctrl キーの使い分けがきちんと出来ておりTerminalとかでコピーとCtrl+cをうまく分離しています。Linuxではこれらを避けるために多くのアプリは Shift + Ctrl + c にショートカットが割り当てられていることが多いです。

WaylandもXでもどちらでも利用できる xremap というツールでこれを実現できました。

普段 macの場合には Karabiner Elements を利用してコマンドキーを一回押した場合に Hiragana / Katakana にしています。Linuxでも同様に ALT_R を Katakana にしています。そのため、うまくこのキーを利用したいので、

キー1回長押し
KatakanaKatakanaAlt_R

に設定するようにします。そしてこのAlt_Rのショートカットを設定するようにします。

ショートカット変更後のキー
Alt_R + cShift + Ctrl + c
Alt_R + cShift + Ctrl + v

今回は、Alt_Rという装飾キーmodifiersを利用しました。Katakanaキーを直接virtual_modifiersにしていすると単体でKatakanaキーが有効化できなくなったので一旦Alt_Rを経由して実現しています。

modmap:
  - remap:
      Katakana:
        held: Alt_R
        alone: Katakana
        alone_timeout_millis: 100

keymap:
  - remap:
      Alt_R-c : SHIFT-CTRL-c
      Alt_R-v : SHIFT-CTRL-v

xremap自体はバイナリで提供されておりダウンロードしてすぐに使えますのでまずは試してみるのが良いですね。他にも色々なことができそうなのでもう少し色々見てみたいと思います。

参考

Windows, Linuxのアプリ(Game)の導入を支援する最強の「Wine」管理ツール Lutris(Wine以外も使える)

Read More

Lutisが素晴らしいというのを目にしながらあまり有用性を感じてなかったのだがこれは、Wineのバージョン管理 が出来る素晴らしいアプリだ。

1.Wineの管理機能が簡単に呼び出せる

環境変数を切り替えて色々な設定を呼び出すのは意外に手間。メニューから呼び出すことが出来ます。

2. Wine(Runner)を切り替えることが出来る

これはなかなか便利で新しいエンジンを試すことが出来ます。これはネイティブにWineを入れてしまうと結構骨が折れることを簡単に実現できています。

追加でどんどん入れることも出来ます。

3.実行環境を設定が詳細に出来る

Runner(Wine)だけでなくてSystemの設定もある程度変更できます。この場合、ディフォルトでは NVIDIA (Prime Render )がOFFなのですがONに出来たり、FPSを表示する MangoHudを一緒に起動できたりします。

4.同じアプリを別バージョンを入れることが出来る

意外に重要でDiablo2のModをするときとかはクリーンな環境で新しいものを作って遊んでいたので別バージョンが入れれるってのはWindowsを使わないでWineを使うメリットの1つなのでよくわかっていますね。

5. 半端ないプリセット

膨大なゲームが登録されています。Wine経由のWindowsのゲームもメジャーなものは結構あるのではないでしょうか?普段あそんでいるDiabloも沢山登録されています。これらのゲームに対して事前の設定がされてそのままでも動くようになっていると思うと素晴らしいですね。

おまけ

最近登場した、Diablo2 Resurrected もBattle.netアプリ経由で起動(購入)する必要がありますね。無事に起動するようです。

そんなアプリの設定を見るとだいぶ大変そうなことが想像できます。先人の苦労に感謝ですね。