DebianのBlueZでAACを使えるようにする

DebianのBlueZでAACを使えるようにする

どうも、最近はとあるゲームデータを解析したりしてるたいぷりんぐです(?)
(それについてはもしかしたらまた記事を書くかも)

DebianのBlueZは技術的制約™によってAACに非対応ですが、不足してるライブラリを入れてやれば使えるようになります。

不足しているライブラリを導入する

その1: libspa-codec-bluez5-aac.so
$ mkdir libspa-bt-tmp && cd libspa-bt-tmp
$ curl -O https://ppa.launchpadcontent.net/aglasgall/pipewire-extra-bt-codecs/ubuntu/pool/main/p/pipewire/libspa-0.2-bluetooth_0.3.65-4%7Eglasgall1_amd64.deb
$ dpkg -x libspa-0.2-bluetooth_0.3.65-4%7Eglasgall1_amd64.deb .
$ sudo cp ./usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/libspa-codec-bluez5-aac.so /usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/
$ sudo chmod 644 /usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
その2: libfdk-aac.so
$ mkdir libfdk-aac-tmp && cd libfdk-aac-tmp
$ curl -o libfdk-aac.pkg.tar.zst https://archlinux.org/packages/extra/x86_64/libfdk-aac/download/
$ tar -xvf ./libfdk-aac.pkg.tar.zst
$ sudo cp ./usr/lib/libfdk-aac.so* /usr/lib/x86_64-linux-gnu/
$ sudo chmod 644 /usr/lib/x86_64-linux-gnu/libfdk-aac.so*

bluetoothdとPipeWireを再起動

$ sudo systemctl restart bluetooth
$ systemctl --user restart pipewire

動作確認

自分はA2DP SinkのコーデックにAACを使いたかったので、手っ取り早く接続元のスマホの開発者向けオプションから確認しました。
コーデックの選択肢で”AAC”が選択できるようになっていました。