高野山奥の院参道


Date/Time: 2007:04:03 15:50:47
Camera: Panasonic
Model: DMC-LX2
Exporsure Time: 1/30
FNumber: 2.8
Aperture Value: 3.0
Focal Length: 6.3

Close

y2blog » BeagleBone + Botic で簡単DSD Native 再生(その5)

12

12

2016

BeagleBone + Botic で簡単DSD Native 再生(その5)

BBB/BBG Botic環境をRoon Bridge化してみる


RoonBridge Supportedt File Types
BeagleBone Boticで Bit-Perfect 再生可能なデータフォーマット


今回の一連のディジタルオーディオ関連の記事を読んでいる類の人であれば、”Roon” というキーワードを何度も目にしている(耳にしている)ことだろう.”Roon” について簡単に説明するのは難しいので、”Roon” について知りたければ、 Roon Labsのホームページを見るなり、”Roon” について書かれた記事を参考にして欲しい.


【注記】BoticをRoon Bridge化するために、Botic本来の環境に手を加えることになるので、BoticをMPD主体で運用する場合は、ここで紹介する Roon Bridge化はお薦めできない.今回紹介する方法でRoon Bridge化するのであればMPDの併用は諦めて、RoonBridge専用機にするのが良いだろう.GLIBCを強制的に新しいバージョンに入れ替えてしまうので、Boticで組み込まれている各種パッケージの整合性が保てなくなってしまう.



【追記】Debian JessieをBotic化した後に、mpdおよびRoonBridgeの設定を行う方法


この後で紹介するRoonBridgeのインストールは、glibcのバージョン問題などで結構面倒な作業が必要になるが、Debian JessieをBotic化した後に、mpdおよびRoonBridgeの設定を行う方法であれば、RoonBridgeのインストールは簡単になる.RoonBridge化を試みる場合は、Debian Jessieをベースにすると良いだろう.


【Debian JessieのBotic化のための参考記事】
 みみず工房の“yo”さんがDebian JessieのBotic化について手順を紹介しているので、こちらの記事を参考にすると良いだろう.
