« Headless_RaspberryPiをAirPlay_Receiverにする | トップページ | Headless_RaspberryPiでPirateAudioを使用する »

2020年11月 8日 (日)

Headless_RaspberryPiをVolumioをインストールする

2020/12/13
プラグインの説明を追加した。

2020/11/28
volumioのversion-up対応と トラブルシューティングupdateを 行った。

2020/11/21
volumioのAPIのurlの追加と トラブルシューティングを追加した。

2020/11/14
PirateAudioのボード使用時の 設定方法とサーバーのディレクトリ構成を追加した。

2020/11/8
初版

Headless RaspberryPi volumio

Headless RaspberryPi volumio

概要

Headless_RaspberryPiを以下のVolumioをインストールする。
これは、headlessの音楽プレーヤーで、webブラウザーで volumioのhttpサーバーにアクセスすることで操作画面を実現している。
PCが起動していない場合は、スマフォのアプリ「volumio」で、PCのwebブラウザーと同様のことを実現しているので それを利用するとPC不要でスマフォがリモコンになって家電感覚で使用できる。
また、shairport-syncを内蔵しているのでAirPlay_Receiver(server)として、 iPhoneなどからオーディオデータをWiFi経由で受信してRaspberryPiのオーディオ出力で再生できる。

volumio

インストール方法

volumioは、すでに動いているOSに何かをインストールする形ではなく 専用SDを作り、それをRaspberryPiに入れて、起動することで volumioが動く。

以下に専用SDの作成を方法を記述する:
(ホストPCとしてはubuntu20.04を使用している)

# 書き込み用SDをPCにセットする # 以下の命令で書き込みの/dev/mmcblkXを確認する lsblk -p ... ... /dev/mmcblk0 179:0 0 28.9G 1 disk # ここでは、/dev/mmcblk0 であることが分かる cd ~/Downloads wget http://updates.volumio.org/pi/volumio/2.853/volumio-2.853-2020-11-20-pi.img.zip # 以下で書き込むが、mmcblk0の部分は、自分の環境に合わせること unzip -p volumio-2.853-2020-11-20-pi.img.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync # この命令の実行での出力例 0+36405 レコード入力 0+36405 レコード出力 2936012800 bytes (2.9 GB, 2.7 GiB) copied, 215.227 s, 13.6 MB/s

以上で作成したSDをRspberryPiに入れて起動する。

ここでは以下のハード構成で確認した:

device#1:

RaspberryPi 2 Model B WiFi USB dongle (RaspberryPiで接続の実績があるもの) USB Audio Adoputor

device#2:

RaspberryPi 4 Model B PirateAudio(sound board)

初期設定

起動するとAP(アクセスポイント)として「volumio」という名前のSSIDが見えるので そこにWiFi接続する。(Password: volumio2)

接続したら、以下のurlをwebブラウザーでアクセスする。
http://volumio.local

すると、設定画面が表示されるので 以下のリンクの「FIRST CONNECTION TO THE WEB-UI」を参考に設定する。

https://volumio.github.io/docs/User_Manual/Quick_Start_Guide.html

SSH接続:

以下にwebブラウザーでアクセスして
http://volumio.local/dev
SSHの[Enable]をクリックする(無反応だが有効になる)

その状態で以下でSSHでログインする:

ssh volumio@volumio.local # パスワードは以下になる: パスワード:volumio rootのパスワード:volumio # タイムゾーンをJSTに変更する sudo dpkg-reconfigure tzdata # Asia/Tokyoを選択する # 時刻を確認する date # 設定画面でのネットワークの接続が完了していない場合、 # 時刻が狂っているが、この後、ネットワークの接続が # 完了すると、自動的に時刻が合うので、 # そのままでかまわない。 # kernelのバージョンの確認 uname -a Linux volumio 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux logout # この後、ホストPCの接続しているSSIDをvolumioから通常のものに変更する。

なお、volumio最新版では、RaspberryPiZero,RaspberryPi初代は、使用しているCPUをサポートしていないので 動作しない。

オーディオ出力テスト(ラジオ)

音楽データを用意しなくても、オーディオ出力のテストができるので インターネット・ラジオでオーディオ出力してみる。

操作画面の左側画面のメニューから以下を選択する:
・[ウェブラジオ]/[Volumio Selection]/[SmoothJazz Global Radio]

