May 09, 2024

Raspberry Pi 3B+をRoon Bridgeにする

今年に入って、いつ頃からか正確には分からないのだけど、piCorePlayerが不調になった。
Deezer音源のMQAを、Daphileから変換せずにDAC(SMSL M500)に送って鳴らすために使っていたんだけど、それが出来なくなった。そして、LMSをDaphileからMac miniに移行しても、動かないままだ。
原因ははっきりしない。
代替をどうするか、Volumio 3、Album Player for Linux(これって、Ras Pi用はpiCorePlayerベースなんだね)を試したが、結局うまくいかなかった。

そういうわけで、roon bridge、mpdとupmpdcliを、最新のpiCoreにインストールすることにした。
piCoreは、piCorePlayerのベースになっているOSだ。うちでは昔から汎用していて、今はサブシステムのRas Pi2、Roon Bridgeに使っている。

まず、piCoreをダウンロード。3B+を使うことにするので、下記から落とす。バージョンは14.1。
http://tinycorelinux.net/14.x/aarch64/
http://tinycorelinux.net/14.x/aarch64/releases/RPi/piCore64-14.1.0.zip

imgファイルをmicroSDに焼いて、cmdline.txt にhost=pC141b3pと追記、config.txtを編集しイヤホンジャックを止めて、i2sを一応生かして、ラズパイに刺して電源を入れる。
無事、起動した。
sshでログインし、filetool.sh -bでsshの鍵を保存する。
以下、パーティションを拡張。2Gも足しとけばよかろう。

tc@pC141b3p:~$ sudo fdisk -u /dev/mmcblk0

The number of cylinders for this disk is set to 121008.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p
Disk /dev/mmcblk0: 3781 MB, 3965190144 bytes, 7744512 sectors
121008 cylinders, 4 heads, 16 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device   	Boot StartCHS	EndCHS    	StartLBA 	EndLBA	Sectors  Size Id Type
/dev/mmcblk0p1	128,0,1 	1023,3,16     	8192 	139263 	131072 64.0M  c Win95 FAT32 (LBA)
/dev/mmcblk0p2	1023,3,16   1023,3,16   	139264 	172031  	32768 16.0M 83 Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Partition type
   p   primary partition (1-4)
   e   extended
p
Partition number (1-4): 2
First sector (16-7744511, default 16): 139264
Last sector or +size{,K,M,G,T} (139264-7744511, default 7744511): +2G

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
tc@pC141b3p:~$ sudo reboot

tc@pC141b3p:~$ Connection to 192.168.1.27 closed by remote host.
Connection to 192.168.1.27 closed.
ab@fedora-pb650g1:~$
ab@fedora-pb650g1:~$ ssh tc@192.168.1.27
tc@192.168.1.27's password:
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)       	www.tinycorelinux.net

tc@pC141b3p:~$ sudo resize2fs /dev/mmcblk0p2
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mmcblk0p2 is mounted on /mnt/mmcblk0p2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 524288 (4k) blocks long.

tc@pC141b3p:~$

以上で、パーティション拡張終了。

次にntpclient.tczをインストールしようとしたら、リポジトリに置いていない。
http://tinycorelinux.net/14.x/aarch64/tcz/
どういうことかと思ってdateコマンドを打ってみた。

tc@pC141b3p:~$ date
Mon May  6 12:56:11 UTC 2024

どうやらUTCで正確に動いているような。ntpは要らないのかな。

さて、Roon Bridge化する。
https://help.roonlabs.com/portal/en/kb/articles/linux-install

インストーラー使用を推奨ということなんだけどpiCore、Tiny Coreは特殊なのでマニュアルインストールを選択。
libasound2が必要ということだが、説明を読むと、alsaの1.0.27以上が必要と読み替えていいらしい。これはリポジトリにある。
ということでインストール。
関連するソフトも同時に大量にインストールされる。
スクリプトを動かすのにbashが要るので、これもインストールする。ついでになんとなくcurlも入れる。

tc@pC141bp:~$ tce-load -wi alsa.tcz alsa-utils.tcz alsa-plugins.tcz
tc@pC141bp:~$ tce-load -wi bash-dev.tcz bash.tcz curl.tcz

Roonのサイトには、下記3つのRoon Bridgeが用意されている。
Roon Bridge (x64)
Roon Bridge (armv7hf)
Roon Bridge (armv8)

Raspberry Pi 3b+にはarmv8用を使う。piCoreのホームディレクトリにダウンロードし、展開する。

