Raspberry Pi上のVolumioをBluetoothスピーカーで再生する

#まえがき
Volumioと言えば、ラズベリーパイの代表的なデジタルオーディオプレーヤーのディストリビューションであり、多くの人がDACボードを接続し、AVコンポ等で楽しんでいることと思う。
しかし、AVコンポを持っていない私は、何とかBluetoothスピーカーで再生できないかと考えた。

Volumioの設定にひととおり目を通したがBluethoothの設定は無し。
プラグインの一覧にもBluetoothの文字は無し。

ネットで「volumio bluetooth スピーカー」で検索しても有効な情報が見つからない。
日本語サイトではだめそうなので、検索キーワードを「volumio bluetooth plugin」としてみた。
すると、Volumioのフォーラムに「**BLUETOOTH SPEAKER PLUGIN**」という投稿(トピック)があるのを発見した。
奇特なお方がプラグインを作って下さっていた。
英語による投稿なので、Google Chromeで日本語に翻訳して投稿の内容を読んだ。

　**BLUETOOTH SPEAKER PLUGIN**
　https://volumio.org/forum/bluetooth-speaker-plugin-t7432.html

#環境
- 本体：Raspberry Pi 3 model B
- Bluetoothスピーカー：Logicool X300
- Volumio：VERSION: 2.389

#手順
手順をまとめると以下のとおりである。
この手順は「BLUETOOTH SPEAKER PLUGIN」内の以下の投稿を参考にした。
　https://volumio.org/forum/bluetooth-speaker-plugin-t7432-70.html#p45596

1.以下のサイトからプラグインとUI(ユーザーインターフェース)を作業用PCにダウンロードする。

- プラグイン (bluetooth_controller.zip):
 https://www.dropbox.com/s/uu8wncyz22vmmw6/bluetooth_controller.zip?dl=0

- UI (ui.zip):
 https://www.dropbox.com/s/gs748pet0351lys/ui.zip?dl=0


2.ui.zipを解凍する。以下のフォルダとファイルが解凍される。

- フォルダ
    - app
    - fonts
    - scripts
    - styles
- ファイル
    - index.html

3.ターミナルソフトでssh接続し、/volumio/http/www フォルダへ移動する。

     $ cd /volumio/http/www

 このフォルダ内には以下のフォルダとファイルが存在する。

- フォルダ
    - app
    - fonts
    - scripts
    - styles
- ファイル
    - index.html

4./volumio/http/www フォルダ内のフォルダとファイルを全て削除する。

	$ rm -rf *


5.手順[2.]で解凍したフォルダとファイルをWinSCP等のソフトで、/volumio/http/www フォルダ内にコピーする。


6.Volumioを再起動する。


7.Chrome等のブラウザからVolumioにアクセスする。

8.歯車アイコン(設定の表示)→プラグインを選択し、プラグイン管理画面を表示する。この画面に「プラグインのアップロード」タブがあることを確認する。
もしなければ、ブラウザの再読み込みボタンを押して、「プラグインのアップロード」タブを表示する。


9.「プラグインのアップロード」タブをクリックする。

10.「クリックしてプラグインを選択するか、ここにドロップ」欄に手順[1.]でダウンロードしたbluetooth_controller.zipをzipファイルままドラッグ＆ドロップする。
![image052.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/b1c5daac-9085-4daa-7118-b3fbcd26bee1.jpeg)


11.プラグインのインストールが実行される。インストール完了まで約5分かかる。
![image054.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/3a3e1009-2161-628b-c4aa-c19f19cc93b5.jpeg)

12.「プラグイン済みのプラグイン」タブに「Bluetooth Manager」が表示される。
![image055.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/7ac63bd7-90ad-22d4-28d3-77f85ca1b807.jpeg)


13.Volumioを再起動する。


14.ターミナルソフトでssh接続し、以下のコマンドを実行し、bluetooth関連のサービス状況を確認する。

      $ systemctl | grep blue

　結果は以下の様に bluezalsa.service が「loaded failed」となる。

	volumio@volumio:~$ systemctl | grep blue
	  sys-subsystem-bluetooth-devices-hci0.device
		loaded active plugged   /sys/subsystem/bluetooth/devices/hci0
	  bluetooth.service
		loaded active running   Bluetooth service
	● bluezalsa.service
		loaded failed failed    BluezAlsa proxy
	  bluetooth.target
		loaded active active    Bluetooth




