最短翌日発送!高速大容量のモバイルWi-Fiルーターの詳細はこちら
DIY・電子工作

【OpenAuto Pro】ラズパイをaptX HDやAACに対応させる方法

Galaxy S23 UltraのBluetoothコーデック選択画面 DIY・電子工作

※この記事には広告(アフィリエイトリンク)が含まれますのであらかじめご了承ください。

OpenAuto ProでワイヤレスAndroid Autoを利用する場合、Wi-FiだけでなくBluetoothでもスマートフォンと通信する必要があります。今回はそのBluetoothのコーデックと呼ばれる圧縮方式について。

まずOpenAuto ProはSBCしかサポートしていません。SBCというコーデックはすべてのBluetoothデバイスと互換性があり確実に利用できますが、他のコーデックと比較すると遅延が大きく、音質でも劣ります。aptXやAACなどもっと高品質なコーデックに対応させてほしいとフォーラムでも意見が上がっていますが、そこまで公式にサポートするのは負担が大きいのでサポートするつもりはないとのこと。。

ただデフォルトの状態ではSBCしか利用できませんが、ユーザーの手でaptX系やAACといったコーデックに対応させることは可能です。仕様上、LDACは利用できませんが、そこそこ高品質なaptX HDまでは対応させられます。現状は非対応ですがいずれはaptX Adaptiveもいけるかも…?

無線で接続するワイヤレスAndroid Autoを利用するならほぼほぼ必須の作業なので、備忘録がてらまとめておきます。

スポンサーリンク
スポンサーリンク

OpenAuto Proで利用可能なBluetoothコーデックについて

まずOpenAuto Proで利用可能なBluetoothコーデックについてまとめておきます。

デフォルトで利用可能なコーデックはSBCのみ

冒頭でも述べましたが、デフォルトの状態で利用可能なコーデックはSBCのみです。Raspberry Pi内蔵のBluetooth機能でも、USB接続の外付けアダプターを使用しても、そのままだとSBC以外のコーデックは利用できません。ぶっちゃけRaspberry Piの仕様ですね。

SBCはすべてのBluetoothデバイスが対応している標準のコーデックですが、品質面で他のコーデックに劣るのがデメリットです。

aptX系やAACは対応させることが可能

aptX HDなどのaptX系や、AACといったコーデックであれば、そんなに手間をかけずとも対応させることが可能です。Raspberry Piでこれらを扱えるようにすれば、自動的にOpenAuto Proでも利用できるようになります。いずれもSBCよりは高音質で低遅延なので、導入しない手はありません。

ちなみに使用されるコーデックは、基本的にデバイスが対応している中で高品質なものが自動的に選択されます。無印のaptXやAACは大抵のデバイスが対応しているとは思いますが、とりあえずどちらも導入しておけばOKです。

なおaptX系はQualcommが開発したBluetoothコーデックですが、Raspberry Piに内蔵されているBroadcom製チップセットでも利用可能です。しかしBroadcom製チップセットは別の問題を抱えているので、Qualcomm製チップセットを搭載した外付けアダプターを購入することをおすすめします。詳しくは以下の記事を参照。

LDACは対応させてもデコードできないのでAndroid Autoでは利用不可

高品質なBluetoothコーデックと言えばSONYが開発したLDACが有名ですが、LDACは利用することができません。OpenAuto ProのベースとなっているOSはLinuxですが、そのLinuxがLDACのデコードに対応していないからです。

デコードができないということは、簡単に言えばデータを受け取ることができません。例えば音楽プレーヤーとしてヘッドホンにデータを一方通行で送信するような使い方なら可能ですが、ワイヤレスAndroid Autoはデータを双方向でやり取りする必要があるのでLDACは利用できないのです。

したがってワイヤレスAndroid Autoで利用可能な最高品質のコーデックは、理論上はaptXの最新規格、現時点ならaptX Adaptiveということになりますが…現状はまだサポートされていないので実際にはaptX HDまでということになります。

ちなみにaptX HDやAACならBluetoothのバージョンは5.0未満でも利用可能なので、安価な4.xのアダプターでも問題ありません。

ワイヤレスAndroid AutoでもBluetoothを利用しない音楽再生方法はある

OpenAuto Proに搭載されているアプリ一覧

ちょっと横道に逸れますが、どうしても音楽を高音質で楽しみたいなら、ワイヤレスAndroid AutoでもBluetoothを利用しない再生方法がいくつかあります。

例えばOpenAuto ProにはマルチメディアプレーヤーのKodiが搭載されているので、MicroSDカードやUSBメモリにデータを保存しておけば無線を経由せずに音楽や動画を再生することが可能です。Kodiはタッチパネル向けのスキンに切り替えれば操作性もそこまで悪くありません。

あるいはブラウザを使用すればサブスク系のストリーミングサービスを利用することも可能です。ただしデフォルトだと日本語入力ができないのでカスタイマイズがほぼ必須ですし、そこをクリアしたとしても普通のデスクトップ向けのChromiumなのではっきり言って使いにくいです。ちなみにYouTubeも同じくChromiumでデスクトップ版を表示するだけです。。