I2Sの世界(4) [ http://mimizukobo.sakura.ne.jp/articles/articles020.html#025 ]
I2Sの世界(5) [ http://mimizukobo.sakura.ne.jp/articles/articles020.html#022 ]

Debian Jessie + Botic 環境で、mpdとRoon Bridgeの両方を稼働させた状態で比較テストをやってみたが、mpdでの再生の方が圧倒的に音が良かった.Roonでの再生はmpdでの再生に較べるとどことなく音が曇ったような感じを受ける.この場合の両者の再生環境の違いは、プレイヤー(Roon : 音源はMac mini のSSD ローカルディスク、 mpd: Cantata V1.5.2 + NFS サーバ上のファイルをmpd側にNFSマウント)環境の違いのみで音源データは同じ物だ.


Roonプロトコルは一般には公開されていないプロプライエタリなプロトコルなので確かな事は言えないが、mpdプロトコルに較べて圧倒的に重い(音データ以外にも色々な情報のやり取りが行われている)筈なので、この辺の違いが音質差となって現れているのだろう.やはり音質に徹底的に拘るのであれば、Roonは許容できないだろう.




[ 御本家 ]

 ・Roon Labs [ https://roonlabs.com ]

 [ Phile-web の記事 ]

 ・ 『クラウド/ローカルをシームレスにつなぐ“総合音楽鑑賞プレーヤーソフト”「Roon」の魔法とは?』 逆木 一

 ・『Q&A形式で解説!今注目の音楽再生ソフト「Roon」にまつわる“16のギモン”』佐々木 喜洋

 ・『非対応機器が約1万円でRoon対応に変身! ラズベリーパイで“Roon Bridge”を作った』佐々木 喜洋

 ・『いま話題のRoonをラズパイで!ラズパイ・オーディオの「Roon Bridge化」を検証する』海上 忍


今回の記事は、BeagleBone Black/Greenの Botic V7 環境に、Roon Bridge 関連のソフトウェアを組み込んで、MPDだけではなく、Roonによる再生もできるようにしてしまおうという企画だ.


予めお断りしておくが、私には現時点で Roon について何かを述べるだけの十分な知識も経験も無いので、今回の記事では Roon の再生品質の善し悪しやその存在意義については敢えて触れないことにする.そのうち、Roon について何か書くかもしれない.


ここ数ヶ月間Roonを試してきたが、ここ暫くは私のデジタル系オーディオ再生のメインプレーヤーとして活躍してくれる事だろう.音質面は一先ず置いておいて、ユーザエクスペリエンスでこのRoonに勝る物はないだろう.MPDクライアントの出来の悪さ、不安定さには正直閉口していたので、Roonの登場は私にとっては福音だ.


音質に関してはlightMPDなどと較べると明らかに見劣りする(クラッシック愛好家で音質に拘る人達には許容できない?)が、それでもRoonの再生環境を手放す気にはならない.RoonではPCM/DSD共に曲間の切替えノイズは皆無で、MPDクライアントやAudirvanaなどの専用クライアントなどで生じるデータ形式の異なる曲の切替えノイズに悩まされることがなくなったのは何よりも快適だ.幸か不幸か私にはほんの些細な音質の違いが気になるような神経質な地獄耳を持ち合わせていないので、Roonの再生環境でそこそこ満足している.正直これ以上デジタル環境の再生音質に拘るより、昔のようにアナログの世界で楽しいオーディオライフを送りたいと気持ちが強い.


Botic環境のRoon Bridge化


Roon Bridgeがどのようなものかについては上記の記事を読んで貰うとして、今回は Botic V7環境を Roon Bridge化する際の手順について紹介する.


Roon Bridgeは、Windows環境(32/64bit)、Mac OS環境、Linux環境の何れでも稼働させることができるようだが、BoticはLinux環境なので、当然Linux用のパッケージをダウンロードしてBotic環境にそれらをインストールすることになる.残念ながらLinux用のRoon Bridgeソフトウェアはまだ開発途上(多分今後も...)で、対応しているLinuxディストリビューションは限られているようだ.


Ubuntuなどの比較的メジャーで汎用的なLinuxディストリビューションでは手間を掛けずに簡単に構築可能なようだが、残念ながら Botic のようなマイナーなディストリビューションでは、Roon Bridgeソフトウェアをインストールして稼働させるには、足りない部分を自分で環境構築しなければならない.


とりあえず今回は、トライ&エラー方式でBoticをRoon Bridge化させてみたときの手順を紹介する.


【Linux版のRoon Bridgeインストラースクリプトのダウンロード】

Downloadページ [ https://roonlabs.com/downloads.html ] 中の、”Roon Bridge” から “Linux” のリンクを辿ると “LinuxInstall“ページが表示される.ここには. Roon Server/Bridge をLinux環境下で稼働させるための条件や環境について触れられているので、先ずは一読しておく.


先ずは、Roon Bridge で必要な環境を挙げておく.

 ・libasound2 (1.0.29+ recommended) : ALSA(Advanced Linux Sound Architecture)のバージョンは 1.0.29以上を推奨

 ・glibc 2.14 (or higher) : glibcのバージョンは 2.14以上

 ・Recent Linux Kernel : 4.x 系の最新カーネル

Native DSD再生にはこれらの条件をクリアしていなければならないようだ.Botic V7 (rc3)での環境をちょっと調べてみた.



root@botic2:~# mkdir Roon
root@botic2:~# cd Roon
root@botic2:~/Roon# uname -a
Linux botic2 4.8.13-botic7-rc3 #1 PREEMPT Sat Dec 10 01:35:51 CET 2016 armv7l GNU/Linux

root@botic2:~/Roon# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version k4.8.13-botic7-rc3.

root@botic2:~/Roon# aplay --version
aplay: version 1.0.27.2 by Jaroslav Kysela 
root@botic2:~/Roon# ldd /usr/bin/aplay
	linux-vdso.so.1 =>  (0xbefbb000)
	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6f72000)
	libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0xb6ed0000)
	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6e65000)
	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6e5a000)
	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6e3f000)
	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e1b000)
	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d33000)
	/lib/ld-linux-armhf.so.3 (0x7f5a2000)

root@botic2:~/Roon# /lib/arm-linux-gnueabihf/libc.so.6
GNU C Library (Debian EGLIBC 2.13-38+deb7u11) stable release version 2.13, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.6.3.
Compiled on a Linux 3.2.78 system on 2016-05-29.
Available extensions:
	crypt add-on version 2.1 by Michael Glad and others
	GNU Libidn by Simon Josefsson
	Native POSIX Threads Library by Ulrich Drepper et al
	Support for some architectures added on, not maintained in glibc core.
	BIND-8.2.3-T5B
libc ABIs: UNIQUE
For bug reporting instructions, please see:
.
  

kernelのバージョンは 4.8.13なので問題はないが、libasound2のバージョン情報が k4.8.13-botic7-rc3 に書き換えられていて、条件に合致するのかどうか良く判らない.glibc(libc) のバージョンが 2.13なので、このままでは駄目そうだ.とりあえず、ダメ元でこのページに書かれている内容に従って、Roon Bridgeのインストール作業を実施して行くことにしよう.



 
root@botic2:~/Roon# curl -O http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh
-bash: curl: command not found
root@botic2:~/Roon# 
 