　bluezalsa.service の詳細な状態を確認すると、以下の様に「Active: failed」となる。

	　$ systemctl status bluezalsa


	【実行結果】

	volumio@volumio:~$ systemctl status bluezalsa
	● bluezalsa.service - BluezAlsa proxy
	   Loaded: loaded (/lib/systemd/system/bluezalsa.service; enabled)
	   Active: failed (Result: exit-code) since 土 2018-04-28 00:09:19 JST; 7min ago
	  Process: 711 ExecStart=/usr/bin/bluealsa --disable-hfp (code=exited, status=1/FAILURE)
	 Main PID: 711 (code=exited, status=1/FAILURE)

	 4月 28 00:09:19 volumio systemd[1]: Starting BluezAlsa proxy...
	 4月 28 00:09:19 volumio systemd[1]: Started BluezAlsa proxy.
	 4月 28 00:09:19 volumio bluealsa[711]: /usr/bin/bluealsa: unrecognized opt...'
	 4月 28 00:09:19 volumio bluealsa[711]: Try '/usr/bin/bluealsa --help' for ....
	 4月 28 00:09:19 volumio systemd[1]: bluezalsa.service: main process exite...RE
	 4月 28 00:09:19 volumio systemd[1]: Unit bluezalsa.service entered failed...e.
	Hint: Some lines were ellipsized, use -l to show in full.


15.bluezalsa.serviceを修正する。
　**★ここがポイント★**

	$ sudo vim /lib/systemd/system/bluezalsa.service


	修正前：
		ExecStart=/usr/bin/bluealsa --disable-hfp

	修正後：
		ExecStart=/usr/bin/bluealsa --a2dp-force-audio-cd


16.Volumioを再起動する。

17.ターミナルソフトでssh接続し、以下のコマンドを実行し、bluetooth関連のサービス状況を確認する。

	$ systemctl | grep blue


　結果は以下の様になっていればOKである。

	volumio@volumio:~$ systemctl | grep blue
  	  sys-subsystem-bluetooth-devices-hci0.device
		loaded active plugged   /sys/subsystem/bluetooth/devices/hci0
	  bluetooth.service
		loaded active running   Bluetooth service
	  bluezalsa.service
		loaded active running   BluezAlsa proxy
	  bluetooth.target
		loaded active active    Bluetooth


　念のためbluezalsa.service の詳細な状態を確認する。

	　$ systemctl status bluezalsa


　結果は以下の様に「Active: active (running)」となっていればOKである。

	volumio@volumio:~$ systemctl status bluezalsa
	● bluezalsa.service - BluezAlsa proxy
	   Loaded: loaded (/lib/systemd/system/bluezalsa.service; enabled)
	   Active: active (running) since 土 2018-04-28 00:29:35 JST; 3min 10s ago
	 Main PID: 717 (bluealsa)
	   CGroup: /system.slice/bluezalsa.service
	           mq717 /usr/bin/bluealsa --a2dp-force-audio-cd

	 4月 28 00:29:35 volumio systemd[1]: Starting BluezAlsa proxy...
	 4月 28 00:29:35 volumio systemd[1]: Started BluezAlsa proxy.


18.Chrome等のブラウザからVolumioにアクセスする。

19.歯車アイコン(設定の表示)→プラグインを選択し、「Bluetooth Manager」が「On」で「アクティブ」となっていることを確認する。
![image066.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/a3efcbf3-d87e-b98a-527d-a98cc40ee535.jpeg)

20.「Settings」ボタンをクリックする。

21.「Discoverable」を「On」にした後、「Seve」ボタンをクリックする。
![image063.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/f70b86af-c035-b0f9-3226-7c1cbb615325.jpeg)

22.Bluethoothスピーカーをペアリングできる状態にする。

23.「Refresh」ボタンを何度かクリックし、Bluethoothスピーカーを検出する。

24.Bluethoothスピーカーを検出するとスピーカーの名称が表示されるので、「Connect」ボタンをクリックし、接続する。
![image064.jpg](https://qiita-image-store.s3.amazonaws.com/0/253603/b89adab6-0322-613b-e380-10dc9ad0074d.jpeg)

25.Volumioで音楽を再生し、スピーカーから音が出ればOK。

#参考情報
###bluealsaのヘルプ

bluezalsa.serviceで実行しているbluealsaのヘルプを掲載する。
バージョンは1.2.0である。
このバージョン(?)では --disable-hfp オプションは無いようなので、bluezalsa.serviceの起動は失敗したと考えられる。

	volumio@volumio:~$ bluealsa -V
	1.2.0
	
	volumio@volumio:~$ bluealsa -h
	Usage:
	  bluealsa [OPTION]...
	
	Options:
	  -h, --help            print this help and exit
	  -V, --version         print version and exit
	  -S, --syslog          send output to syslog
	  -i, --device=hciX     HCI device to use
	  -p, --profile=NAME    enable BT profile
	  --a2dp-force-mono     force monophonic sound
	  --a2dp-force-audio-cd force 44.1 kHz sampling
	  --a2dp-volume         control volume natively
	
	Available BT profiles:
	  - a2dp-source Advanced Audio Source
	  - a2dp-sink   Advanced Audio Sink
	  - hsp-hs      Headset
	  - hsp-ag      Headset Audio Gateway
	  - hfp-hf      Hands-Free
	  - hfp-ag      Hands-Free Audio Gateway

	By default only output profiles are enabled, which includes A2DP Source and
	HSP/HFP Audio Gateways. If one wants to enable other set of profiles, it is
	required to explicitly specify all of them using `-p NAME` options.