これでスピーカなどに音楽が出力されればOKである。
(音が出ない場合、その放送局のサービスが停止している可能性があるので、 別の局を選択してみる)

操作画面の音量スライダーで音量調整ができる。

スマフォのvolumioを起動しておくと、スマフォの音量ボリュームで 音量調整ができる。
(PCなどの操作画面の音量スライダーと連動して動く)

なお、音楽ファイルをUSBストレージに入れておき それを接続すると自動的に認識してくれるので [音楽ライブラリ]をクリックすると 接続しているUSBの内容が見えるので、 音楽ファイルを指定できる。

オーディオ出力テスト(AirPlay)

以下を参考にAirPlayで接続する。
(AirPlayデバイス名:volumio)
Headless_RaspberryPiをAirPlay_Receiverにする

スマフォのvolumioを起動しておくと、スマフォの音量ボリュームで 音量調整ができる。

PirateAudioボードを使用する

以下のボードを使用する際の設定について述べる:
Pirate Audio: Line-out for Raspberry Pi

サーバーにwebでアクセスして以下のように設定する:

設定/プレーバックオプション/ I2S DAC:ON DAC Model: HifiBerry-DAC

[保存]をクリックして「sudo reboot」する。 再度、クライアントからサーバーにアクセスする。

LineOut版は仕様として音量調整はできない。
音量調節は接続したアンプ(スピーカ)側で音量調整することになる。 Headphone版より(ヘッドフォンアンプがないので)音が良いような気がする。

ボードに付いているLCDは、サポートがないので、なにも表示しない。

なお、自分の環境は、ヒードシンク兼用のアルミケースにいれてあるが ゲタを履かせると、PirateAudioボードが問題なく刺せた。

NASサーバーの接続(マウント)

(1)[設定]の[ネットワークドライブ]を選択して、 スキャンを実行する。
(2)ネットワークにある共有名が現れるので それを指定してマウントする。
(guestでのアクセス可能に設定してあるNASサーバーであれば パスワード不要でマウントできる)

サーバーのディレクトリ構成

必要と思われるところを表示させてみる:

$ ls -l /var/lib/mpd/music/ total 0 lrwxrwxrwx 1 root root 13 Sep 25 05:42 INTERNAL -> /mnt/INTERNAL lrwxrwxrwx 1 root root 8 Sep 25 05:42 NAS -> /mnt/NAS lrwxrwxrwx 1 root root 8 Sep 25 05:42 USB -> /mnt/USB # ここにマウント・ポイントのリンクが置かれる $ ls /data INTERNAL backgrounds favourites laststates.json playlist queue albumart configuration flagfiles playerstate plugins $ ls /data/playlist/ jfolk miyuki radio # ここに作ったplaylistが置かれる $ cat /data/playlist/myuki cat: /data/playlist/myuki: No such file or directory volumio@vred:/$ cat /data/playlist/miyuki [{"service":"mpd","uri":"mnt/USB/MUSIC/MUSIC1/iTunes/iTunes Media/Music/中島みゆき/私の声が聞こえますか/12 時代.m4a","title":"時代","artist":"中島みゆき","album":"私の声が聞こえますか","albumart":"/albumart?cacheid=992&web=Miyuki%20Nakajima/%E7%A7%81%E3%81%AE%E5%A3%B0%E3%81%8C%E8%81%9E%E3%81%93%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B/extralarge&path=%2Fmnt%2FUSB%2FMUSIC%2FMUSIC1%2FiTunes%2FiTunes%20Media%2FMusic%2F%E4%B8%AD%E5%B3%B6%E3%81%BF%E3%82%86%E3%81%8D%2F%E7%A7%81%E3%81%AE%E5%A3%B0%E3%81%8C%E8%81%9E%E3%81%93%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B&icon=fa-tags&metadata=false"}] # ただし、上で表示したようにplain-textではなくjson形式になっている $ ls /data/favourites/ favourites radio-favourites

従来のplaylistをvolumioのjson形式に変換するツールが以下にある: https://github.com/suuuehgi/m3u2volumio
m3u2volumio - Translate .m3u files into a Volumio conform playlist. The intervention requires SSH.

まだ、動かしていないが便利そうである。