最初のインストーラースクリプトのダウンロードで curl がインストールされていないので転けてしまった.やれやれ...
先ずは、 curl をインストールしてからインストーラースクリプトをダウンロード.



 
root@botic2:~/Roon# apt-get  install curl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcurl3
The following NEW packages will be installed:
  curl libcurl3
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 569 kB of archives.
After this operation, 733 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://security.debian.org/ wheezy/updates/main libcurl3 armhf 7.26.0-1+wheezy17 [303 kB]
Get:2 http://security.debian.org/ wheezy/updates/main curl armhf 7.26.0-1+wheezy17 [266 kB]
Fetched 569 kB in 0s (1196 kB/s)
Selecting previously unselected package libcurl3:armhf.
(Reading database ... 17177 files and directories currently installed.)
Unpacking libcurl3:armhf (from .../libcurl3_7.26.0-1+wheezy17_armhf.deb) ...
Selecting previously unselected package curl.
Unpacking curl (from .../curl_7.26.0-1+wheezy17_armhf.deb) ...
Setting up libcurl3:armhf (7.26.0-1+wheezy17) ...
Setting up curl (7.26.0-1+wheezy17) ...

root@botic2:~/Roon# curl -O http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16390  100 16390    0     0  21271      0 --:--:-- --:--:-- --:--:-- 37678
root@botic2:~/Roon# ls -la
total 28
drwxr-xr-x 2 root root  4096 Dec 12 23:09 .
drwx------ 4 root root  4096 Dec 12 20:47 ..
-rw-r--r-- 1 root root 16390 Dec 12 23:09 roonbridge-installer-linuxarmv7hf.sh
root@botic2:~/Roon# chmod +x roonbridge-installer-linuxarmv7hf.sh
root@botic2:~/Roon# ls -la
total 28
drwxr-xr-x 2 root root  4096 Dec 12 23:09 .
drwx------ 4 root root  4096 Dec 12 20:47 ..
-rwxr-xr-x 1 root root 16390 Dec 12 23:09 roonbridge-installer-linuxarmv7hf.sh
root@botic2:~/Roon# 
  

インストーラスクリプト “roonbridge-installer-linuxarmv7hf.sh” を実行すると


 
root@botic2:~/Roon# ./roonbridge-installer-linuxarmv7hf.sh

--------------------------------------------------------------------------------------

Welcome to the RoonBridge installer

This installer sets up RoonBridge to run on linux with the following settings:

 - RoonBridge will be installed in /opt/RoonBridge
 - RoonBridge's data will be stored in /var/roon/RoonBridge
 - RoonBridge will be configured to run as a system service
 - RoonBridge will run as root

These settings are suitable for turning a dedicated or semi-dedicated device
into an appliance that runs RoonBridge

If you want customize how RoonBridge is installed, see:

   http://kb.roonlabs.com/LinuxInstall

--------------------------------------------------------------------------------------

Do you want to install RoonBridge on this machine? [Y/n] y

Downloading RoonBridge_linuxarmv7hf.tar.bz2 to /tmp/tmp.AnATQ72ooo/RoonBridge_linuxarmv7hf.tar.bz2

######################################################################## 100.0%

Unpacking RoonBridge_linuxarmv7hf.tar.bz2...tar (child): lbzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

--------------------------------------------------------------------------------------

The RoonBridge installer did not complete successfully.

If you are not sure how to proceed, please check out:

 - Roon Labs Community            https://community.roonlabs.com/c/support
 - Roon Labs Knowledge Base       https://kb.roonlabs.com/LinuxInstall

--------------------------------------------------------------------------------------

root@botic2:~/Roon# 
 

と何やらエラーメッセージを吐いて異常終了してしまう.圧縮されたファイルを解凍できないようなので、 ”bzip2″ をインストール後に、先程のインストールスクリプトを再実行する.



 
root@botic2:~/Roon# apt-get install bzip2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  bzip2-doc
The following NEW packages will be installed:
  bzip2
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 48.6 kB of archives.
After this operation, 112 kB of additional disk space will be used.
Get:1 http://ftp.us.debian.org/debian/ wheezy/main bzip2 armhf 1.0.6-4 [48.6 kB]
Fetched 48.6 kB in 0s (59.1 kB/s)
Selecting previously unselected package bzip2.
(Reading database ... 17211 files and directories currently installed.)
Unpacking bzip2 (from .../bzip2_1.0.6-4_armhf.deb) ...
Setting up bzip2 (1.0.6-4) ...
root@botic2:~/Roon# ./roonbridge-installer-linuxarmv7hf.sh

--------------------------------------------------------------------------------------

Welcome to the RoonBridge installer

This installer sets up RoonBridge to run on linux with the following settings:

 - RoonBridge will be installed in /opt/RoonBridge
 - RoonBridge's data will be stored in /var/roon/RoonBridge
 - RoonBridge will be configured to run as a system service
 - RoonBridge will run as root

These settings are suitable for turning a dedicated or semi-dedicated device
into an appliance that runs RoonBridge

If you want customize how RoonBridge is installed, see:

   http://kb.roonlabs.com/LinuxInstall

--------------------------------------------------------------------------------------

Do you want to install RoonBridge on this machine? [Y/n] y