tc@pC141b3p:~$ wget https://download.roonlabs.net/builds/RoonBridge_linuxarmv8.tar.bz2
Connecting to download.roonlabs.net (172.67.14.113:443)
saving to 'RoonBridge_linuxarmv8.tar.bz2'
RoonBridge_linuxarmv 100% |*******************************************************| 17.1M  0:00:00 ETA
'RoonBridge_linuxarmv8.tar.bz2' saved
tc@pC141b3p:~$ tar jxvf RoonBridge_linuxarmv8.tar.bz2
#---- snip

tc@pC141b3p:~$ ls
RoonBridge/                	RoonBridge_linuxarmv8.tar.bz2
tc@pC141b3p:~$ ls RoonBridge
Bridge/   RoonMono/ VERSION   check.sh  start.sh
tc@pC141b3p:~$

チェックスクリプトで使えるかどうか確認する。

tc@pC141b3p:~$ sudo RoonBridge/check.sh

Checking to see if RoonBridge can run on this machine
	Checking for Binary Compatibility                        	[   OK   ]
	Checking for ALSA Libraries                              	[   OK   ]
STATUS: SUCCESS

tc@pC141b3p:~$

使えそうだ。

tc@pC141b3p:~$ rm RoonBridge_linuxarmv8.tar.bz2
rm: remove 'RoonBridge_linuxarmv8.tar.bz2'? y
tc@pC141b3p:~$
tc@pC141b3p:~$ sudo vi /opt/bootlocal.sh

ダウンロードしたtar.bz2ファイルはここで削除する。
piCore起動時にRoonBridgeが起動するように、bootlocal.shを編集。下記、追記。

/home/tc/RoonBridge/start.sh start

tc@pC141b3p:~$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz Done.
tc@pC141b3p:~$

filetool.sh -bで、状況を保存。
RoonBridgeが50MBぐらいあるので、数10秒かかる。しかし、他の置き場がないかといっても難しい。というのは、Roonのアップデートがかかる筈なので、filetool.sh -bで保存できない場所に置いたら後で困るから。
結局、ホームディレクトリがいいだろうということになる。

tc@pC141b3p:~$ sudo reboot
tc@pC141b3p:~$ Connection to 192.168.1.27 closed by remote host.
Connection to 192.168.1.27 closed.
ab@fedora-pb650g1:~$
ab@fedora-pb650g1:~$ ssh tc@192.168.1.27
tc@192.168.1.27's password:
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)       	www.tinycorelinux.net

tc@pC141b3p:~$
tc@pC141b3p:~$ pstree
init-+-bootlocal.sh---start.sh---mono-sgen-+-2*[mono-sgen]
 	|                                 	`-processreaper
 	|-sh
 	|-sshd---sshd---sshd---sh---pstree
 	|-udevd---2*[udevd]
 	`-udhcpc
tc@pC141b3p:~$

pstreeで、mono-sgenと表示されるのがRoonだ。ちゃんと起動している。

しかし、音が出ない。

tc@pC141b3p:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: AUDIO [SMSL USB AUDIO], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
tc@pC141b3p:~$

DACは認識しているようだ。

なにがいけないのだろう。alsa-plugins-dev.tcz、alsa-utils-locale.tczもインストールしてみたが、音は出ない。USBケーブルを変えてみたりしたが、関係ない。
サブシステムのRas pi2からは、Roonで音が出ている。3b+との違いは、i2sかUSBか、ということだ。
でも、そんなところが関係するかね、、、

DACを替えてみる。M500からADI-2 DACに。
音、出るじゃん。
M500も、apu2からのUSB出力を受けたら音が出るのだ。なぜか、Ras Pi3b+からだと音が出ない。

pegasusはどうだろう。

tc@pC141b3p:~$ aplay -l
aplay: device_list:277: no soundcards found...
tc@pC141b3p:~$

USB端子を挿しても、認識していない。
スイッチをオン・オフしてみる、、、認識した。音も出る。

tc@pC141b3p:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Audio [USB HiRes Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
tc@pC141b3p:~$

DACの名前が出ていない。まあ、中華DACだもんね。
M500もスイッチをオン・オフしてみる。
piCoreが落ちた。
再起動だ。
音が出た。USBってのはいろいろと微妙だね。

しかし、取り敢えずこれで、3b+をRoon Bridgeにすることに成功した。MQAサンプラーCDからリッピングしたMQAを再生できる。
RoonはDeezerには対応していないので、次は、これにmpdを組み込んで、UPnPレンダラーにする。そうすればLMSサーバーからDeezerのMQAを送信できる。
それが、いつ頃になるかは、分からないが。

あれ、もしかしたらvolumioもスイッチのオン・オフで使えたのかもしれない。まあ、いいや、piCore運用の方向でいこう。

Edit this entry...

wikieditish message: Ready to edit this entry.
















A quick preview will be rendered here when you click "Preview" button.