まあ一応こういう方法もありますよということで。

Raspberry PiをaptX HDやAACに対応させる方法

要はRaspberry PiをaptX HDやAACを対応させれば良いので、基本的には下記のサイトで紹介されている手順を実行すれば良いのですが、どうも筆者の環境だとPulseAudioをデフォルトのVer.12.2から更新すると別の部分で不具合を引き起こすようです(検証中)。またLDACは対応させても利用できないので省略しても良いでしょう。

https://www.labohyt.net/blog/server/post-4920

というわけで紹介されている手順を参考にさせていただきつつ、以下のように実行しました。

必要なパッケージの導入とアップデート

$ sudo apt install libpulse-dev libbluetooth-dev libdbus-1-dev libsbc-dev libavcodec-dev libavutil-dev dh-autoreconf git cmake

まずは必要なパッケージの導入と更新を行います。

なおPulseAudioが自動更新されないようにアップデートしないように除外設定している場合、依存の関係から上記のコマンドの実行に失敗したので一時的に除外を解除してやる必要がありました。

fdk-aacの導入

$ mkdir src
$ cd src
$ git clone https://github.com/mstorsjo/fdk-aac
$ cd fdk-aac
$ ./autogen.sh
$ ./configure
$ sudo make install

このfdk-aacライブラリの導入、Raspberry Pi Zero WHだとコンパイルに1時間程度かかったとのことですが、Raspberry Pi 4Bならそれほどかからずに完了しました。

pulseaudio-modules-btの導入

$ MODDIR=`pkg-config --variable=modlibexecdir libpulse`
$ sudo find $MODDIR -regex ".*\(bluez5\|bluetooth\).*\.so" -exec cp {} {}.bak \;
$ git clone https://github.com/EHfive/pulseaudio-modules-bt.git
$ cd pulseaudio-modules-bt/
$ git submodule update --init
$ git -C pa/ checkout v`pkg-config libpulse --modversion|sed 's/[^0-9.]*\([0-9.]*\).*/\1/'`
$ mkdir build && cd build
$ cmake -DCODEC_APTX_FF=ON -DCODEC_APTX_HD_FF=ON -DCODEC_AAC_FDK=ON ..
$ make
$ sudo make install

PulseAudio Ver.12.2の場合は上記のコマンドで問題ないはず。もし異なる場合はGitHubのReadmeを確認して実行してください。

ofonoパッケージの導入

$ sudo apt install ofono
$ sudo systemctl enable ofono
$ sudo systemctl start ofono
$ sudo nano /etc/dbus-1/system.d/ofono.conf #</busconfig>の上に以下の3行を追記

  <policy group="pulse-access">
    <allow send_destination="org.ofono"/>
  </policy>

必須ではないとのことですが、大した手間はかからないのでofonoパッケージも導入しておきます。

PulseAudioを自動起動させるための設定

$ sudo adduser pi bluetooth
$ sudo adduser pi audio
$ sudo adduser pi pulse-access

デフォルトのままなら一般ユーザーのpiを使用しているかと思いますが、そのpiに実行許可を与えるためにまず上記のコマンドを実施しておきます。

$ sudo ldconfig #共有ライブラリのキャッシュを更新
$ ldconfig -p | grep local #共有ライブラリの情報を確認
$ sudo reboot

共有ライブラリのキャッシュを更新するためにldconfigコマンドを使用します。2行目のコマンドで共有ライブラリが正しく検出されているかどうかを確認したら再起動。

$ sudo nano /lib/systemd/system/bluetooth.service

  ExecStart=/usr/lib/bluetooth/bluetoothd -E --noplugin=sap #該当する行を左記に書き換えて保存

$ sudo systemctl --user enable pulseaudio
$ sudo systemctl --user start pulseaudio

上記の設定ファイルを編集して、ExecStart~の行を書き換えて保存。PulseAudioをenable、startすれば完了です。

これで次回からOpenAuto Proを起動するとaptXやAACで接続されてワイヤレスAndroid Autoが起動するようになります。

ちなみに筆者はGalaxy S23 UltraやZ Fold3など、基本的にGalaxyをメインで使用していますが、Samsungは独自のSamsung Seamless Codecを推してるからかaptX HD以上は非対応、最高でも無印のaptXしか利用できないのがちょっと残念です。LDACは対応しているんですけどね…

なおaptX HDについてはPixel 7 Proで動作確認が取れていますので念のため。

まとめ

OpenAuto Proはデフォルトのままだと低品質なSBCしか扱えませんが、ちょっと弄れば高音質で低遅延なaptX HDやAACに対応させることが可能です。

多少の手間がかかる以外にデメリットは皆無なので、ワイヤレスAndroid Autoを利用するならぜひ導入しましょう。

コメント

タイトルとURLをコピーしました