Downloading RoonBridge_linuxarmv7hf.tar.bz2 to /tmp/tmp.JGGBq4ykqk/RoonBridge_linuxarmv7hf.tar.bz2

######################################################################## 100.0%

Unpacking RoonBridge_linuxarmv7hf.tar.bz2...Done

Checking to see if RoonBridge can run on this machine 

    Checking for Binary Compatibility                            [   OK   ]
    Checking for ALSA Libraries                                  [   OK   ]

STATUS: SUCCESS


Copying Files...Done
Failed to issue method call: Unit roonbridge.service not loaded.

Installing /etc/systemd/system/roonbridge.service

Enabling service roonbridge...
ln -s '/etc/systemd/system/roonbridge.service' '/etc/systemd/system/multi-user.target.wants/roonbridge.service'
Service Enabled

Starting service roonbridge...
Service Started

--------------------------------------------------------------------------------------

All Done! RoonBridge should be running on your machine now.

--------------------------------------------------------------------------------------

root@botic2:~/Roon# 
 

何やらインストールは上手く行ったようなメッセージが吐き出されている.Roon Bridge も既に起動されているようなので、どのようなプロセスが走っているのか確認してみる.



 
root@botic2:~/Roon# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6   4720  3556 ?        Ss   Dec10   0:01 /lib/systemd/systemd
root         2  0.0  0.0      0     0 ?        S    Dec10   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Dec10   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Dec10   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    Dec10   0:01 [kworker/u2:0]
root         7  0.0  0.0      0     0 ?        S    Dec10   0:00 [rcu_preempt]
root         8  0.0  0.0      0     0 ?        S    Dec10   0:00 [rcu_sched]
root         9  0.0  0.0      0     0 ?        S    Dec10   0:00 [rcu_bh]
root        10  0.0  0.0      0     0 ?        S<   Dec10   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    Dec10   0:00 [kdevtmpfs]
root        13  0.0  0.0      0     0 ?        S<   Dec10   0:00 [netns]
root        14  0.0  0.0      0     0 ?        S    Dec10   0:00 [oom_reaper]
root        15  0.0  0.0      0     0 ?        S<   Dec10   0:00 [writeback]
root        16  0.0  0.0      0     0 ?        S    Dec10   0:00 [kcompactd0]
root        17  0.0  0.0      0     0 ?        SN   Dec10   0:00 [ksmd]
root        18  0.0  0.0      0     0 ?        S<   Dec10   0:00 [crypto]
root        19  0.0  0.0      0     0 ?        S<   Dec10   0:00 [kintegrityd]
root        20  0.0  0.0      0     0 ?        S<   Dec10   0:00 [bioset]
root        21  0.0  0.0      0     0 ?        S<   Dec10   0:00 [kblockd]
root        22  0.0  0.0      0     0 ?        S<   Dec10   0:00 [devfreq_wq]
root        23  0.0  0.0      0     0 ?        S<   Dec10   0:00 [watchdogd]
root        24  0.0  0.0      0     0 ?        S<   Dec10   0:00 [rpciod]
root        25  0.0  0.0      0     0 ?        S<   Dec10   0:00 [xprtiod]
root        26  0.0  0.0      0     0 ?        S    Dec10   0:00 [kswapd0]
root        27  0.0  0.0      0     0 ?        S<   Dec10   0:00 [nfsiod]
root        49  0.0  0.0      0     0 ?        S<   Dec10   0:00 [kthrotld]
root        52  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/33-48060000]
root        54  0.0  0.0      0     0 ?        S<   Dec10   0:00 [bioset]
root        55  0.0  0.0      0     0 ?        S    Dec10   0:00 [mmcqd/0]
root        56  0.0  0.0      0     0 ?        S<   Dec10   0:00 [ipv6_addrconf]
root        65  0.0  0.0      0     0 ?        S<   Dec10   0:00 [deferwq]
root        66  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/159-44e0b00]
root        67  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/189-tps6521]
root        68  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/160-4819c00]
root        76  0.0  0.0      0     0 ?        S<   Dec10   0:00 [bioset]
root        77  0.0  0.0      0     0 ?        S    Dec10   0:00 [mmcqd/1]
root        80  0.0  0.0      0     0 ?        S<   Dec10   0:00 [bioset]
root        81  0.0  0.0      0     0 ?        S    Dec10   0:00 [mmcqd/1boot0]
root        84  0.0  0.0      0     0 ?        S<   Dec10   0:00 [bioset]
root        86  0.0  0.0      0     0 ?        S    Dec10   0:00 [mmcqd/1boot1]
root       107  0.0  0.0      0     0 ?        S<   Dec10   0:00 [kworker/0:1H]
root       116  0.0  0.0      0     0 ?        S    Dec10   0:00 [jbd2/mmcblk0p2-]
root       117  0.0  0.0      0     0 ?        S<   Dec10   0:00 [ext4-rsv-conver]
root       135  0.0  4.7  32464 24096 ?        Ss   Dec10   0:00 /lib/systemd/systemd-journald
root       149  0.0  0.4   9360  2264 ?        Ss   Dec10   0:00 /lib/systemd/systemd-udevd
root       301  0.0  0.0      0     0 ?        S    Dec10   0:00 [spi1]
root       302  0.0  0.0      0     0 ?        S    Dec10   0:00 [spi2]
root       324  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/182-4803800]
root       329  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/181-4803800]
root       341  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/184-4803c00]
root       344  0.0  0.0      0     0 ?        S    Dec10   0:00 [irq/183-4803c00]
root       368  0.0  0.0      0     0 ?        S    Dec10   0:00 [kworker/u2:2]
root       478  0.0  0.0      0     0 ?        S    Dec10   0:00 [53500000.aes-en]
root       636  0.0  0.2   1912  1396 ?        Ss   Dec10   0:00 /sbin/rpcbind -w
statd      686  0.0  0.3   2224  1712 ?        Ss   Dec10   0:00 /sbin/rpc.statd
root       937  0.0  0.2   2448  1308 ?        Ss   Dec10   0:00 /usr/sbin/rpc.idmapd
mpd       1043  0.0 14.8  79048 75668 ?        SLsl Dec10   2:38 /usr/bin/mpd --no-daemon
root      1053  0.0  0.7   5492  3652 ?        Ss   Dec10   0:00 /usr/sbin/sshd -D
root      1055  0.0  0.1   1352  1016 ?        Ss   Dec10   0:00 /usr/sbin/acpid
mpd       1057  0.0  0.2   2800  1416 ?        Ss   Dec10   1:13 /usr/local/bin/ympd -u mpd
root      1060  0.0  0.3   2724  1748 ?        Ss   Dec10   0:00 /lib/systemd/systemd-logind
root      1062  0.0  0.4  28424  2524 ?        Ssl  Dec10   0:00 /usr/sbin/rsyslogd -n
103       1063  0.0  0.3   2516  1824 ?        Ss   Dec10   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root      1104  0.0  0.2   1872  1376 ?        Ss   Dec10   0:00 /usr/sbin/cron
upmpdcli  1135  0.0  0.8  82992  4540 ?        Ssl  Dec10   3:04 /usr/bin/upmpdcli -D -c /etc/upmpdcli.conf
root      1220  0.0  0.0      0     0 ?        S    Dec10   0:00 [file-storage]
root      1257  0.0  0.2   1860  1336 tty1     Ss+  Dec10   0:00 /sbin/agetty --noclear tty1 38400 linux
root      1258  0.0  0.2   1680  1228 ttyS0    Ss+  Dec10   0:00 /sbin/agetty -s ttyS0 115200 38400 9600 vt102
root      1623  0.0  0.0      0     0 ?        S    Dec12   0:22 [kworker/0:2]
root      1761  0.2  0.7   8100  3800 ?        Ss   05:55   0:02 sshd: root@pts/0    
root      1763  0.0  0.4   2608  2196 pts/0    Ss   05:55   0:00 -bash
root      1849  0.0  0.0      0     0 ?        S    06:07   0:00 [kworker/0:1]
root      1852  0.0  0.2   2508  1432 pts/0    R+   06:13   0:00 ps aux
root@botic2:~/Roon# 
 

