symphonic-mpdにスタンドアローンでupmpレンダーにする
今回のネタは@donuts-shop73 さまのところとカブるかたちになりますが、
私のように「symphonic-mpd向けのラズパイ1枚だけでDLNA/UPnP対応しないかなぁ」とお思いの方には使えると思います。
@donuts-shop73 さま、くれぐれもお気を悪くされないで下さい。
簡潔に言うと、「symphonic-mpdのイメージで現バージョンのupmpcliをビルドした」ということになります。
GoogleDriveへのリンク
動作確認についてはAndroidアプリのBubbleUPnPから以下の動作について実施できました。
・Android端末内の楽曲をリモートプレイ
・NASにインストールしたminim-serverから楽曲を指定しリモートプレイ
(Tidal・Qubozなど他にも色々機能が現バージョンのv1.4.5では追加されていますが、
動作は未確認です。)
なお、今回ビルドした成果についてはRaspberry Pi2〜3B+までは動作するでしょう。(symphonic-mpdと同じく32bitのRaspbian jessieベースならば)
ご自由にお使い下さい。
①ビルドの方法(今後何かをビルドする際の参考にどうぞ)
ちなみにここで作成したSDカードのイメージは「開発用」として使用するためのもので、
普段の音楽再生には使用しません。
(cifsマウントの設定やtag_cacheの生成・レストアは行いませんでした)。
apt-get upgradeは実行していませんが、明らかに標準では不要な開発用パッケージが山盛りになります。
・v0.9.1のイメージをダウンロードし、十分な空きのあるSDカードに焼きます。
・通常インストール処理のうち、IPアドレスの設定(固定化)とSDカードのパテーション拡張は
やっておいて下さい。
(IPアドレスの設定はsshによるリモートシェルが当然のように必要になるための措置です。
パテーションの拡張はやっておかないと既定ではビルド環境には足りません。)
もし起動音が聞きたい場合は/boot/config.txtの書換は必要です。
・Debian での sample build sequence hereに基づいて試作してみる。
この方法では開発に必要なソースとバイナリのdebパッケージを生成します。
ちなみに、上記のドキュメントに基づき、まず最初にaptのリポジトリを追加しておかないと、
開発用のパッケージインストールの際に「そのようなパッケージは無い」と怒られます。
また、ここに書かれている内容は基本的にはそのままですが
(debuild -us -ucにはsudoが必要です)、
中段のlibupnpp4は現バージョンでは「libupnpp5」になっていますので書き換えて実行する必要があります。
最後のsudo dpkg -i *.debだけは実行しませんでした。
・別なディレクトリを作成し、Upmpdcli downloadsからダウンロードした
ソースコードを解凍し、Building libupnpp and upmpdcli on Linuxに書かれている通り
ビルドしてみる。
・sudo make installでそのまま開発機のSDにインストールさせ、実行ファイルを抜き取る。
symphonic-mpdの作法では自分でビルドしたアプリは/usr/local/binに入れておくため、
ビルドの際にインストールディレクトリもここに指定するのが望ましいでしょう。
実行ファイルはfilezillaなどでPCに複写し、実動作環境のSDに複写します。
(ラズパイ本体の電源断をしてしまえばSDカードは抜き取り可能ですので、
その後PCにSDカードリーダを挿せばLinuxデスクトップがあれば中身を自由に取り出せます)。
・実実行環境でldd upmpcliを実行し、不足しているライブラリファイルを列挙してこれらを開発環境から複写する。
このスレッドに添付のZIPにはこの方法で必要なライブラリファイルを探して添付しました。
②インストール方法
Googleドライブから当該アーカイブをダウンロードして下さい。
ラズパイ上でアーカイブを解凍して下さい。
一応インストール用のシェルスクリプトは同梱しましたが、動作確認は行っていません。
(すいません。動作の確認のため自分使いの環境に手動でインストールしたため。)
添付しているzipの内容とインストール先は以下の通りになります。
/etc/upmpdcli.conf (設定ファイル)
/usr/local/bin upmpdcli・scctl(実行ファイル)
/usr/local/lib の各種soファイル (ライブラリ)
/usr/share/upmpdcli ディレクトリ配下(プラグイン?いまいち不明)
/lib/systemd/system/upmpdcli.service(systemdの設定ファイル)
/usr/local/binに実行ファイルを複写した後は必ず実行権限をつけて下さい。
/usr/local/libにライブラリファイルを複写後は各ライブラリの短縮名でシンボリックリンクを
作って下さい。
また、ライブラリには+r, +xの読み取り・実行権限を付けないとプログラムから参照できません。
さらに必ずldconfgを使ってライブラリのキャッシュ設定をして下さい。
上記動作を実行後systemctl enable upmpdcli.serviceを実行して、systemdの設定を
有効化して下さい。
最後になりますが、upmpdcliはユーザー、グループともにupmpdcliという名前を作らないと動作しません。
以下のコマンドが必要になります。
groupadd -g 500 upmpdcli
useradd -g upmpdcli -u 500 -h /usr/local/bin -s /sbin/nologin upmpdcli
userとgroupのIDは仮に500にしましたが、自分で調べて若番に寄せることも可能です。
なお、upmpdcli.confの設定は、私は最低限のmpdのところだけ有効化して動作確認しました。
(現状ではupmpdcli側でUNIXソケットでMPDに接続する方法が不明のため、mpd.confで
6600番ポートを開ける必要があります。)