disk状況(例)

$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p2 2.2G 811M 1.3G 39% /imgpart /dev/loop0 347M 347M 0 100% /static overlay 262M 39M 203M 16% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 4.9M 2.0G 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup tmpfs 2.0G 32K 2.0G 1% /tmp tmpfs 2.0G 0 2.0G 0% /var/spool/cups tmpfs 20M 972K 20M 5% /var/log tmpfs 2.0G 0 2.0G 0% /var/spool/cups/tmp /dev/mmcblk0p1 61M 57M 3.4M 95% /boot /dev/sda1 115G 42G 74G 37% /media/B08A-B1E7 tmpfs 396M 0 396M 0% /run/user/1000 //RPIZWH1_WIN/MUSICz 29G 13G 16G 45% /mnt/NAS/MUSICz

/dev/sda1 は、マウントしているUSBストレージ、 //RPIZWH!_WIN/MUSICz は、マウントしているNASサーバーになる。

API for volumio

以下に、CLI、RESP_API,websocket_APIのドキュメントのリンクがある:
Command_Line_Client
REST_API
WebSocket_APIs

プラグイン

[設定]から[プラグイン/プラグインの検索]からプラグインがインストールできるが
ここでは[GPIO Buttoms][Backup&Restore Data]を紹介する。
[プラグインの検索]からプラグインをインストールした後
[プラグライン/インストール済みのプラグイン]を選択すると インストールしたプラグインの設定値を設定できる。

(1)[Backup&Restore Data]
設定画面でバックアップしたい項目をオンにして [Backup]を押すことにより、volumioの/mnt/INTERNALに volumio_data.tgzファイルとして保存される。
(プラグインの説明にはNASストレージに保存すると書いてあるが 実際には上のように保存される)

(2)[GPIO Buttons]
PirateAudioのボードを使用している場合
設定画面で以下のように設定する:
Enable Play/Pause: 5
Enable Previos: 6
設定した後、[保存]を押す。
これでボタンAがPlay/Pause、ボタンBがPreviousになる、

なお、PirateAudioのGPIOとして 16,20もあるが、設定しても動作しなかった。 (原因不明)

トラブルシューティング

(0)設定完了後もAPであるvolumioが現れる
WiFi設定しても、電波の状況などで接続が失敗すると volumioのAPが現れるようなので、その場合は、 再度、volumioに接続してWiFi設定をやり直す。
何度かして接続が成功するとAPのvolumioが現れなくなる。
そうしたら、volumio.localでwebアクセスして web-UIに入る。
(ホスト名を変更している場合、volumio.localのvolumioを変更しているホスト名にする)

(1)volumioのサーバー(mpd)が起動していない
sshログインできるがvolumioのサーバー(mpd)が起動しておらず
webブラウザーでアクセスできない状況になった。
これを解決するには、sshでログインして以下を実行する:

sudo /etc/init.d/mpd restart

webブラウザーでのユーザーインタフェースなどから
シャットダウンしないと、こうゆう状況が起きるようだ。

(2)playlistの保存が失敗に終わる
(3)NASサーバーのマウントが失敗する
真の原因が不明だがlinuxのdiskスペースが(見かけ上?)逼迫して、ファイル保存や マウントが失敗するようになる。
→ブートSDを作り直して再起動した。

参考URL

関連アプリ:
Volumio
有料(240円)のアプリになるがPCのwebブラウザーでやることをAndroidを使ってできる。
また、Androidの音量ボタンでvolumioの音量調整ができ、再生中のタイトルが表示されたりして便利である。
volumio自身がAirPlay対応しているのでAirPlayで接続して音楽再生しているときにもAndroidの音量ボタンでも音量調整ができる。
iPhone版は、以下になる:
volumio

分かりやすい紹介:
Raspberry Piをオーディオプレーヤーに!

PirateAudioのButtons関連:
https://github.com/pimoroni/mopidy-raspberry-gpio
https://www.raspberrypi.org/documentation/configuration/config-txt/gpio.md

以上

|

« Headless_RaspberryPiをAirPlay_Receiverにする | トップページ | Headless_RaspberryPiでPirateAudioを使用する »

RaspberryPi」カテゴリの記事

volumio」カテゴリの記事

コメント

この記事へのコメントは終了しました。