あれー!??? "Roon Bridge" 関連のプロセスが見当たらない.何処??? 勿論、この状態では Roon Coreからも認識されない.先ずはエラーとなる原因をシステムのログ情報から探し出すこにする.


"/var/log/syslog" を確認すると、


  
Dec 13 06:07:03 botic2 systemd[1]: Reloading.
Dec 13 06:07:03 botic2 systemd[1]: Starting RoonBridge...
Dec 13 06:07:03 botic2 systemd[1]: Started RoonBridge.
Dec 13 06:07:03 botic2 start.sh[1839]: RoonBridge: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.16' not found (required by RoonBridge)
Dec 13 06:07:03 botic2 start.sh[1839]: /opt/RoonBridge/start.sh: 37: kill: No such process
Dec 13 06:17:01 botic2 /USR/SBIN/CRON[1854]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
 

やはり、glibc(libc) のバージョンが低すぎるようで異常終了している.glibc(libc) を最新版にアップデートしないといけないようだ.


【glibcのアップデート】

glibcのアップデートに関する情報を拾い集めていたら、"stack overflow" サイトに "http://stackoverflow.com/questions/19471683/lib-libc-so-6-version-glibc-2-17-not-found" なるQ&Aを見つけた.このページの最後の方に、"InvictusRex28" さんが次の様な手順で glibをアップデートすれば良いという回答をしているので、この方法でアップデートする.




 
echo "deb http://ftp.debian.org/debian sid main" >> /etc/apt/sources.list
apt-get update
apt-get -t sid install  libc6-dev libc6-dbg
 


