Raspbian LiteでBluetoothのオーディオ・レシーバーを作成する
x86のPCでも手順は同様

補足:raspbian JessieからStretchへのアップデートに際して、PulseAudioは捨てる方向になった模様。
  Liteでは最初からインストールされていない。
  PulseAudioを構築するより、ALSAで環境を整える方が分かりやすい。

特色

今回はbluetooth-player、AACコーデックを利用するため、bluez + bluez-alsaをソースからビルドしインストールすることにした。
aptxやLDACはライセンスや技術的な問題のため実装は難しい(執筆時点で)。

※aptxやLDACは企業の持ち物であり、特にデコード=受信側がライセンスにより利用が制限されている。
 一方で、送信側=エンコードに関しては制限が緩く Linuxなどのオープンソース環境でもLDAC、aptx共に利用が可能になっている。

※上記両コーデックは高音質とされているが、実は現状のSBCコーデックはビットレートにおいて不利があるだけであり、同じビットレートで送信できれば aptxと音質の面で変わらないとも言われている。
 このため、SBCのビットレートを上げて送信する方法が模索されている。
 SBC XQと呼ばれるものがそれであり、最新のbluez-alsaでも、既にオプションでこれを有効化できるようになっている。
 今回のようにラズパイ等をレシーバーとして利用する場合、スマホなどの送信側で対応している必要があるが、現状では、androidのカスタムROMであるlineageOSが対応しているのみのようだ。


ビルド前の準備

mkdir ~/src
sudo apt-get build-dep bluez bluealsa

Bluez5.50のビルド

cd ~/src
sudo apt-get build-dep bluez

必要なライブラリのインストール

  • json-c
wget https://s3.amazonaws.com/json-c_releases/releases/json-c-0.13.tar.gz
tar -xvf json-c-0.13.tar.gz
cd json-c-0.13/
./configure --prefix=/usr --disable-static && make
sudo checkinstall --pkgname=json-c  --pkgversion="$(date +%Y%m%d%H%M)" --backup=yes  --fstrans=no --default
  • ell
wget https://mirrors.edge.kernel.org/pub/linux/libs/ell/ell-0.6.tar.xz
tar -xvf ell-0.6.tar.xz
cd ell-0.6/
./configure --prefix=/usr
make
sudo checkinstall --pkgname=ell  --pkgversion="$(date +%Y%m%d%H%M)" --backup=yes  --fstrans=no --default

bluezのビルド

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz
tar -xvf bluez-5.50.tar.xz
cd bluez-5.50/
./configure  --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var \
--enable-experimental  --enable-testing --enable-tools -enable-mesh
make
インストールは後程

Bluez-Alsaのビルド

AAC接続を有効にするためfdk-aacのビルド


  • ソースの取得とビルド
cd src
git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git 
cd fdk-aac
autoreconf -fiv
./configure
make

  • インストールにはcheckinstallを使う
sudo checkinstall  --pkgname=fdk-aac --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

bluez-alsaのビルド

apt-get install build-dep bluealsa
git clone https://github.com/Arkq/bluez-alsa 
autoreconf --install
mkdir build && cd build
../configure --enable-aac --disable-hcitop --with-alsaplugindir=/usr/lib/arm-linux-gnueabihf/alsa-lib/
make

bluezとbluez-alsa(bluealsa)をビルドしたものに入れ替える
sudo apt-get remove bluez bluealsa
sudo apt-get autoremove

bluezインストール
cd ~src/bluez5.50
sudo checkinstall --pkgname=bluez  --pkgversion="$(date +%Y%m%d%H%M)" --backup=yes  --fstrans=no --default
bluez-alsa(bluealsa)インストール
cd ~/src/bluez-alsa/build
sudo checkinstall  --pkgname=bluealsa --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

設定ファイル、Unit等の編集

bluez

特別な設定はしなかったような…
不都合が生じたら、ソースパッケージを取得してデフォルトの設定を確認する

bluealsa

  • 設定ファイル
raspbian liteのbluealsaパッケージにの設定ファイルを利用するため、ソースパッケージを取得しておく
パッケージを展開し、該当ファイルを同様の位置に配置
  • Unitの編集
/lib/systemd/system/bluealsa.serviceを編集し、bluealsaの起動オプションに"-p a2dp-sink"をつけておく

接続設定・再生設定

この辺は通常の手順と同じ





最終更新:2020年03月10日 04:26