どうやら パッケージのリポジトリに "http://ftp.debian.org/debian sid main" を追加して、"libc6" をアプデートすれば良いようだ."/etc/apt/sources.list" に

  "deb http://ftp.debian.org/debian sid main"

の1行を追加し、apt-get コマンドでアップデートする.


"/etc/apt/sources.list"

 
deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ wheezy main contrib non-free

deb http://ftp.us.debian.org/debian/ wheezy-updates main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ wheezy-updates main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
#deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
##deb-src http://ftp.debian.org/debian wheezy-backports main contrib non-free

#Kernel source (repos.rcn-ee.com) : https://github.com/RobertCNelson/linux-stable-rcn-ee
#
#git clone https://github.com/RobertCNelson/linux-stable-rcn-ee
#cd ./linux-stable-rcn-ee
#git checkout `uname -r` -b tmp
#
deb [arch=armhf] http://repos.rcn-ee.com/debian/ wheezy main
#deb-src [arch=armhf] http://repos.rcn-ee.com/debian/ wheezy main

## Botic
deb http://repo.ieero.com/ wheezy main
#deb-src http://repo.ieero.com/ wheezy main

## GLIBC
deb http://ftp.debian.org/debian sid main   <=== この1行を追加
 

libc というLinuxの重要ライブラリの入れ替えなので、メッセージを確認しながらアップデートを行う事にする.



 
root@botic2:~/Roon# apt-get install libc6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libgmp10 libhogweed4 libnettle6 libupnp6
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  dmsetup keyutils libdevmapper1.02.1 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libnettle6 libtirpc1
Suggested packages:
  glibc-doc libc-l10n locales krb5-doc krb5-user
Recommended packages:
  krb5-locales
The following packages will be REMOVED:
  bbx15-ducati-firmware-installer curl libavformat55 libcurl3 libcurl3-gnutls libgnutls26 libldap-2.4-2 libnfsidmap2 libp11-kit0 librtmp0 libupnpp0 mpd nfs-common upmpdcli wget
The following NEW packages will be installed:
  keyutils libnettle6
The following packages will be upgraded:
  dmsetup libc6 libdevmapper1.02.1 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libtirpc1
9 upgraded, 2 newly installed, 15 to remove and 211 not upgraded.
Need to get 3521 kB of archives.
After this operation, 7367 kB disk space will be freed.
Do you want to continue [Y/n]? y
Get:1 http://ftp.debian.org/debian/ sid/main libtirpc1 armhf 0.2.5-1 [69.9 kB]
Get:2 http://ftp.debian.org/debian/ sid/main libc6 armhf 2.24-8 [2338 kB]
Get:3 http://ftp.debian.org/debian/ sid/main libkeyutils1 armhf 1.5.9-9 [11.8 kB]
Get:4 http://ftp.debian.org/debian/ sid/main libk5crypto3 armhf 1.15-1 [117 kB]
Get:5 http://ftp.debian.org/debian/ sid/main libgssapi-krb5-2 armhf 1.15-1 [133 kB]
Get:6 http://ftp.debian.org/debian/ sid/main libkrb5-3 armhf 1.15-1 [267 kB]
Get:7 http://ftp.debian.org/debian/ sid/main libkrb5support0 armhf 1.15-1 [57.8 kB]
Get:8 http://ftp.debian.org/debian/ sid/main libdevmapper1.02.1 armhf 2:1.02.136-1 [160 kB]
Get:9 http://ftp.debian.org/debian/ sid/main dmsetup armhf 2:1.02.136-1 [107 kB]
Get:10 http://ftp.debian.org/debian/ sid/main keyutils armhf 1.5.9-9 [50.4 kB]
Get:11 http://ftp.debian.org/debian/ sid/main libnettle6 armhf 3.3-1 [210 kB]
Fetched 3521 kB in 4s (748 kB/s) 
W: Ignoring Provides line with DepCompareOp for package libapt-inst
W: Ignoring Provides line with DepCompareOp for package libapt-pkg
W: Ignoring Provides line with DepCompareOp for package libgpgme11-dev
W: Ignoring Provides line with DepCompareOp for package kodi-api-guilib
W: Ignoring Provides line with DepCompareOp for package kodi-api-pvr
W: Ignoring Provides line with DepCompareOp for package libparse-cpan-meta-perl
W: Ignoring Provides line with DepCompareOp for package libjpeg62
W: Ignoring Provides line with DepCompareOp for package lsb
W: Ignoring Provides line with DepCompareOp for package lsb-core
W: Ignoring Provides line with DepCompareOp for package php-psr-http-message-implementation
W: Ignoring Provides line with DepCompareOp for package php-psr-log-implementation
W: Ignoring Provides line with DepCompareOp for package php-seclib
W: Ignoring Provides line with DepCompareOp for package php-sabre-http
W: Ignoring Provides line with DepCompareOp for package php-math-biginteger
W: Ignoring Provides line with DepCompareOp for package pypy-cffi
W: Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-max
W: Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-min
W: Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-max
W: Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-min
W: Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-max
W: Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-min
W: Ignoring Provides line with DepCompareOp for package sagenb-export
W: Ignoring Provides line with DepCompareOp for package sagenb-export
Preconfiguring packages ...
(Reading database ... 17239 files and directories currently installed.)
Removing bbx15-ducati-firmware-installer ...
Removing curl ...
Removing mpd ...
[ ok ] Stopping mpd (via systemctl): mpd.service.
Removing libavformat55:armhf ...
Removing libcurl3:armhf ...
Removing upmpdcli ...
[ ok ] Stopping upmpdcli (via systemctl): upmpdcli.service.
Removing libupnpp0 ...
Removing libcurl3-gnutls:armhf ...
Removing wget ...
Removing librtmp0:armhf ...
Removing nfs-common ...
[ ok ] Stopping nfs-common (via systemctl): nfs-common.service.
Removing libnfsidmap2:armhf ...
Removing libldap-2.4-2:armhf ...
Removing libgnutls26:armhf ...
Removing libp11-kit0:armhf ...
(Reading database ... 16962 files and directories currently installed.)
Preparing to replace libtirpc1:armhf 0.2.2-5 (using .../libtirpc1_0.2.5-1_armhf.deb) ...
Unpacking replacement libtirpc1:armhf ...
Preparing to replace libc6:armhf 2.13-38+deb7u11 (using .../libc6_2.24-8_armhf.deb) ...
Checking for services that may need to be restarted...
Checking init scripts...
Unpacking replacement libc6:armhf ...
Setting up libc6:armhf (2.24-8) ...
Checking for services that may need to be restarted...
Checking init scripts...
root@botic2:~/Roon#
 
 root@botic2:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.2  0.6   4996  3508 ?        Ss   07:25   0:01 /lib/systemd/systemd
root         2  0.0  0.0      0     0 ?        S    07:25   0:00 [kthreadd]
root         3  0.1  0.0      0     0 ?        S    07:25   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/0:0]
root         5  0.0  0.0      0     0 ?        S<   07:25   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/u2:0]
root         7  0.1  0.0      0     0 ?        S    07:25   0:00 [rcu_preempt]
root         8  0.0  0.0      0     0 ?        S    07:25   0:00 [rcu_sched]
root         9  0.0  0.0      0     0 ?        S    07:25   0:00 [rcu_bh]
root        10  0.0  0.0      0     0 ?        S<   07:25   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    07:25   0:00 [kdevtmpfs]
root        12  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/0:1]
root        13  0.0  0.0      0     0 ?        S<   07:25   0:00 [netns]
root        14  0.0  0.0      0     0 ?        S    07:25   0:00 [oom_reaper]
root        15  0.0  0.0      0     0 ?        S<   07:25   0:00 [writeback]
root        16  0.0  0.0      0     0 ?        S    07:25   0:00 [kcompactd0]
root        17  0.0  0.0      0     0 ?        SN   07:25   0:00 [ksmd]
root        18  0.0  0.0      0     0 ?        S<   07:25   0:00 [crypto]
root        19  0.0  0.0      0     0 ?        S<   07:25   0:00 [kintegrityd]
root        20  0.0  0.0      0     0 ?        S<   07:25   0:00 [bioset]
root        21  0.0  0.0      0     0 ?        S<   07:25   0:00 [kblockd]
root        22  0.0  0.0      0     0 ?        S<   07:25   0:00 [devfreq_wq]
root        23  0.0  0.0      0     0 ?        S<   07:25   0:00 [watchdogd]
root        24  0.0  0.0      0     0 ?        S<   07:25   0:00 [rpciod]
root        25  0.0  0.0      0     0 ?        S<   07:25   0:00 [xprtiod]
root        26  0.0  0.0      0     0 ?        S    07:25   0:00 [kswapd0]
root        27  0.0  0.0      0     0 ?        S<   07:25   0:00 [nfsiod]
root        49  0.0  0.0      0     0 ?        S<   07:25   0:00 [kthrotld]
root        50  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/u2:1]
root        52  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/33-48060000]
root        53  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/0:2]
root        54  0.0  0.0      0     0 ?        S<   07:25   0:00 [bioset]
root        55  0.6  0.0      0     0 ?        S    07:25   0:00 [mmcqd/0]
root        56  0.0  0.0      0     0 ?        S<   07:25   0:00 [ipv6_addrconf]
root        65  0.0  0.0      0     0 ?        S<   07:25   0:00 [deferwq]
root        66  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/159-44e0b00]
root        67  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/189-tps6521]
root        68  0.0  0.0      0     0 ?        S<   07:25   0:00 [bioset]
root        69  0.1  0.0      0     0 ?        S    07:25   0:00 [mmcqd/1]
root        70  0.0  0.0      0     0 ?        S<   07:25   0:00 [bioset]
root        71  0.0  0.0      0     0 ?        S    07:25   0:00 [mmcqd/1boot0]
root        72  0.0  0.0      0     0 ?        S<   07:25   0:00 [bioset]
root        73  0.0  0.0      0     0 ?        S    07:25   0:00 [mmcqd/1boot1]
root        74  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/160-4819c00]
root       107  0.0  0.0      0     0 ?        S<   07:25   0:00 [kworker/0:1H]
root       116  0.0  0.0      0     0 ?        S    07:25   0:00 [jbd2/mmcblk0p2-]
root       117  0.0  0.0      0     0 ?        S<   07:25   0:00 [ext4-rsv-conver]
root       135  0.8  2.6  20956 13288 ?        Ss   07:25   0:00 /lib/systemd/systemd-journald
root       151  0.6  0.4   9648  2236 ?        Ss   07:25   0:00 /lib/systemd/systemd-udevd
root       168  0.1  0.0      0     0 ?        S    07:25   0:00 [kworker/0:3]
root       283  0.0  0.0      0     0 ?        S    07:25   0:00 [spi1]
root       287  0.0  0.0      0     0 ?        S    07:25   0:00 [spi2]
root       314  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/182-4803800]
root       315  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/181-4803800]
root       317  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/184-4803c00]
root       329  0.0  0.0      0     0 ?        S    07:25   0:00 [irq/183-4803c00]
root       422  0.0  0.0      0     0 ?        S    07:25   0:00 [53500000.aes-en]
root       627  0.0  0.2   3492  1368 ?        Ss   07:25   0:00 /sbin/rpcbind -w
root      1025  0.1  0.7   6088  3724 ?        Ss   07:25   0:00 /usr/sbin/sshd -D
root      1027  0.0  0.2   1388  1088 ?        Ss   07:25   0:00 /usr/sbin/acpid
root      1029  0.0  0.1   1420   944 ?        Ss   07:25   0:00 /bin/sh /opt/RoonBridge/start.sh
mpd       1030  0.1  0.2   3020  1400 ?        Ss   07:25   0:00 /usr/local/bin/ympd -u mpd
root      1032  0.0  0.3   2864  1816 ?        Ss   07:25   0:00 /lib/systemd/systemd-logind
root      1034  0.2  0.4  30692  2516 ?        Ssl  07:25   0:00 /usr/sbin/rsyslogd -n
103       1035  0.0  0.3   2800  1800 ?        Ss   07:25   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root      1038  0.0  0.0      0     0 ?        S    07:25   0:00 [kworker/u2:2]
root      1054 13.2  4.1  52108 21388 ?        Sl   07:25   0:05 RoonBridge --debug --gc=sgen --server RoonBridge.exe
root      1083  0.0  0.2   2084  1368 ?        Ss   07:25   0:00 /usr/sbin/cron
root      1177  0.0  0.0      0     0 ?        S    07:25   0:00 [file-storage]
root      1208 37.1  7.6  81488 39164 ?        Sl   07:25   0:13 RoonBridgeHelper --debug --gc=sgen --server RoonBridgeHelper.exe
root      1216  0.0  0.1   1712   764 ?        S    07:25   0:00 /opt/RoonBridge/Bridge/processreaper 1208
root      1221  0.0  0.2   2080  1296 tty1     Ss+  07:25   0:00 /sbin/agetty --noclear tty1 38400 linux
root      1222  0.0  0.2   1900  1208 ttyS0    Ss+  07:25   0:00 /sbin/agetty -s ttyS0 115200 38400 9600 vt102
root      1246 25.3  4.3  64224 22156 ?        Sl   07:25   0:05 RAATServer --debug --gc=sgen --server RAATServer.exe
root      1267  1.9  0.7   8728  3840 ?        Ss   07:25   0:00 sshd: root@pts/0    
root      1269  0.5  0.4   2832  2168 pts/0    Ss   07:25   0:00 -bash
root      1282  0.0  0.2   2692  1412 pts/0    R+   07:26   0:00 ps aux
root@botic2:~# 
 

今度は上手くRoon Bridgeが起動したようだ.それにしても Linux上のRoon環境は "RoonBridge.exe", "RAATServer.exe" など気持ち悪いったらありゃしない.何で最初からLinux環境に合わせて作ってくれないのかな.Windows .Net 環境をベースに開発しているのがちょっとね〜...


Roon全般がやたら重いのはどうやら"Mono" という .Net互換フレームワークの使用が原因かもしれない.イーサネットポートのアクセスランプの様子を見ていてもネットワーク通信の帯域は相当消費しているようなのでRAATプロトコル自体も重そうだ.Mac OS, Linux, Window 間の互換性の維持のためだけにコンピュータリソースを浪費するのも如何な物か...